Browse Source

fixed comments bugs, tidied examples, added AUTHORS

master
nebogeo 23 years ago
parent
commit
c716346ea9
22 changed files with 1220 additions and 2775 deletions
  1. +39
    -0
      AUTHORS
  2. +32
    -0
      CHANGES
  3. +46
    -46
      Examples/BandpassShaper.ssm
  4. +27
    -27
      Examples/Feedback.ssm
  5. +49
    -64
      Examples/FourOsc.ssm
  6. +39
    -39
      Examples/Polyphonic.ssm
  7. +32
    -32
      Examples/Random.ssm
  8. +25
    -29
      Examples/Sequence.ssm
  9. +47
    -47
      Examples/SpiralSynth.ssm
  10. +79
    -138
      Examples/Tutorial1-FirstThing.ssm
  11. +42
    -71
      Examples/Tutorial2-Audio&CVs.ssm
  12. +46
    -91
      Examples/Tutorial3-SubtractiveSynth.ssm
  13. +27
    -52
      Examples/Tutorial4-AdditiveSynth.ssm
  14. +25
    -24
      Examples/Tutorial5-MatrixSampler.ssm
  15. +21
    -21
      Examples/Tutorial7-LADSPA.ssm
  16. +152
    -156
      Examples/soil_and_the_crop.ssm
  17. BIN
      GUI/SSM.xcf
  18. +458
    -1918
      GUI/SSM.xpm
  19. +10
    -0
      GUI/Widgets/Fl_CommentGUI.C
  20. +13
    -5
      GUI/Widgets/Fl_DeviceGUI.C
  21. +1
    -14
      README
  22. +10
    -1
      SpiralSynthModular.C

+ 39
- 0
AUTHORS View File

@@ -0,0 +1,39 @@
In no particular order:

Yves Usson did lots of early work on the GUI, and provided the excellent
Fl_Knob widget. Also authored plugins such as the WaveShaper.

Erik de Castro Lopo helped with the configure scripts.

Takashi Iwai fixed many compiler issues and other fixes.

Nicolas Noble first wrote the LADSPA plugin.

Dr Bill Bland provided patches for the apply button in the options.

Dan "Pawfal" Bethell tested, helped with GUI and fixes, and has been known
to provide beer.

Fade of pawfal fame wrote the DistributorPlugin and does much testing.

Andy Preston fixes stuff all over the place that I'm too lazy to, also wrote
many plugins and adds handy features.

Mike Rawes maintains the LADSPA plugin, and wrote the auto generating GUI for
it. Also lots of other fixes.

Michel Pollet porting to OSX.

Stefan Schwandter did sime install script fixes.

Joe Jones did lots of fixes and is currently working on subpatch implementation.

Patrick Shirkey helped with all the helptext and provides much testing and feedback.

Paul Davis helped with nasty threading issues and unwittingly provided code
from his ardour project.

Dave Griffiths started the thing going.

Let me know (dave) if any of this is wrong, or you have been missed off - it was
quite difficult to gather all the information :)

+ 32
- 0
CHANGES View File

@@ -1,3 +1,35 @@
Release 0.2.1

New GUI - one window with minisable/maximisable modules, no more losing track of which module window is which.
NotesnapPlugin can now filter midi notes.
Preliminary OSX support
Plugin Groups (new Maths/Logic group)
Plugins are now loaded straight from the directory, no need to explicitly list them anymore.
Renaming of modules
More theming (and new default theme)
Help window fixes
Matrix pattern sequencer
Misc fixes

New Plugins:

FormantFilterPlugin
AnotherFilterPlugin
NoisePlugin
OperatorPlugin
CounterPlugin
FlipflopPlugin
SwitchPlugin
BeatMatchPlugin
LogicPlugin
MixSwitchPlugin
SplitSwitchPlugin
MeterPlugin (ported)
WaveShaperPlugin (ported)
TrigPlugin
SpiralLoopPlugin (new code)
MasherPlugin

Release 0.2.0

App now multithreaded, and plugins use a new api to support this


+ 46
- 46
Examples/BandpassShaper.ssm View File

@@ -1,126 +1,126 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
298 115 700 600 0 0 0 0
SectionList
23

Device 0 Plugin 0
873 455 0 76 47
757 144 3 OSS 0 767 144


Device 1 Plugin 13
523 380 0 76 47
407 69 11 Moog Filter 0 417 69
1 1 0.36389

Device 2 Plugin 13
522 452 0 76 47
406 141 11 Moog Filter 0 416 141
1 1 0.38383

Device 3 Plugin 13
525 525 0 76 47
409 214 11 Moog Filter 0 419 214
1 1 0.36274

Device 7 Plugin 6
420 404 0 0 0
304 93 8 Splitter 0 0 0


Device 8 Plugin 6
455 491 0 0 0
339 180 8 Splitter 0 0 0


Device 12 Plugin 7
611 458 0 76 47
1 1 1 1 1
495 147 5 Mixer 0 505 147
2 4 1 1 1 1

Device 13 Plugin 8
783 455 0 76 47
667 144 12 Stereo Mixer 0 677 144
1 1 0.5 1 0.5 1 0.5 1 0.5

Device 16 Plugin 1
697 455 1 445 67
508 248 5 Scope 1 518 248


Device 17 Plugin 23
276 500 1 186 73
160 189 9 WaveTable 1 170 189
1 0 -3 0.0258332 1

Device 18 Plugin 23
340 564 1 180 205
224 342 9 WaveTable 1 234 342
1 0 -3 0.00586802 1

Device 19 Plugin 23
410 633 1 432 205
328 467 9 WaveTable 1 338 467
1 0 -3 0.0843751 1

Device 20 Plugin 3
184 402 1 103 83
3 1 0.71 1
1 4 Name -1 1 0.71
68 91 10 CV Control 1 78 91
4 1
Name -1 1 0.71


Device 21 Plugin 23
267 400 0 76 47
151 89 9 WaveTable 0 161 89
1 0 -2 0.187005 1

Device 22 Plugin 23
337 402 0 76 47
221 91 9 WaveTable 0 231 91
1 2 -3 0.325557 1

Device 23 Plugin -1
272 318 0 0 0
156 7 0 0 0 0
1 53 This layout generates a signal with lots of harmonics


Device 24 Plugin -1
278 332 0 0 0
162 21 0 0 0 0
1 55 and filters the signal with three bandpass moog filters


Device 25 Plugin -1
196 380 0 0 0
80 69 0 0 0 0
1 26 Change this to alter pitch


Device 26 Plugin -1
665 400 0 0 0
549 89 0 0 0 0
1 43 Have a look at the waveform generated in an


Device 27 Plugin -1
667 413 0 0 0
551 102 0 0 0 0
1 47 audio editor such as audacity, that can display


Device 28 Plugin -1
625 427 0 0 0
586 116 0 0 0 0
1 27 the frequencies as colours.


Device 29 Plugin -1
248 632 0 0 0
160 306 0 0 0 0
1 39 These oscillators change the modulation


Device 30 Plugin -1
202 647 0 0 0
213 319 0 0 0 0
1 21 of the three filters.


17
7 4 1 8 5 0
8 5 0 2 2 0
8 5 1 3 3 0
7 4 0 1 1 0
1 1 1 12 6 0
2 2 1 12 6 1
3 3 1 12 6 2
13 7 0 0 0 0
13 7 1 0 0 1
12 6 0 16 8 0
16 8 0 13 7 0
17 9 0 1 1 1
18 10 0 2 2 1
19 11 0 3 3 1
22 14 0 7 4 0
21 13 0 22 14 0
20 12 0 21 13 0
-1 0 17
7 0 1 0 8 0 0 0
8 0 0 0 2 0 0 0
8 0 1 0 3 0 0 0
7 0 0 0 1 0 0 0
1 0 1 0 12 0 0 0
2 0 1 0 12 0 1 0
3 0 1 0 12 0 2 0
13 0 0 0 0 0 0 0
13 0 1 0 0 0 1 0
12 0 0 0 16 0 0 0
16 0 0 0 13 0 0 0
17 0 0 0 1 0 1 0
18 0 0 0 2 0 1 0
19 0 0 0 3 0 1 0
22 0 0 0 7 0 0 0
21 0 0 0 22 0 0 0
20 0 0 0 21 0 0 0


+ 27
- 27
Examples/Feedback.ssm View File

@@ -1,78 +1,78 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
298 115 700 600 0 0 0 0
SectionList
14

Device 0 Plugin 0
612 513 0 100 100
465 211 3 OSS 0 475 211


Device 2 Plugin 4
348 381 1 95 160
318 104 10 Oscillator 0 328 104
1 2 2 0.0149791 0.53 0 0.019 0.299

Device 4 Plugin 6
240 526 0 0 0
110 224 8 Splitter 0 0 0


Device 5 Plugin 1
419 518 1 349 157
121 301 5 Scope 1 131 301


Device 7 Plugin 9
276 381 1 447 33
250 104 3 Amp 0 260 104
1 0.1132 0.0377

Device 8 Plugin 9
420 381 1 448 291
390 102 3 Amp 0 400 102
1 1.1698 0.566

Device 12 Plugin 8
520 511 0 100 100
398 211 12 Stereo Mixer 0 408 211
1 0.27 0.5 0.8 0.5 1 0.5 1 0.5

