aboutsummaryrefslogtreecommitdiffstats
path: root/README.rst
blob: ba1cff0be77a820182c225c9ad1473cda72fbda7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
ZZZ
###

| |SuperCollider| classes to interface with |expert_sleepers| devices.

Supported devices
-----------------

* |es-3|

Features
--------

* convenience methods to convert between midi, frequency, amplitude and
  corresponding output voltage
* **ZZZConstant**: a *SynthDef* for constant pitch (use helper functions to
  convert your input to amplitude - the *\mul* parameter)
* **ZZZClock**: a *SynthDef* for clock signals. Responds to Frequencies

Installation
------------

The classes are an extension of the |supercollider| language, therefore their
installation corresponds to |quark_installation|.

Usage
-----

ES-3
____

To create a new object interfacing your |es-3|, instantiate the *ZZZES3* class
with an Array holding your eight ADAT output channels:

  .. code:: supercollider

    // RME Babyface example
    ~es3 = ZZZES3(Array.series(8, 4, 1));

  .. note::

    | The instantiation of *ZZZES3* conveniently makes the outputs of the
      |es-3| available in a numbering range from 1-8 (as displayed on the
      hardware).
    | Generally, in |supercollider| channel numbering starts with 0, though!

To interface with your module on one of the eight |es-3| outputs, you can use
one of the *SynthDefs* added by the *ZZZ* class, such as *\ZZZConstant* (for
constant pitch) or *\ZZZClock* (for clock):

  .. code:: supercollider

    // start Synth \ZZZClock at ES-3 output 8 with a speed of 240bpm (defaults
    // to 120bpm)
    ~es3.addClock(8, (240/60));

  .. code:: supercollider

    // start Synth '\ZZZConstant' at ES-3 output 7 with a multiplication factor
    // corresponding to the note C5
    ~es3.addVCO(7, ZZZ.cpsamp(523.251));


Just like with any other *Synth* instance, you can now change their settings:

  .. code:: supercollider

    // change clock speed at output 8 to 300bpm
    ~es3.setClock(8, (300/60));

  .. code:: supercollider

    // change constant pitch on output 7 to A4
    ~es3.setVCO(7, ZZZ.midiamp(69));


Background
----------
| Modular synthesizers are controllable through several ranges of voltage.
| However, |cv_gate| as defined by |doepfer| in the |a100_manual| might not be coherently
  used throughout all Eurorack modules.
|
| The *ZZZ* classes nonetheless try to adhere to the standard, while at the
  same time providing convenience functions to low-level conversion.
| By default the helper functions are able to convert frequencies in the
  |c_musical_note| (between *C-2* and *C10*) to an output between -5V and 7V
  (adhering to the 1V/octave scheme) - the MIDI note range being a subset of it.
| As the range is not fixed, but can be moved up and down (e.g. when using
  filters or oscillators), you might have to make some adjustments to your
  module, to get "in tune".

.. |supercollider| raw:: html

  <a href="https://supercollider.github.io/" target="_blank">SuperCollider</a>

.. |expert_sleepers| raw:: html

  <a href="http://www.expert-sleepers.co.uk/" target="_blank">Expert Sleepers</a>

.. |es-3| raw:: html

  <a href="http://www.expert-sleepers.co.uk/es3.html" target="_blank">ES-3</a>

.. |quark_installation| raw:: html

  <a href="https://github.com/supercollider-quarks/quarks#installing-a-quark" target="_blank">the way quarks are installed</a>

.. |cv_gate| raw:: html

  <a href="https://en.wikipedia.org/wiki/CV/gate" target="_blank">CV/Gate</a>

.. |doepfer| raw:: html

  <a href="http://www.doepfer.de" target="_blank">Doepfer</a>

.. |a100_manual| raw:: html

  <a href="http://www.doepfer.de/a100_man/a100t_e.htm" target="_blank">A100 manual</a>

.. |c_musical_note| raw:: html

  <a href="https://en.wikipedia.org/wiki/C_(musical_note)" target="_blank">range of 12 octaves</a>