1 |
itchy docs : (C) 2005 Dave Griffiths : dave at pawfal dot org : www.pawfal.org |
2 |
|
3 |
Contents |
4 |
|
5 |
1.0 Introduction |
6 |
2.0 Voice overview: |
7 |
3.0 OSC interface: |
8 |
4.0 Global instrument parameters |
9 |
5.0 Voice Instrument parameters |
10 |
|
11 |
-------------------------------------------------------------------------------------- |
12 |
|
13 |
1.0 Introduction |
14 |
|
15 |
Itchy is a tiny synth with a big attitude! It's multitimbral and |
16 |
polyphonic, I use it for live performances. It should be pretty stable. |
17 |
|
18 |
-------------------------------------------------------------------------------------- |
19 |
|
20 |
2.0 Voice overview |
21 |
|
22 |
sub |
23 |
A two oscillator subtractive voice with a moog style filter and distortion. |
24 |
|
25 |
add |
26 |
A very simple 8 harmonic additive sine synth (works in the drawbar organ kinda |
27 |
way) not very good at present. |
28 |
|
29 |
dirt |
30 |
A two oscillator synth with distortion and bit crushing effects for lush lofi |
31 |
sounds. |
32 |
|
33 |
fm |
34 |
A frequency modulation (ok, really phase modulation) voice with a few tricks, |
35 |
such as feedback modulation, distortion and hard clipping. |
36 |
|
37 |
drum |
38 |
A cheap nasty drumsynth with some inexplicably noisy effects - still under |
39 |
development. |
40 |
|
41 |
-------------------------------------------------------------------------------------- |
42 |
|
43 |
3.0 OSC interface |
44 |
|
45 |
/addinstrument is [ID voicetype] |
46 |
Make a new instrument, assigned to the supplied ID, of the type specified. |
47 |
types can be of the following: "add", "sub", "dirt", "fm", "drum" |
48 |
|
49 |
/modify isf [ID token value token value ...] |
50 |
Modify an existing instrument, for example: "/modify 1 "sustain" 2.0 "release" 1.0" see |
51 |
below for a list of all voice parameters (there are quite a lot)... |
52 |
|
53 |
/reset i [ID] |
54 |
Reset the instrument to "factory settings" |
55 |
|
56 |
/play iiiffffi [timeseconds timefrac ID frequency slidefreq volume pan message] |
57 |
Plays a note at the given time (in ntp format), on the given instrument with |
58 |
the given parameters. if the time is set to 0,0 it will ignore the time and |
59 |
play the note asap. The message parameter is interpreted as a char and if set |
60 |
to a "O" will cause an accent note to be triggered. this will be replaced by |
61 |
something more sane soon :) The slidefrequency gives a frequency to start |
62 |
sliding to (speed is defined by instrument modify commands for voices that |
63 |
support it). |
64 |
|
65 |
/setclock |
66 |
Resets the internal clock using gettimeofday() - this needs to be called once |
67 |
at startup. |
68 |
|
69 |
/globalvolume f volume |
70 |
The global volume of the whole synth |
71 |
|
72 |
-------------------------------------------------------------------------------------- |
73 |
|
74 |
4.0 Common instrument parameters |
75 |
|
76 |
These parameters can be sent to all instruments via the modify message, |
77 |
regardless of instrument type. |
78 |
|
79 |
map : Sets the ID that this instrument uses for play messages. |
80 |
poly : The polyphony of this instrument - max is 10 voices |
81 |
mainvolume : The volume of this instrument |
82 |
pan : The pan setting for this instrument |
83 |
|
84 |
Common FX: |
85 |
|
86 |
crushfreq : bitcrush frequency |
87 |
crushbits : bitcrush bits |
88 |
distort : distortion setting |
89 |
delayfb : delay feedback |
90 |
delay : delay time |
91 |
|
92 |
-------------------------------------------------------------------------------------- |
93 |
|
94 |
5.0 Voice Instrument parameters |
95 |
|
96 |
The table below describes the modify tokens that can be sent to each instrument. |
97 |
The range hints are suggestions only, the step really just denotes the |
98 |
difference between integer switches and float controls. |
99 |
|
100 |
The type strings take integers to denote the types of different things |
101 |
|
102 |
oscillator types |
103 |
|
104 |
0 : sine |
105 |
1 : square |
106 |
2 : saw |
107 |
3 : revsaw |
108 |
4 : triangle |
109 |
5 : pulse1 |
110 |
6 : pulse2 |
111 |
7 : noise |
112 |
8 : pinknoise |
113 |
|
114 |
filter type |
115 |
|
116 |
0 : mooglowpass |
117 |
1 : moogbandpass |
118 |
2 : mooghighpass |
119 |
3 : formant (sub only) |
120 |
|
121 |
--- add ---------------- |
122 |
|
123 |
harm0 |
124 |
harm1 |
125 |
harm2 |
126 |
harm3 |
127 |
harm4 |
128 |
harm5 |
129 |
harm6 |
130 |
harm7 |
131 |
attack |
132 |
decay |
133 |
sustain |
134 |
release |
135 |
volume |
136 |
|
137 |
--- dirt -------------- |
138 |
|
139 |
typea |
140 |
freqa |
141 |
slidea |
142 |
typeb |
143 |
freqb |
144 |
slideb |
145 |
attack |
146 |
decay |
147 |
sustain |
148 |
release |
149 |
volume |
150 |
crushfreq |
151 |
crushbits |
152 |
distort |
153 |
|
154 |
--- sub --------------- |
155 |
|
156 |
typea |
157 |
freqa |
158 |
slidea |
159 |
typeb |
160 |
freqb |
161 |
slideb |
162 |
attacka |
163 |
decaya |
164 |
sustaina |
165 |
releasea |
166 |
volumea |
167 |
attackb |
168 |
decayb |
169 |
sustainb |
170 |
releaseb |
171 |
volumeb |
172 |
attackf |
173 |
decayf |
174 |
sustainf |
175 |
releasef |
176 |
volumef |
177 |
ftype |
178 |
cutoff |
179 |
resonance |
180 |
ring |
181 |
|
182 |
--- fm ------------------ |
183 |
|
184 |
type |
185 |
freq |
186 |
slide |
187 |
modtype |
188 |
modfreq |
189 |
modslide |
190 |
fbattack |
191 |
fbdecay |
192 |
fbsustain |
193 |
fbrelease |
194 |
fbvolume |
195 |
modattack |
196 |
moddecay |
197 |
modsustain |
198 |
modrelease |
199 |
modvolume |
200 |
attack |
201 |
decay |
202 |
sustain |
203 |
release |
204 |
volume |
205 |
|
206 |
--- drum ------------------------ |
207 |
|
208 |
kickdecay |
209 |
kickvolume |
210 |
kickfreqdecay |
211 |
kickfreqvolume |
212 |
kickfreq |
213 |
hat1decay |
214 |
hat1volume |
215 |
hat1cutoff |
216 |
hat1resonance |
217 |
hat2decay |
218 |
hat2volume |
219 |
hat2cutoff |
220 |
hat2resonance |
221 |
snaredecay |
222 |
snarevolume |
223 |
snarefilterattack |
224 |
snarefilterdecay |
225 |
snarefiltersustain |
226 |
snarefilterrelease |
227 |
snarefiltervolume |
228 |
snareftype |
229 |
snarecutoff |
230 |
snareresonance |
231 |
|
232 |
-------------------------------------------------------------------------------------- |
233 |
|
234 |
6.0 Todo |
235 |
|
236 |
remove volumea/b -> bias |
237 |
more filters |
238 |
sort out the drumsynth, too slow, bit boring |
239 |
hardclip, distortion, delay, crush on all voices (in Voice.cpp) |
240 |
|
241 |
turn off filters if cutoff > 1 |
242 |
turn off oscs if volume 0 |
243 |
(do we want constant processing time for stability????) |
244 |
|
245 |
|
246 |
|