Device 13 Plugin -1
226 308 0 0 0
70 6 0 0 0 0
1 40 This uses SSM's ability to feedback data


Device 14 Plugin -1
198 321 0 0 0
71 19 0 0 0 0
1 27 from one plugin to another.


Device 15 Plugin -1
208 472 0 0 0
66 178 0 0 0 0
1 37 This is where the signal is fed back.


Device 16 Plugin -1
232 335 0 0 0
70 33 0 0 0 0
1 41 Feedback generates quite a chaotic sound,


Device 17 Plugin -1
221 348 0 0 0
71 45 0 0 0 0
1 36 try changing some of the parameters.


Device 18 Plugin 23
200 381 1 95 47
178 104 9 WaveTable 0 188 104
1 0 -3 0.158165 1

Device 19 Plugin 23
491 380 1 92 274
461 103 9 WaveTable 0 471 103
1 0 -1 0.202252 1

10
7 4 0 2 1 0
2 1 0 8 5 0
4 2 0 5 3 0
12 6 0 0 0 0
12 6 1 0 0 1
5 3 0 12 6 0
18 12 0 7 4 0
8 5 0 19 13 0
19 13 0 4 2 0
4 2 1 18 12 0
-1 0 10
7 0 0 0 2 0 0 0
2 0 0 0 8 0 0 0
4 0 0 0 5 0 0 0
12 0 0 0 0 0 0 0
12 0 1 0 0 0 1 0
5 0 0 0 12 0 0 0
18 0 0 0 7 0 0 0
8 0 0 0 19 0 0 0
19 0 0 0 4 0 0 0
4 0 1 0 18 0 0 0


+ 49
- 64
Examples/FourOsc.ssm View File

@@ -1,126 +1,111 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
298 115 700 600 0 0 0 0
SectionList
22
19

Device 0 Plugin 4
443 365 1 84 7
211 119 10 Oscillator 0 221 119
1 2 0 1.47687 0 0 0 1

Device 1 Plugin 4
445 299 1 84 119
209 55 10 Oscillator 0 219 55
1 2 -1 0.960617 0 0 1.17928e-38 1

Device 2 Plugin 4
442 432 1 84 232
213 186 10 Oscillator 0 223 186
1 2 0 0.733381 0.23 0 2.2772e-38 1

Device 3 Plugin 4
442 500 1 84 345
212 251 10 Oscillator 0 222 251
1 2 0 0.983196 0.87 0 0 1

Device 4 Plugin 8
729 395 0 100 100
501 119 12 Stereo Mixer 0 511 119
1 1 0.5 1 0.5 1 0.5 1 0.5

Device 5 Plugin 7
593 394 0 100 100
1 1 1 1 1
362 118 5 Mixer 0 372 118
2 4 1 1 1 1

Device 6 Plugin 13
662 395 1 539 157
432 120 11 Moog Filter 0 442 120
1 0.0943 0.07142

Device 8 Plugin 0
799 393 0 100 100


Device 10 Plugin 6
282 406 0 0 0


Device 13 Plugin 6
202 529 0 0 0
569 118 3 OSS 0 579 118


Device 14 Plugin 5
442 569 1 529 22
207 316 8 Envelope 0 217 316
1 0.3844 0.1156 0.91 2.1609 0.5 0.01

Device 15 Plugin 6
282 474 0 0 0


Device 18 Plugin 5
513 502 1 331 345
286 246 8 Envelope 0 296 246
1 0.8281 3.2761 0 0 0.5 0.01

Device 19 Plugin 5
513 433 1 331 234
289 183 8 Envelope 0 299 183
1 0.6241 0.3249 0 0 0.5 0.01

Device 20 Plugin 5
512 367 1 330 122
288 116 8 Envelope 0 298 116
1 0.7225 1.8496 0 1 0.5 0.01

Device 21 Plugin 5
514 299 1 332 9
290 49 8 Envelope 0 300 49
1 0.0529 2.6896 0 0 0.5 0.01

Device 22 Plugin 7
512 572 1 417 208
1 1.47 0.07 1 1
354 312 5 Mixer 0 364 312
2 4 1.47 0.07 1 1

Device 24 Plugin -1
216 324 0 0 0
74 8 0 0 0 0
1 42 A fairly complicated synth, 4 oscillators,


Device 25 Plugin -1
248 336 0 0 0
72 26 0 0 0 0
1 53 with an extra envelope and LFO modulating the filter.


Device 26 Plugin 23
446 635 1 486 344
280 342 9 WaveTable 0 290 342
1 0 0 0.457092 1

Device 27 Plugin 40
197 430 0 200 50
78 168 8 Keyboard 0 88 168
0


Device 28 Plugin -1
224 361 0 0 0
81 84 0 0 0 0
1 9 Hit keys!


27
5 5 0 6 6 0
4 4 0 8 7 0
4 4 1 8 7 1
6 6 0 4 4 0
1 1 0 21 15 1
0 0 0 20 14 1
2 2 0 19 13 1
3 3 0 18 12 1
13 9 0 15 11 0
21 15 1 5 5 0
20 14 1 5 5 1
19 13 1 5 5 2
18 12 1 5 5 3
14 10 0 22 16 0
13 9 1 14 10 0
22 16 0 6 6 1
15 11 0 21 15 0
15 11 1 20 14 0
15 11 2 19 13 0
15 11 3 18 12 0
10 8 0 1 1 0
10 8 1 0 0 0
10 8 2 2 2 0
10 8 3 3 3 0
26 19 0 22 16 1
27 20 0 10 8 0
27 20 1 13 9 0
-1 0 24
5 0 0 0 6 0 0 0
4 0 0 0 8 0 0 0
4 0 1 0 8 0 1 0
6 0 0 0 4 0 0 0
1 0 0 0 21 0 1 0
0 0 0 0 20 0 1 0
2 0 0 0 19 0 1 0
3 0 0 0 18 0 1 0
21 0 1 0 5 0 0 0
20 0 1 0 5 0 1 0
19 0 1 0 5 0 2 0
18 0 1 0 5 0 3 0
14 0 0 0 22 0 0 0
22 0 0 0 6 0 1 0
26 0 0 0 22 0 1 0
27 0 0 0 3 0 0 0
27 0 0 0 2 0 0 0
27 0 0 0 0 0 0 0
27 0 0 0 1 0 0 0
27 0 1 0 21 0 0 0
27 0 1 0 20 0 0 0
27 0 1 0 19 0 0 0
27 0 1 0 18 0 0 0
27 0 1 0 14 0 0 0


+ 39
- 39
Examples/Polyphonic.ssm View File

@@ -1,96 +1,96 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
298 115 700 600 0 0 0 0
SectionList
16

Device 0 Plugin 86
279 393 0 0 0
156 123 11 Distributor 0 0 0


Device 2 Plugin 23
372 514 1 97 350
289 282 9 WaveTable 0 299 282
1 0 0 1 1

Device 3 Plugin 23
373 323 1 98 15
285 84 9 WaveTable 0 295 84
1 0 0 1 1

Device 4 Plugin 23
372 386 1 97 127
287 148 9 WaveTable 0 297 148
1 0 0 1 1

Device 5 Plugin 23
373 451 1 97 238
289 215 9 WaveTable 0 299 215
1 0 0 1 1

Device 6 Plugin 5
439 517 1 344 349
364 272 8 Envelope 0 374 272
1 0 0.5 1 1 0.5 0.01

Device 7 Plugin 5
439 453 1 344 237
364 208 8 Envelope 0 374 208
1 0 0.5 1 1 0.5 0.01

Device 8 Plugin 5
439 387 1 344 126
364 142 8 Envelope 0 374 142
1 0 0.5 1 1 0.5 0.01

Device 9 Plugin 5
441 324 1 344 15
365 79 8 Envelope 0 375 79
1 0 0.5 1 1 0.5 0.01

Device 10 Plugin 8
515 397 1 491 147
460 161 12 Stereo Mixer 0 470 161
1 1 0.5 1 0.5 1 0.5 1 0.5

Device 11 Plugin 0
580 411 0 36 100
529 162 3 OSS 0 539 162


Device 12 Plugin -1
227 301 0 0 0
78 14 0 0 0 0
1 48 This patch uses the distributor plugin to create


Device 13 Plugin -1
215 316 0 0 0
77 30 0 0 0 0
1 24 a polyphonic synthesizer


Device 15 Plugin -1
225 573 0 0 0
91 348 0 0 0 0
1 46 The distributor sends each note recieved to a


Device 18 Plugin -1
237 589 0 0 0
81 361 0 0 0 0
1 51 different identical wavetable/envelope synth voice.


Device 20 Plugin 40
198 393 0 200 50
75 123 8 Keyboard 0 85 123
0


20
10 9 0 11 10 0
10 9 1 11 10 1
0 0 0 3 2 0
0 0 2 4 3 0
0 0 4 5 4 0
0 0 6 2 1 0
3 2 0 9 8 1
4 3 0 8 7 1
5 4 0 7 6 1
2 1 0 6 5 1
0 0 1 9 8 0
0 0 3 8 7 0
0 0 5 7 6 0
0 0 7 6 5 0
6 5 1 10 9 3
9 8 1 10 9 0
8 7 1 10 9 1
7 6 1 10 9 2
20 15 0 0 0 0
20 15 1 0 0 1
-1 0 20
10 0 0 0 11 0 0 0
10 0 1 0 11 0 1 0
0 0 0 0 3 0 0 0
0 0 2 0 4 0 0 0
0 0 4 0 5 0 0 0
0 0 6 0 2 0 0 0
3 0 0 0 9 0 1 0
4 0 0 0 8 0 1 0
5 0 0 0 7 0 1 0
2 0 0 0 6 0 1 0
0 0 1 0 9 0 0 0
0 0 3 0 8 0 0 0
0 0 5 0 7 0 0 0
0 0 7 0 6 0 0 0
6 0 1 0 10 0 3 0
9 0 1 0 10 0 0 0
8 0 1 0 10 0 1 0
7 0 1 0 10 0 2 0
20 0 0 0 0 0 0 0
20 0 1 0 0 0 1 0


+ 32
- 32
Examples/Random.ssm View File

@@ -1,74 +1,74 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
298 115 700 600 0 0 0 0
SectionList
13

Device 3 Plugin 0
772 402 0 100 116
691 120 3 OSS 0 701 120


Device 5 Plugin 5
560 401 1 530 103
478 116 8 Envelope 0 488 116
1 0.0289 0.3249 0 0 0.51 0

Device 7 Plugin 8
702 402 0 100 116
621 120 12 Stereo Mixer 0 631 120
1 1 0.5 1 0.5 1 0.5 1 0.5

Device 9 Plugin 14
631 402 1 376 37
551 118 4 Echo 0 561 118
1 0.396 0.62

Device 12 Plugin 13
491 402 1 380 157
411 117 11 Moog Filter 0 421 117
1 1 0.43934

Device 20 Plugin 4
217 308 1 109 351
158 52 10 Oscillator 0 168 52
1 3 -3 0.119661 0.5 0 2.98023e-09 1

Device 25 Plugin -1
485 342 0 0 0
111 20 0 0 0 0
1 36 A patch that generates random events


Device 26 Plugin 51
327 344 0 0 0
247 86 10 SampleHold 0 0 0


Device 27 Plugin 23
152 400 1 108 17
83 121 9 WaveTable 0 93 121
1 0 1 0.0326008 1

Device 28 Plugin 6
231 400 0 0 0
158 119 8 Splitter 0 0 0


Device 29 Plugin 23
419 401 1 108 128
338 116 9 WaveTable 0 348 116
1 1 -3 0.933262 1

Device 30 Plugin 4
217 491 1 108 239
156 189 10 Oscillator 0 166 189
1 3 0 1 0.5 0 1.70555e-38 1

Device 31 Plugin 51
328 458 0 0 0
14
7 2 0 3 0 0
7 2 1 3 0 1
9 3 0 7 2 0
12 4 0 5 1 1
5 1 1 9 3 0
27 8 0 28 9 0
20 5 0 26 7 0
29 10 0 12 4 0
28 9 2 31 12 1
30 11 0 31 12 0
31 12 0 12 4 1
28 9 0 5 1 0
28 9 1 26 7 1
26 7 0 29 10 0
247 176 10 SampleHold 0 0 0
-1 0 14
7 0 0 0 3 0 0 0
7 0 1 0 3 0 1 0
9 0 0 0 7 0 0 0
12 0 0 0 5 0 1 0
5 0 1 0 9 0 0 0
27 0 0 0 28 0 0 0
20 0 0 0 26 0 0 0
29 0 0 0 12 0 0 0
28 0 2 0 31 0 1 0
30 0 0 0 31 0 0 0
31 0 0 0 12 0 1 0
28 0 0 0 5 0 0 0
28 0 1 0 26 0 1 0
26 0 0 0 29 0 0 0


+ 25
- 29
Examples/Sequence.ssm View File

@@ -1,11 +1,11 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
298 115 700 600 0 0 0 0
SectionList
10
9

Device 0 Plugin 18
159 354 1 111 133
3 0 0.0640363 8 1 0
81 92 6 Matrix 0 91 92
4 0 0.122984 16 1 0
32 6.6 3
1 1 1 7 1 1 13 1 1 15 1 1 19 1 1 23 1 1 25 1 1 29 1 1 30 3 1 0 4 1 2 4 1 6 4 1 10 4 1 12 4 1 14 4 1 18 4 1 20 4 1 24 4 1 28 4 1 31 6 1 4 11 1 8 11 1 16 11 1 22 11 1 26 11 1 -1 32 1 0
-1 32 1 0
@@ -23,54 +23,50 @@ Device 0 Plugin 18
-1 32 1 0
-1 32 1 0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Device 1 Plugin 4
252 331 1 119 18
162 61 10 Oscillator 0 172 61
1 2 1 1 0.21 0 nan 1

Device 2 Plugin 0
629 351 0 100 84
464 59 3 OSS 0 474 59


Device 3 Plugin 8
557 351 0 100 84
390 60 12 Stereo Mixer 0 400 60
1 0.39 0 0.36 1 1 0.5 1 0.5

Device 4 Plugin 14
472 323 0 100 84
316 35 4 Echo 0 326 35
1 0.321 0.31

Device 5 Plugin 13
330 355 1 382 19
244 79 11 Moog Filter 0 254 79
1 0 0.37002

Device 7 Plugin 5
252 400 1 512 20
164 136 8 Envelope 0 174 136
1 0.0121 0.16 0 0 0.92 0

Device 8 Plugin 6
403 355 0 0 0


Device 9 Plugin 14
473 391 0 100 84
317 101 4 Echo 0 327 101
1 0.34 0.31

Device 11 Plugin -1
396 496 0 0 0
83 17 0 0 0 0
1 51 Using the Matrix plugin to create a robotic melody.


11
0 0 0 1 1 0
3 3 0 2 2 0
3 3 1 2 2 1
1 1 0 5 5 0
0 0 1 7 6 0
7 6 0 5 5 1
5 5 0 8 7 0
8 7 0 4 4 0
8 7 1 9 8 0
9 8 0 3 3 1
4 4 0 3 3 0
-1 0 10
0 0 0 0 1 0 0 0
3 0 0 0 2 0 0 0
3 0 1 0 2 0 1 0
1 0 0 0 5 0 0 0
0 0 1 0 7 0 0 0
7 0 0 0 5 0 1 0
9 0 0 0 3 0 1 0
4 0 0 0 3 0 0 0
5 0 0 0 4 0 0 0
5 0 0 0 9 0 0 0


+ 47
- 47
Examples/SpiralSynth.ssm View File

@@ -1,109 +1,109 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
298 115 700 600 0 0 0 0
SectionList
19

Device 1 Plugin 4
416 494 0 458 -31
315 247 10 Oscillator 0 325 247
1 2 -1 1 0 0 0 1

Device 2 Plugin 4
414 426 0 460 -144
313 179 10 Oscillator 0 323 179
1 2 0 0.992771 0 0 0 1

Device 3 Plugin 4
414 358 0 460 -258
313 111 10 Oscillator 0 323 111
1 2 1 1 0.5 0 0 1

Device 4 Plugin 6
345 360 0 0 0
244 113 8 Splitter 0 0 0


Device 6 Plugin 7
558 428 0 857 -154
1 0.77 0.67 0.31 1
457 181 5 Mixer 0 467 181
2 4 0.77 0.67 0.31 1

Device 7 Plugin 13
630 427 0 852 -267
529 180 11 Moog Filter 0 539 180
1 0.6981 0.34483

Device 8 Plugin 5
485 494 0 707 -30
384 247 8 Envelope 0 394 247
1 0 0.9216 0.45 1 0.42 0.01

Device 9 Plugin 5
486 426 0 707 -144
385 179 8 Envelope 0 395 179
1 0 0.3844 0.08 1 0.5 0.01

Device 10 Plugin 5
486 359 0 708 -259
385 112 8 Envelope 0 395 112
1 0 0.9216 1 1.4161 0.28 0.01

Device 11 Plugin 6
288 457 0 0 0
187 210 8 Splitter 0 0 0


Device 13 Plugin 5
556 492 0 961 -148
455 245 8 Envelope 0 465 245
1 0.9216 0.2601 0 3.0625 0.6 0.01

Device 15 Plugin 14
701 428 0 975 -267
600 181 4 Echo 0 610 181
1 0.377 0.39

Device 17 Plugin 8
843 430 0 460 -256
742 183 12 Stereo Mixer 0 752 183
1 1 0.5 1 0.5 1 0.5 1 0.5

Device 18 Plugin 0
915 428 0 1108 -267
814 181 3 OSS 0 824 181


Device 19 Plugin 4
344 291 0 1077 -22
243 44 10 Oscillator 0 253 44
1 2 -3 0.0167674 0.5 0 0 1

Device 20 Plugin 1
772 429 0 853 -26
671 182 5 Scope 0 681 182


Device 21 Plugin 20
273 362 0 460 -256
172 115 6 Smooth 0 182 115
1 0.114 0.151

Device 22 Plugin -1
406 561 0 0 0
79 10 0 0 0 0
1 63 SpiralSynth, with a moog filter. (and stuck in monophonic mode)


Device 23 Plugin 40
178 425 0 200 50
77 178 8 Keyboard 0 87 178
0


24
4 3 0 3 2 0
3 2 0 10 8 1
2 1 0 9 7 1
1 0 0 8 6 1
8 6 1 6 4 2
9 7 1 6 4 1
10 8 1 6 4 0
6 4 0 7 5 0
13 10 0 7 5 1
7 5 0 15 11 0
17 12 0 18 13 0
17 12 1 18 13 1
19 14 0 3 2 1
15 11 0 20 15 0
20 15 0 17 12 0
21 16 0 4 3 0
4 3 1 2 1 0
4 3 2 1 0 0
11 9 0 10 8 0
11 9 1 9 7 0
11 9 2 8 6 0
11 9 3 13 10 0
23 18 0 21 16 0
23 18 1 11 9 0
-1 0 24
4 0 0 0 3 0 0 0
3 0 0 0 10 0 1 0
2 0 0 0 9 0 1 0
1 0 0 0 8 0 1 0
8 0 1 0 6 0 2 0
9 0 1 0 6 0 1 0
10 0 1 0 6 0 0 0
6 0 0 0 7 0 0 0
13 0 0 0 7 0 1 0
7 0 0 0 15 0 0 0
17 0 0 0 18 0 0 0
17 0 1 0 18 0 1 0
19 0 0 0 3 0 1 0
15 0 0 0 20 0 0 0
20 0 0 0 17 0 0 0
21 0 0 0 4 0 0 0
4 0 1 0 2 0 0 0
4 0 2 0 1 0 0 0
11 0 0 0 10 0 0 0
11 0 1 0 9 0 0 0
11 0 2 0 8 0 0 0
11 0 3 0 13 0 0 0
23 0 0 0 21 0 0 0
23 0 1 0 11 0 0 0


+ 79
- 138
Examples/Tutorial1-FirstThing.ssm View File

@@ -1,195 +1,136 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
64 80 700 600 0 0 0 0
SectionList
38
26

Device 0 Plugin -1
371 320 0 0 0
1 36 Tutorial 1 - First principles of SSM
Device 0 Plugin 0
409 82 3 OSS 1 419 82


Device 1 Plugin -1
371 336 0 0 0
1 91 This is a comment, click somewhere in the middle of me to move me, double click to edit me.

Device 1 Plugin 23
79 82 9 WaveTable 1 89 82
1 0 0 1 1

Device 2 Plugin 0
541 411 1 492 26
Device 2 Plugin 40
75 246 8 Keyboard 1 85 246
0


Device 3 Plugin 23
216 411 1 178 26
1 0 0 1 1
Device 3 Plugin 5
241 411 8 Envelope 1 251 411
1 0 0.5 0 1 0.5 0.01

Device 4 Plugin -1
230 377 0 0 0
1 31 The simplest noisemaking layout
218 1 0 0 0 0
1 36 Tutorial 1 - First Principles of SSM


Device 5 Plugin -1
230 377 0 0 0
1 31 The simplest noisemaking layout
119 67 0 0 0 0
1 35 Wavetable - creates an audio signal


Device 6 Plugin -1
254 389 0 0 0
1 41 A sinewave generating wavetable plugin...
386 67 0 0 0 0
1 30 Output signal to the soundcard


Device 7 Plugin -1
537 389 0 0 0
1 18 ... and an output.


Device 15 Plugin -1
222 480 0 0 0
1 36 Change the frequency and wave shape.


Device 16 Plugin -1
540 472 0 0 0
1 40 This outputs the sound to the soundcard.


Device 17 Plugin -1
534 485 0 0 0
1 55 You can change the volume, or record the sound to disk.


Device 18 Plugin -1
374 429 0 0 0
1 41 This connects the output of the wavetable


Device 21 Plugin -1
374 429 0 0 0
1 41 This connects the output of the wavetable


Device 22 Plugin -1
370 440 0 0 0
1 38 To the input of the OSS output plugin.


Device 23 Plugin -1
373 410 0 0 0
1 51 Create/Delete connections by clicking on the ports.


Device 26 Plugin -1
258 591 0 0 0
1 9 <--------


Device 27 Plugin -1
165 361 0 0 0
1 3 (1)


Device 28 Plugin -1
166 546 0 0 0
1 3 (2)

87 197 0 0 0 0
1 53 Try manually changing the frequency, or the waveshape

Device 29 Plugin -1
389 584 0 0 0
1 44 To get this to work, click on this port, and

Device 8 Plugin -1
182 230 0 0 0 0
1 20 Add keyboard control

Device 30 Plugin -1
400 597 0 0 0
1 45 then on the WaveTable's one free input above.

Device 9 Plugin -1
401 254 0 0 0 0
1 16 <-- Connect this

Device 31 Plugin -1
253 562 0 0 0
1 39 Controlling the sound with PC keyboard.

Device 10 Plugin -1
398 266 0 0 0 0
1 27 to the frequency input port

Device 32 Plugin -1
410 624 0 0 0
1 63 To change the pitch of the tone, press keys on your PC keyboard

Device 11 Plugin -1
400 276 0 0 0 0
1 16 on the WaveTable

Device 37 Plugin -1
396 522 0 0 0
1 103 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Device 12 Plugin -1
70 344 0 0 0 0
1 56 You should now be able to play notes on your PC keyboard

Device 38 Plugin 5
401 766 1 485 140
1 0.0529 0.8281 0 0 0.5 0.01

Device 39 Plugin -1
386 690 0 0 0
1 103 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Device 13 Plugin -1
74 356 0 0 0 0
1 42 or by clicking on the keys with the mouse.


Device 40 Plugin -1
168 717 0 0 0
1 3 (3)
Device 14 Plugin -1
71 403 0 0 0 0
1 36 Now connect this port to the trigger


Device 41 Plugin -1
248 731 0 0 0
1 36 Using an envelope to shape the sound


Device 42 Plugin -1
242 787 0 0 0
1 47 Connect this to the WaveTable's output ------->
Device 15 Plugin -1
116 416 0 0 0 0
1 21 on the KeyboardPlugin


Device 43 Plugin -1
270 762 0 0 0
1 33 Connect this to the second output
Device 16 Plugin -1
224 418 0 0 0 0
1 3 -->


Device 44 Plugin -1
264 775 0 0 0
1 37 down on the keyboard plugin. ------->
Device 17 Plugin -1
180 378 0 0 0 0
1 55 Now disconnect the Wavetable output from the OSS plugin


Device 45 Plugin -1
518 784 0 0 0
1 34 <------ Connect this to one of the
Device 18 Plugin -1
66 41 0 0 0 0
1 57 I am a comment, drag to move me, double click to edit me.


Device 46 Plugin -1
529 797 0 0 0
1 20 OSS plugin's inputs.
Device 19 Plugin -1
64 14 0 0 0 0
1 103 Build connections by clicking the left mouse on the ports, disconnect them by clicking the right mouse.


Device 47 Plugin -1
398 843 0 0 0
1 65 The layout will now look a little messy, but should now cause the
Device 20 Plugin -1
66 27 0 0 0 0
1 88 You can delete or rename plugins by right clicking over them to display the plugin menu.


Device 48 Plugin -1
405 856 0 0 0
1 67 sound to appear and then slowly die away after a note is triggered.
Device 21 Plugin -1
69 430 0 0 0 0
1 36 This one to the WaveTable output -->


Device 49 Plugin -1
420 869 0 0 0
1 74 Try changing the [A]ttack [D]ecay [S]ustain and [R]elease of the envelope.
Device 22 Plugin -1
405 430 0 0 0 0
1 27 <-- Connect this out to the


Device 51 Plugin -1
325 743 0 0 0
1 73 Click on the WaveTable's output port, so the first connection is deleted.
Device 23 Plugin -1
413 443 0 0 0 0
1 26 OSS plugin left/right outs


Device 52 Plugin -1
284 830 0 0 0
1 14 Now hit a key.
Device 24 Plugin -1
110 556 0 0 0 0
1 86 You have now made a simple synth! Play notes and try changing the envelope parameters.


Device 54 Plugin 40
209 582 1 152 151
0
Device 25 Plugin -1
167 528 0 0 0 0
1 53 The envelope shapes the volume of the note over time.


1
3 3 0 2 2 0
-1 0 2
1 0 0 0 0 0 0 1
1 0 0 0 0 0 1 1


+ 42
- 71
Examples/Tutorial2-Audio&CVs.ssm View File

@@ -1,133 +1,104 @@
SpiralSynthModular File Ver 3
288 90 724 420 292 545 724 420
SpiralSynthModular File Ver 4
64 80 700 600 0 0 0 0
SectionList
25
19

Device 2 Plugin 0
631 196 1 539 111
398 586 3 OSS 0 408 586


Device 3 Plugin 23
236 103 1 104 120
248 586 9 WaveTable 0 258 586
1 0 0 1 1

Device 24 Plugin 2
171 176 0 100 100
2 0 0 0


Device 38 Plugin 5
446 190 1 374 121
323 586 8 Envelope 0 333 586
1 0.0529 0.8281 0 0 0.5 0.01

Device 53 Plugin 1
312 186 0 100 100
197 301 5 Scope 1 207 301


Device 55 Plugin 1
382 103 0 100 100
195 111 5 Scope 1 205 111


Device 56 Plugin 1
512 104 0 100 100
199 450 5 Scope 1 209 450


Device 58 Plugin -1
372 -32 0 0 0
67 9 0 0 0 0
1 32 Tutorial 2 - CV's and Audio data


Device 59 Plugin -1
371 -16 0 0 0
66 25 0 0 0 0
1 107 This is a closer look at what is going on in tutorial 1. It's exactly the same design, but with some scopes


Device 60 Plugin -1
377 -2 0 0 0
68 39 0 0 0 0
1 60 to see what is beaing passed through the network of plugins.


Device 61 Plugin -1
378 88 0 0 0
1 7 Scope 1


Device 62 Plugin -1
307 170 0 0 0
1 7 Scope 2


Device 63 Plugin -1
506 89 0 0 0
1 7 Scope 3


Device 64 Plugin -1
390 21 0 0 0
1 113 All data in SSM is treated the same, anything can be plugged into anything else. However, it is important to know
67 54 0 0 0 0
1 95 All data in SSM is treated the same, anything can be plugged into anything else. However, it is


Device 65 Plugin -1
199 33 0 0 0
1 32 the different uses of this data.
68 68 0 0 0 0
1 50 important to know the different uses of this data.


Device 66 Plugin -1
367 58 0 0 0
1 104 Open Scope 1, you will see the output of the WaveTable oscillator, which is used here to generate audio.
68 91 0 0 0 0
1 105 In this scope, you will see the output of the WaveTable oscillator, which is used here to generate audio.


Device 67 Plugin -1
315 270 0 0 0
1 76 Now open scope 2, and press a key. What you see is the value going from zero


Device 68 Plugin -1
322 284 0 0 0
1 85 in the center, to a high value (if using a midi keyboard - the velocity of the note).
76 240 0 0 0 0
1 97 Now press a key. What you see is the value going from zero to a high value and then back to zero.


Device 69 Plugin -1
389 298 0 0 0
1 109 This data is CV, or Control Voltage data (the name comes from old synths that acually used votages to control
75 267 0 0 0 0
1 99 This data is CV, or Control Voltage data (the name comes from old synths that acually used voltages


Device 70 Plugin -1
388 313 0 0 0
1 112 bits of the synth.) You wouldn't actually want to output this data to the speaker, but you use it to control the
78 280 0 0 0 0
1 30 to control bits of the synth.)


Device 71 Plugin -1
168 327 0 0 0
-99 382 0 0 0 0
1 14 other plugins.


Device 72 Plugin -1
395 341 0 0 0
1 115 If you open Scope 3, you'll see the amount the envelope is amplifying the WaveTable's signal, triggered by the midi


Device 73 Plugin -1
314 356 0 0 0
1 80 Look at scope 4 (the actual output), and all together they make it much clearer.
227 432 0 0 0 0
1 38 This scope displays the actual output.


Device 74 Plugin 1
543 196 0 100 100
Device 76 Plugin 40
177 586 8 Keyboard 0 187 586
0


Device 75 Plugin -1
537 181 0 0 0
1 7 Scope 4
Device 77 Plugin -1
75 255 0 0 0 0
1 79 This is the signal that is used to shape or "modulate" the volume of the audio.


8
24 2 0 3 1 0
24 2 1 53 4 0
53 4 0 38 3 0
3 1 0 55 5 0
55 5 0 38 3 1
38 3 0 56 6 0
38 3 1 74 23 0
74 23 0 2 0 0
-1 0 8
38 0 1 0 2 0 0 1
38 0 1 0 2 0 1 1
76 0 0 0 3 0 0 0
3 0 0 0 38 0 1 0
76 0 1 0 38 0 0 0
3 0 0 0 55 0 0 0
38 0 0 0 53 0 0 0
38 0 1 0 56 0 0 0


+ 46
- 91
Examples/Tutorial3-SubtractiveSynth.ssm View File

@@ -1,129 +1,84 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
298 115 700 600 0 0 0 0
SectionList
24
15

Device 0 Plugin 23
263 466 1 99 27
298 141 9 WaveTable 0 308 141
1 3 0 1 1

Device 2 Plugin 5
264 534 1 335 155
217 169 8 Envelope 0 227 169
1 0.0289 0.16 0.08 1.0404 0.58 0.01

Device 3 Plugin 13
379 467 1 349 28
369 141 11 Moog Filter 0 379 141
1 0 0.37137

Device 4 Plugin 0
628 467 0 593 -3


Device 6 Plugin 1
484 467 1 472 21
451 141 3 OSS 0 461 141


Device 7 Plugin -1
382 306 0 0 0
1 17 Tutorial design 3


Device 8 Plugin -1
381 322 0 0 0
1 19 A subtractive synth


Device 9 Plugin -1
170 472 0 0 0
1 15 Note in signals


Device 11 Plugin -1
260 448 0 0 0
1 15 Sound generator


Device 12 Plugin -1
263 600 0 0 0
1 43 Generates the signal to control the filter.

71 9 0 0 0 0
1 34 Tutorial 3 - Subtractive synthesis

Device 13 Plugin -1
377 531 0 0 0
1 23 Filters the frequencies


Device 14 Plugin -1
389 545 0 0 0
1 26 from the WaveTable plugin,


Device 15 Plugin -1
401 558 0 0 0
1 32 the envelope passes the value to


Device 16 Plugin -1
420 571 0 0 0
1 43 control the cutoff frequency of the filter.


Device 17 Plugin -1
332 346 0 0 0
1 73 This synth uses what is known as subtractive synthesis to produce sounds.
Device 31 Plugin 40
126 141 8 Keyboard 0 136 141
0


Device 19 Plugin -1
333 361 0 0 0
1 81 The heart of a subtractive synths is the filter, as it is what the filter removes
Device 36 Plugin -1
92 34 0 0 0 0
1 84 Similar in design to the previous patch, this one includes a new module, the filter.


Device 20 Plugin -1
236 376 0 0 0
1 32 that dictates the sound produced
Device 37 Plugin -1
91 48 0 0 0 0
1 63 Filters provide the subtractive element of synths of this type,


Device 21 Plugin -1
348 391 0 0 0
1 81 The waveshape the oscillator uses should contain as many frequencies as possible,
Device 40 Plugin -1
93 62 0 0 0 0
1 85 by filtering out harmonics from the source signal in a way that changes through time.


Device 22 Plugin -1
348 406 0 0 0
1 86 (in this case a triangle wave) so that the filter has more of an effect on it's sound.
Device 41 Plugin 1
269 244 5 Scope 1 279 244


Device 25 Plugin 6
561 467 0 0 0
Device 42 Plugin -1
137 125 0 0 0 0
1 81 The modules here are minimised, click on the icons to get access to the controls.


Device 28 Plugin -1
339 648 0 0 0
1 79 This is how many of the first analogue synths worked, such as the moogs - hence
Device 43 Plugin -1
92 79 0 0 0 0
1 92 Because the sound characteristic is defined by the filter, it is best to use a source signal


Device 29 Plugin -1
223 662 0 0 0
1 32 the use of the moog filter here.
Device 44 Plugin -1
93 93 0 0 0 0
1 74 that contains as many harmonics as possible, a sawtooth wave in this case.


Device 30 Plugin -1
238 613 0 0 0
1 29 Triggered by keypress events.
Device 45 Plugin -1
102 391 0 0 0 0
1 82 This is a very early form of synthesis which was used on some of the first synths,


Device 31 Plugin 40
177 499 0 200 -22
0
Device 46 Plugin -1
55 404 0 0 0 0
1 74 such as Bob Moog's. For this reason we use the Moog filter emulation here.


8
2 1 0 3 2 1
0 0 0 3 2 0
3 2 0 6 4 0
6 4 0 25 19 0
25 19 0 4 3 0
25 19 1 4 3 1
31 23 0 0 0 0
31 23 1 2 1 0
-1 0 7
2 0 0 0 3 0 1 0
0 0 0 0 3 0 0 0
31 0 0 0 0 0 0 0
31 0 1 0 2 0 0 0
3 0 0 0 4 0 0 1
3 0 0 0 4 0 1 1
3 0 0 0 41 0 0 0


+ 27
- 52
Examples/Tutorial4-AdditiveSynth.ssm View File

@@ -1,105 +1,80 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
154 89 700 600 0 0 0 0
SectionList
19
14

Device 0 Plugin 1
495 495 1 477 128
401 145 5 Scope 0 411 145


Device 1 Plugin 0
629 494 0 100 100


Device 2 Plugin 6
562 495 0 0 0
469 145 3 OSS 0 479 145


Device 3 Plugin 23
219 495 1 95 14
139 193 9 WaveTable 0 149 193
1 0 2 0.421244 1

Device 4 Plugin 23
357 495 1 90 259
268 163 9 WaveTable 0 278 163
1 0 -3 1 1

Device 5 Plugin 5
289 492 1 143 134
204 159 10 Envelope 1 0 214 159
1 0 0.3249 0.96 1 1 0.01

Device 6 Plugin 5
426 485 1 328 136
335 144 8 Envelope 0 345 144
1 0.0289 0.4624 0.26 1 0.5 0.01

Device 9 Plugin -1
362 331 0 0 0
68 6 0 0 0 0
1 31 Tutorial 3 - Additive Synthesis


Device 10 Plugin -1
362 350 0 0 0
66 21 0 0 0 0
1 94 Additive synthesis works on the principle of building up sounds by combining simpler elements.


Device 11 Plugin -1
357 364 0 0 0
65 36 0 0 0 0
1 95 In this case, two oscillators are used, one modulating the pitch of the other. This is known as


Device 14 Plugin -1
284 561 0 0 0
1 10 Envelope 1


Device 15 Plugin -1
422 562 0 0 0
1 10 Envelope 2


Device 16 Plugin -1
347 644 0 0 0
120 288 0 0 0 0
1 80 Envelope 1 controls the amount of modulation that the second ocillator recieves,


Device 17 Plugin -1
312 658 0 0 0
119 304 0 0 0 0
1 60 The second envelope shapes the amplitude of the final sound.


Device 18 Plugin -1
212 378 0 0 0
66 50 0 0 0 0
1 28 frequency modulation, or FM.


Device 19 Plugin -1
337 392 0 0 0
90 91 0 0 0 0
1 84 The first digital synths used this technique, such as the DX range of Yamaha synths.


Device 22 Plugin -1
216 566 0 0 0
1 12 Oscillator 1


Device 23 Plugin -1
352 563 0 0 0
1 12 Oscillator 2


Device 24 Plugin 40
145 446 0 200 50
70 150 8 Keyboard 0 80 150
0


10
2 2 0 1 1 0
2 2 1 1 1 1
0 0 0 2 2 0
3 3 0 5 5 1
4 4 0 6 6 1
6 6 1 0 0 0
5 5 1 4 4 0
24 18 0 3 3 0
24 18 1 5 5 0
24 18 1 6 6 0
-1 0 9
3 0 0 0 5 0 1 0
4 0 0 0 6 0 1 0
6 0 1 0 0 0 0 0
5 0 1 0 4 0 0 0
24 0 0 0 3 0 0 0
24 0 1 0 5 0 0 0
24 0 1 0 6 0 0 0
0 0 0 0 1 0 0 1
0 0 0 0 1 0 1 1


+ 25
- 24
Examples/Tutorial5-MatrixSampler.ssm View File

@@ -1,15 +1,15 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
154 89 700 600 0 0 0 0
SectionList
9

Device 1 Plugin 0
543 318 0 100 94
496 92 3 OSS 0 506 92


Device 2 Plugin 18
216 339 1 78 228
3 0 0.0807003 55 1 0
68 89 6 Matrix 1 78 89
4 0 0.101808 48 1 0
64 8.5 0
0 0 1 2 0 1 8 0 1 16 0 1 18 0 1 24 0 1 32 0 1 34 0 1 40 0 1 48 0 1 50 0 1 56 0 1 0 1 1 2 1 1 3 1 1 6 1 1 7 1 1 10 1 1 11 1 1 14 1 1 15 1 1 18 1 1 19 1 1 22 1 1 23 1 1 26 1 1 27 1 1 30 1 1 31 1 1 34 1 1 35 1 1 38 1 1 39 1 1 42 1 1 43 1 1 46 1 1 47 1 1 50 1 1 51 1 1 54 1 1 55 1 1 58 1 1 59 1 1 62 1 1 63 1 1 2 2 1 6 2 1 10 2 1 14 2 1 18 2 1 22 2 1 26 2 1 30 2 1 34 2 1 38 2 1 42 2 1 46 2 1 50 2 1 54 2 1 58 2 1 62 2 1 4 3 1 12 3 1 20 3 1 28 3 1 36 3 1 44 3 1 47 3 0.666667 50 3 0.333333 52 3 1 53 3 0.180392 55 3 0.639216 58 3 0.333333 59 3 1 61 3 0.564706 -1 32 1 0
-1 32 1 0
@@ -27,50 +27,51 @@ Device 2 Plugin 18
-1 32 1 0
-1 32 1 0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Device 3 Plugin 32
317 324 1 79 9
3 2 1 0 0 0 0 -1 0 0 12448 0 0.982 1 0 0 1 1 -1 0 0 1751 1 0.571 1.07 0 0 2 1 -1 0 0 7272 2 1.568 1 0 0 3 1 7118 0 0 8225 3 1 1 0 0 4 0 -1 0 0 2147483647 4 1 1 0 0 5 0 -1 0 0 2147483647 5 1 1 0 0 6 0 -1 0 0 2147483647 6 1 1 0 0 7 0 -1 0 0 2147483647 7
110 364 11 PoshSampler 1 120 364
3 2 1 0 0 0 0 4490 0 0 12448 0 0.982 1 0 0 1 1 -1 0 0 1751 1 0.571 1.07 0 0 2 1 -1 0 0 7272 2 1.568 1 0 0 3 1 -1 0 0 8225 3 1 1 0 0 4 0 -1 0 0 2147483647 4 1 1 0 0 5 0 -1 0 0 2147483647 5 1 1 0 0 6 0 -1 0 0 2147483647 6 1 1 0 0 7 0 -1 0 0 2147483647 7

Device 8 Plugin -1
470 391 0 0 0
68 2 0 0 0 0
1 10 Tutorial 5


Device 9 Plugin -1
466 409 0 0 0
67 15 0 0 0 0
1 48 Using samples to build drumloops with the matrix


Device 10 Plugin -1
464 424 0 0 0
68 30 0 0 0 0
1 46 Each row of the matrix corresponds to a sample


Device 11 Plugin -1
477 439 0 0 0
68 45 0 0 0 0
1 52 This also shows how you can use volumes to fake echo


Device 14 Plugin -1
472 456 0 0 0
65 59 0 0 0 0
1 54 The samples are really small to cut down distro size -


Device 15 Plugin -1
399 471 0 0 0
69 74 0 0 0 0
1 19 try using your own.


10
2 1 2 3 2 1
2 1 3 3 2 3
2 1 4 3 2 5
2 1 5 3 2 7
2 1 6 3 2 9
2 1 7 3 2 11
2 1 8 3 2 13
2 1 9 3 2 15
3 2 0 1 0 0
3 2 0 1 0 1
-1 0 10
2 0 2 0 3 0 1 0
2 0 3 0 3 0 3 0
2 0 4 0 3 0 5 0
2 0 5 0 3 0 7 0
2 0 6 0 3 0 9 0
2 0 7 0 3 0 11 0
2 0 8 0 3 0 13 0
2 0 9 0 3 0 15 0
3 0 0 0 1 0 0 0
3 0 0 0 1 0 1 0


+ 21
- 21
Examples/Tutorial7-LADSPA.ssm View File

@@ -1,59 +1,59 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
154 89 700 600 0 0 0 0
SectionList
10

Device 0 Plugin 23
243 432 1 99 11
228 105 9 WaveTable 0 238 105
1 3 0 1 1

Device 2 Plugin 5
244 500 1 485 13
153 138 8 Envelope 0 163 138
1 0.0289 0.16 0.08 1.0404 0.58 0.01

Device 3 Plugin 13
359 433 1 349 12
301 106 11 Moog Filter 0 311 106
1 0 0.37137

Device 4 Plugin 0
575 412 0 593 -19
396 111 3 OSS 0 406 111


Device 7 Plugin -1
358 303 0 0 0
77 8 0 0 0 0
1 10 Tutorial 7


Device 8 Plugin -1
358 320 0 0 0
77 22 0 0 0 0
1 37 The subtractive synth from tutorial 3


Device 31 Plugin 40
157 465 0 200 -38
82 98 8 Keyboard 0 92 98
0


Device 32 Plugin 22
472 410 1 119 124
8 0 1 1216 8 1 0.1 0 0 -70 -70 -70 -1 300 360 1 1 0 0 0 1 1 1 1 1 1 1 1 1 121.497 90.075 0.81 0.719 -16.38 0 -3.92 0.000776224
69 201 6 LADSPA 1 79 201
8 0 1 1216 8 1 0.1 0 0 -70 -70 -70 -1 300 360 1 1 0 0 0 1 1 1 1 1 1 1 1 1 121.497 90.075 0.81 0.719 -16.38 0 -3.92 -0.000544915

Device 33 Plugin -1
361 336 0 0 0
79 35 0 0 0 0
1 35 with a LADSPA reverb effect plugin.


Device 34 Plugin -1
363 357 0 0 0
129 72 0 0 0 0
1 65 This won't do much exiting if you don't have LADSPA installed. :)


7
2 1 0 3 2 1
0 0 0 3 2 0
31 6 0 0 0 0
31 6 1 2 1 0
3 2 0 32 7 7
32 7 0 4 3 0
32 7 1 4 3 1
-1 0 7
2 0 0 0 3 0 1 0
0 0 0 0 3 0 0 0
31 0 0 0 0 0 0 0
31 0 1 0 2 0 0 0
3 0 0 0 32 0 7 0
32 0 0 0 4 0 0 0
32 0 1 0 4 0 1 0


+ 152
- 156
Examples/soil_and_the_crop.ssm View File

@@ -1,392 +1,388 @@
SpiralSynthModular File Ver 3
0 0 700 300 0 300 700 300
SpiralSynthModular File Ver 4
92 68 864 638 0 0 0 0
SectionList
74
73

Device 1 Plugin 23
282 556 1 86 144
207 242 9 WaveTable 0 217 242
1 1 0 0.0314069 1

Device 2 Plugin 51
599 463 0 0 0
511 152 10 SampleHold 0 0 0


Device 4 Plugin 23
601 330 1 553 17
581 37 9 WaveTable 0 591 37
1 0 0 0.0133213 1

Device 5 Plugin 5
667 330 1 801 17
651 35 8 Envelope 0 661 35
1 0.0121 0.2601 0 1 1 0.02

Device 6 Plugin 0
1349 597 0 993 435
1204 332 3 OSS 0 1214 332


Device 7 Plugin 4
610 530 0 452 441
527 225 10 Oscillator 0 537 225
1 3 0 1 0.5 0 0 1

Device 8 Plugin 5
676 528 1 802 358
624 250 8 Envelope 0 634 250
1 0 0.0289 0 1 0.5 0.01

Device 9 Plugin 8
824 396 0 735 509
736 85 12 Stereo Mixer 0 746 85
1 2 0.5 0.6 0.5 1.45 0.5 1.37 0.5

Device 16 Plugin 4
534 464 0 432 542
446 153 10 Oscillator 0 456 153
1 3 0 1 0.49 0 0.4906 1

Device 17 Plugin 4
469 398 0 452 441
381 87 10 Oscillator 0 391 87
1 3 0 1 0.5 0 0.03125 1

Device 18 Plugin 51
538 395 0 0 0
450 84 10 SampleHold 0 0 0


Device 19 Plugin 4
605 397 0 452 441
517 86 10 Oscillator 0 527 86
1 3 0 1 0.5 0 0 1

Device 20 Plugin 5
671 395 1 801 131
631 109 8 Envelope 0 641 109
1 0 0.16 0 1.4161 0.6 0.01

Device 21 Plugin 5
535 330 1 408 18
487 19 8 Envelope 0 497 19
1 0.0036 0.0289 0 0.0529 0.96 0.01

Device 22 Plugin 5
667 463 1 676 242
621 180 8 Envelope 0 631 180
1 0 0.16 0 0 0.89 0.01

Device 23 Plugin 4
465 466 0 452 441
377 155 10 Oscillator 0 387 155
1 3 0 1 0.5 0 0 1

Device 24 Plugin 51
463 330 0 0 0
375 19 10 SampleHold 0 0 0


Device 25 Plugin 11
739 466 1 823 244
687 178 6 Filter 0 697 178
1 3004.28 3.4 0 0

Device 26 Plugin 4
394 328 0 447 565
306 17 10 Oscillator 0 316 17
1 3 0 1 0.5 0 1.45626e-38 1

Device 28 Plugin 14
905 397 1 969 199
806 86 4 Echo 0 816 86
1 0.453 0.25

Device 29 Plugin 1
1278 552 1 97 7
120 474 5 Scope 1 130 474


Device 30 Plugin 23
787 622 1 431 511
764 310 9 WaveTable 0 774 310
1 2 -2 1 1

Device 31 Plugin 5
720 622 1 680 511
689 308 8 Envelope 0 699 308
1 0 0.16 0.23 1 0.15 0.01

Device 32 Plugin 7
1210 601 1 1243 524
1 0.89 0.89 0.12 1.4
1092 336 5 Mixer 0 1102 336
2 4 0.89 0.89 0.12 1.4

Device 33 Plugin 4
385 713 0 452 441
297 402 10 Oscillator 0 307 402
1 3 0 1 0.5 0 0 1

Device 34 Plugin 51
523 710 0 0 0
435 399 10 SampleHold 0 0 0


Device 35 Plugin 9
652 710 0 360 609
564 399 3 Amp 0 574 399
1 0.8679 0.9434

Device 36 Plugin 13
853 622 1 827 510
866 346 11 Moog Filter 0 876 346
1 0 0.34807

Device 37 Plugin 23
738 689 0 686 525
650 378 9 WaveTable 0 660 378
1 0 -3 0.0298993 1

Device 38 Plugin 23
806 688 0 487 534
718 377 9 WaveTable 0 728 377
1 1 -3 0.000549012 1

Device 40 Plugin 9
923 619 0 698 658
933 347 3 Amp 0 943 347
1 0.0377 0

Device 44 Plugin 24
457 709 0 0 0

369 398 9 Note Snap 0 379 398
1
1 1 1 1 1 1 1 1 1 1 1 1

Device 47 Plugin 9
588 710 0 430 401
500 399 3 Amp 0 510 399
1 0.0377 0

Device 56 Plugin 23
755 1026 1 242 963
683 751 9 WaveTable 0 693 751
1 0 -1 0.842148 1

Device 57 Plugin 23
950 1025 1 644 963
895 731 9 WaveTable 0 905 731
1 0 3 0.0152308 1

Device 58 Plugin 5
819 1026 1 496 963
757 748 8 Envelope 0 767 748
1 1.1664 2.89 1 1 1 0.01

Device 59 Plugin 4
558 1023 0 452 799
470 712 10 Oscillator 0 480 712
1 3 0 1 0.5 0 0 1

Device 61 Plugin 51
626 1024 0 0 0
538 713 10 SampleHold 0 0 0


Device 62 Plugin 5
1017 1021 1 894 963
962 720 8 Envelope 0 972 720
1 2.3409 4.3681 0.17 4.8841 0.81 0.01

Device 64 Plugin 20
691 1025 0 452 799
603 714 6 Smooth 0 613 714
1 0.5 0.5

Device 65 Plugin 51
688 961 0 0 0
600 650 10 SampleHold 0 0 0


Device 66 Plugin 23
626 959 0 679 953
538 648 9 WaveTable 0 548 648
1 0 0 1 1

Device 67 Plugin 1
752 962 0 641 859
664 651 5 Scope 0 674 651


Device 70 Plugin 7
885 1024 0 831 859
1 0.07 0.96 1 1
830 731 5 Mixer 0 840 731
2 4 0.07 0.96 1 1

Device 71 Plugin 14
1083 1018 1 1038 963
1032 732 4 Echo 0 1042 732
1 0.17 0.71

Device 74 Plugin 4
680 793 0 910 712
592 482 10 Oscillator 0 602 482
1 3 0 1 0.91 0 2.98023e-09 1

Device 75 Plugin 5
1012 797 1 839 715
958 504 8 Envelope 0 968 504
1 0 0.7225 0.94 4.6225 0.58 0.01

Device 80 Plugin 51
747 794 0 0 0
659 483 10 SampleHold 0 0 0


Device 81 Plugin 13
948 796 1 718 716
886 505 11 Moog Filter 0 896 505
1 0.0566 0.2322

Device 83 Plugin 5
881 789 1 575 716
810 547 8 Envelope 0 820 547
1 0 0.4624 0.06 9 0.75 0.74

Device 85 Plugin 7
884 855 0 758 613
1 1 1 1 1
810 480 5 Mixer 0 820 480
2 4 1 1 1 1

Device 86 Plugin 14
1077 795 1 983 715
1026 504 4 Echo 0 1036 504
1 0.906 0.39

Device 87 Plugin 20
872 685 0 663 632
784 374 6 Smooth 0 794 374
1 0.5 0.5

Device 88 Plugin 23
814 793 1 328 666
727 483 9 WaveTable 0 737 483
1 2 -1 1 1

Device 89 Plugin 23
817 856 1 328 778
732 552 9 WaveTable 0 742 552
1 2 -1 1.00333 1

Device 90 Plugin 15
1282 643 0 746 628
1 0 0.4

Device 93 Plugin -1
164 314 0 0 0
76 3 0 0 0 0
1 17 Soil and the crop


Device 94 Plugin -1
194 329 0 0 0
106 18 0 0 0 0
1 10 by nebogeo


Device 95 Plugin -1
228 356 0 0 0
68 47 0 0 0 0
1 47 Constantly changing random music, you'll either


Device 96 Plugin -1
177 369 0 0 0
70 60 0 0 0 0
1 27 love the idea or hate it...


Device 97 Plugin -1
214 384 0 0 0
69 73 0 0 0 0
1 44 The only certain thing is that it won't play


Device 98 Plugin -1
169 397 0 0 0
69 86 0 0 0 0
1 21 the same thing twice.


Device 99 Plugin -1
523 302 0 0 0
524 -21 0 0 0 0
1 20 Percussion generator


Device 100 Plugin -1
726 341 0 0 0
633 22 0 0 0 0
1 9 Bass drum


Device 101 Plugin -1
719 407 0 0 0
643 97 0 0 0 0
1 7 Snare 1


Device 102 Plugin -1
747 450 0 0 0
645 169 0 0 0 0
1 7 Snare 2


Device 103 Plugin -1
724 548 0 0 0
643 239 0 0 0 0
1 6 Hi hat


Device 104 Plugin -1
502 692 0 0 0
414 381 0 0 0 0
1 49 Pitch generation, the bass and "lead" share this.


Device 105 Plugin -1
438 629 0 0 0
468 318 0 0 0 0
1 42 Changes of note occur on bass drum hits ->


Device 106 Plugin -1
800 605 0 0 0
775 297 0 0 0 0
1 4 Bass


Device 107 Plugin -1
851 771 0 0 0
763 460 0 0 0 0
1 11 Lead melody


Device 108 Plugin -1
698 942 0 0 0
610 631 0 0 0 0
1 49 Strange BG noises made with a bit of FM synthesis


Device 109 Plugin -1
609 875 0 0 0
449 559 0 0 0 0
1 47 <- gives the BG noises a bit of matching rhythm


Device 110 Plugin -1
278 534 0 0 0
190 223 0 0 0 0
1 23 Master clock oscillator


71
1 0 0 2 1 1
4 2 0 5 3 1
5 3 1 9 7 0
8 6 1 9 7 1
7 5 0 8 6 1
1 0 0 8 6 0
16 8 0 2 1 0
20 12 1 9 7 2
19 11 0 20 12 1
18 10 0 20 12 0
17 9 0 18 10 0
1 0 0 18 10 1
21 13 0 4 2 0
22 14 1 25 17 0
25 17 0 9 7 3
23 15 0 22 14 1
26 18 0 24 16 0
1 0 0 24 16 1
22 14 0 25 17 1
24 16 0 5 3 0
24 16 0 21 13 0
2 1 0 22 14 0
9 7 0 28 19 0
35 26 0 30 21 0
28 19 0 32 23 1
32 23 0 29 20 0
31 22 0 36 27 1
30 21 0 36 27 0
37 28 0 38 29 0
36 27 0 40 30 0
1 0 0 31 22 0
5 3 0 34 25 1
44 31 0 34 25 0
33 24 0 44 31 0
34 25 0 47 32 0
47 32 0 35 26 0
56 33 0 58 35 1
59 36 0 61 37 0
61 37 0 64 39 0
64 39 0 56 33 0
57 34 0 62 38 1
61 37 0 65 40 1
66 41 0 65 40 0
65 40 0 67 42 0
67 42 0 58 35 0
67 42 0 62 38 0
1 0 0 61 37 1
58 35 1 70 43 1
70 43 0 57 34 0
64 39 0 70 43 0
29 20 0 6 4 0
62 38 1 71 44 0
71 44 0 32 23 2
80 47 0 75 46 0
74 45 0 80 47 0
1 0 0 80 47 1
80 47 0 83 49 0
85 50 0 81 48 0
81 48 0 75 46 1
75 46 1 86 51 0
86 51 0 32 23 0
40 30 0 32 23 3
38 29 0 87 52 0
87 52 0 40 30 1
89 54 0 85 50 1
88 53 0 85 50 0
35 26 0 89 54 0
35 26 0 88 53 0
90 55 0 6 4 1
32 23 0 90 55 0
83 49 0 81 48 1
-1 0 70
1 0 0 0 2 0 1 0
4 0 0 0 5 0 1 0
5 0 1 0 9 0 0 0
8 0 1 0 9 0 1 0
7 0 0 0 8 0 1 0
1 0 0 0 8 0 0 0
16 0 0 0 2 0 0 0
20 0 1 0 9 0 2 0
19 0 0 0 20 0 1 0
18 0 0 0 20 0 0 0
17 0 0 0 18 0 0 0
1 0 0 0 18 0 1 0
21 0 0 0 4 0 0 0
22 0 1 0 25 0 0 0
25 0 0 0 9 0 3 0
23 0 0 0 22 0 1 0
26 0 0 0 24 0 0 0
1 0 0 0 24 0 1 0
22 0 0 0 25 0 1 0
24 0 0 0 5 0 0 0
24 0 0 0 21 0 0 0
2 0 0 0 22 0 0 0
9 0 0 0 28 0 0 0
35 0 0 0 30 0 0 0
28 0 0 0 32 0 1 0
31 0 0 0 36 0 1 0
30 0 0 0 36 0 0 0
37 0 0 0 38 0 0 0
36 0 0 0 40 0 0 0
1 0 0 0 31 0 0 0
5 0 0 0 34 0 1 0
44 0 0 0 34 0 0 0
33 0 0 0 44 0 0 0
34 0 0 0 47 0 0 0
47 0 0 0 35 0 0 0
56 0 0 0 58 0 1 0
59 0 0 0 61 0 0 0
61 0 0 0 64 0 0 0
64 0 0 0 56 0 0 0
57 0 0 0 62 0 1 0
61 0 0 0 65 0 1 0
66 0 0 0 65 0 0 0
65 0 0 0 67 0 0 0
67 0 0 0 58 0 0 0
67 0 0 0 62 0 0 0
1 0 0 0 61 0 1 0
58 0 1 0 70 0 1 0
70 0 0 0 57 0 0 0
64 0 0 0 70 0 0 0
62 0 1 0 71 0 0 0
71 0 0 0 32 0 2 0
80 0 0 0 75 0 0 0
74 0 0 0 80 0 0 0
1 0 0 0 80 0 1 0
80 0 0 0 83 0 0 0
85 0 0 0 81 0 0 0
81 0 0 0 75 0 1 0
75 0 1 0 86 0 0 0
86 0 0 0 32 0 0 0
40 0 0 0 32 0 3 0
38 0 0 0 87 0 0 0
87 0 0 0 40 0 1 0
89 0 0 0 85 0 1 0
88 0 0 0 85 0 0 0
35 0 0 0 89 0 0 0
35 0 0 0 88 0 0 0
83 0 0 0 81 0 1 0
32 0 0 0 6 0 0 1
32 0 0 0 29 0 0 0
32 0 0 0 6 0 1 1


BIN
GUI/SSM.xcf View File


+ 458
- 1918
GUI/SSM.xpm
File diff suppressed because it is too large
View File


+ 10
- 0
GUI/Widgets/Fl_CommentGUI.C View File

@@ -44,6 +44,11 @@ int Fl_CommentGUI::handle(int event)
{
m_Comment=temp;
m_DragBar->label(m_Comment.c_str());
int width,height;
fl_font(fl_font(),10);
fl_measure(m_Comment.c_str(),width,height);
m_DragBar->size(width,height);
resize(x(),y(),width,height);
redraw();
parent()->redraw();
//int x,y;
@@ -91,4 +96,9 @@ void Fl_CommentGUI::StreamIn(istream &s)
delete[] str;
m_DragBar->label(m_Comment.c_str());
int width,height;
fl_font(fl_font(),10);
fl_measure(m_Comment.c_str(),width,height);
m_DragBar->size(width,height);
resize(x(),y(),width,height);
}

+ 13
- 5
GUI/Widgets/Fl_DeviceGUI.C View File

@@ -89,9 +89,17 @@ m_Minimised(true)
int Centx=x()+w()/2;
int Centy=y()+h()/2;
m_IconButton = new Fl_Button(Centx-m_Icon->w()/2,Centy-m_Icon->h()/2,m_Icon->w(),m_Icon->h());
m_IconButton->box(FL_NO_BOX);
if (m_Icon) m_IconButton->image(m_Icon);
if (m_Icon)
{
m_IconButton = new Fl_Button(Centx-m_Icon->w()/2,Centy-m_Icon->h()/2,m_Icon->w(),m_Icon->h());
m_IconButton->box(FL_NO_BOX);
m_IconButton->image(m_Icon);
}
else
{
m_IconButton = NULL;
}
m_PluginWindow = PW;
if (m_PluginWindow)
@@ -115,7 +123,7 @@ int Fl_DeviceGUI::handle(int event)
{
int t=Fl_Group::handle(event);
if (m_IconButton->value())
if (m_IconButton && m_IconButton->value())
{
m_IconButton->value(false);
@@ -132,7 +140,7 @@ int Fl_DeviceGUI::handle(int event)
if (m_Minimised==false && !m_PluginWindow->visible())
{
Minimise();
m_IconButton->show();
if (m_IconButton) m_IconButton->show();
}
return 1;


+ 1
- 14
README View File

@@ -8,6 +8,7 @@ Public License (GPL). See the file COPYING.
Dependancies:
FLTK (www.fltk.org) If you build FLTK from source use
"./configure --enable-shared"
LADSPA plugins

Sound output can be provided by either OSS or JACK (and therefore alsa).

@@ -69,19 +70,5 @@ for any purpose. This software is provided "as is" without express
or implied warranty.
(Damage to ears, speakers or buildings are not my fault :))

Contributors of code large and small (in no particular order):
Yves Usson
Erik de Castro Lopo
Takashi Iwai
Nicolas Noble
Dr Bill Bland
Dan "Pawfal" Bethell
Fade of pawfal fame
Andy Preston
Mike Rawes
Joe Jones
Patrick Shirkey
Paul Davis

Dave Griffiths - dave@pawfal.org
www.pawfal.org

+ 10
- 1
SpiralSynthModular.C View File

@@ -887,7 +887,12 @@ istream &operator>>(istream &s, SynthModular &o)
// position the plugin window in the main window
//o.m_DeviceWinMap[ID]->m_DeviceGUI->GetPluginWindow()->position(px,py);
if (ps) o.m_DeviceWinMap[ID]->m_DeviceGUI->Maximise();
if (ps)
{
o.m_DeviceWinMap[ID]->m_DeviceGUI->Maximise();
// reposition after maximise
o.m_DeviceWinMap[ID]->m_DeviceGUI->position(x,y);
}
else o.m_DeviceWinMap[ID]->m_DeviceGUI->Minimise();
}

@@ -1068,6 +1073,10 @@ inline void SynthModular::cb_Save_i(Fl_Button* o, void* v)
TITLEBAR=LABEL+" "+fn;
m_TopWindow->label(TITLEBAR.c_str());
}
else
{
fl_message(string("Error saving "+string(fn)).c_str());
}
}
}
void SynthModular::cb_Save(Fl_Button* o, void* v)


Loading…
Cancel
Save