Browse Source

Initial revision

master
nebogeo 20 years ago
commit
b28fc01c02
100 changed files with 18608 additions and 0 deletions
  1. +196
    -0
      CHANGES
  2. +339
    -0
      COPYING
  3. +128
    -0
      Examples/BandpassShaper.ssm
  4. +78
    -0
      Examples/Feedback.ssm
  5. +121
    -0
      Examples/FourOsc.ssm
  6. +96
    -0
      Examples/Polyphonic.ssm
  7. +74
    -0
      Examples/Random.ssm
  8. +76
    -0
      Examples/Sequence.ssm
  9. +109
    -0
      Examples/SpiralSynth.ssm
  10. +205
    -0
      Examples/Tutorial1-FirstThing.ssm
  11. +133
    -0
      Examples/Tutorial2-Audio&CVs.ssm
  12. +129
    -0
      Examples/Tutorial3-SubtractiveSynth.ssm
  13. +110
    -0
      Examples/Tutorial4-AdditiveSynth.ssm
  14. +99
    -0
      Examples/Tutorial5-Matrix&Sampler.ssm
  15. +101
    -0
      Examples/Tutorial6-Sequencer.ssm
  16. +125
    -0
      Examples/Tutorial7-LADSPA.ssm
  17. +324
    -0
      Examples/Tutorial8-AdvSequencing.ssm
  18. BIN
      GUI/SSM.xcf
  19. +1961
    -0
      GUI/SSM.xpm
  20. +552
    -0
      GUI/SpiralIcon.xpm
  21. +510
    -0
      GUI/Widgets/Fl_Canvas.C
  22. +104
    -0
      GUI/Widgets/Fl_Canvas.h
  23. +93
    -0
      GUI/Widgets/Fl_CommentGUI.C
  24. +41
    -0
      GUI/Widgets/Fl_CommentGUI.h
  25. +214
    -0
      GUI/Widgets/Fl_DeviceGUI.C
  26. +107
    -0
      GUI/Widgets/Fl_DeviceGUI.h
  27. +23
    -0
      GUI/Widgets/Fl_DragBar.H
  28. +166
    -0
      GUI/Widgets/Fl_DragBar.cxx
  29. +180
    -0
      GUI/Widgets/Fl_DragBar.fld
  30. +40
    -0
      GUI/comment.xpm
  31. +555
    -0
      GUI/edit.xpm
  32. +954
    -0
      GUI/load.xpm
  33. +242
    -0
      GUI/new.xpm
  34. +843
    -0
      GUI/options.xpm
  35. +957
    -0
      GUI/save.xpm
  36. +192
    -0
      GraphSort.C
  37. +55
    -0
      GraphSort.h
  38. +264
    -0
      Makefile.in
  39. +63
    -0
      README
  40. +208
    -0
      SettingsWindow.C
  41. +60
    -0
      SettingsWindow.h
  42. +406
    -0
      SpiralSound/Midi.C
  43. +100
    -0
      SpiralSound/Midi.h
  44. +19
    -0
      SpiralSound/NoteTable.C
  45. +37
    -0
      SpiralSound/NoteTable.h
  46. +135
    -0
      SpiralSound/PluginManager.C
  47. +60
    -0
      SpiralSound/PluginManager.h
  48. +105
    -0
      SpiralSound/Plugins/AmpPlugin/AmpPlugin.C
  49. +57
    -0
      SpiralSound/Plugins/AmpPlugin/AmpPlugin.h
  50. +17
    -0
      SpiralSound/Plugins/AmpPlugin/AmpPlugin.pro
  51. +136
    -0
      SpiralSound/Plugins/AmpPlugin/AmpPluginGUI.C
  52. +62
    -0
      SpiralSound/Plugins/AmpPlugin/AmpPluginGUI.h
  53. +164
    -0
      SpiralSound/Plugins/AmpPlugin/Makefile.in
  54. +347
    -0
      SpiralSound/Plugins/AmpPlugin/SpiralIcon.xpm
  55. +102
    -0
      SpiralSound/Plugins/ComplexEnvelopePlugin/Bezier.C
  56. +43
    -0
      SpiralSound/Plugins/ComplexEnvelopePlugin/Bezier.h
  57. +233
    -0
      SpiralSound/Plugins/ComplexEnvelopePlugin/ComplexEnvelopePlugin.C
  58. +63
    -0
      SpiralSound/Plugins/ComplexEnvelopePlugin/ComplexEnvelopePlugin.h
  59. +19
    -0
      SpiralSound/Plugins/ComplexEnvelopePlugin/ComplexEnvelopePlugin.pro
  60. +369
    -0
      SpiralSound/Plugins/ComplexEnvelopePlugin/ComplexEnvelopePluginGUI.C
  61. +109
    -0
      SpiralSound/Plugins/ComplexEnvelopePlugin/ComplexEnvelopePluginGUI.h
  62. +172
    -0
      SpiralSound/Plugins/ComplexEnvelopePlugin/Makefile.in
  63. +327
    -0
      SpiralSound/Plugins/ComplexEnvelopePlugin/SpiralIcon.xpm
  64. +236
    -0
      SpiralSound/Plugins/ControllerPlugin/ControllerPlugin.C
  65. +53
    -0
      SpiralSound/Plugins/ControllerPlugin/ControllerPlugin.h
  66. +17
    -0
      SpiralSound/Plugins/ControllerPlugin/ControllerPlugin.pro
  67. +244
    -0
      SpiralSound/Plugins/ControllerPlugin/ControllerPluginGUI.C
  68. +90
    -0
      SpiralSound/Plugins/ControllerPlugin/ControllerPluginGUI.h
  69. +164
    -0
      SpiralSound/Plugins/ControllerPlugin/Makefile.in
  70. +352
    -0
      SpiralSound/Plugins/ControllerPlugin/SpiralIcon.xpm
  71. +141
    -0
      SpiralSound/Plugins/DelayPlugin/DelayPlugin.C
  72. +63
    -0
      SpiralSound/Plugins/DelayPlugin/DelayPlugin.h
  73. +17
    -0
      SpiralSound/Plugins/DelayPlugin/DelayPlugin.pro
  74. +72
    -0
      SpiralSound/Plugins/DelayPlugin/DelayPluginGUI.C
  75. +56
    -0
      SpiralSound/Plugins/DelayPlugin/DelayPluginGUI.h
  76. +166
    -0
      SpiralSound/Plugins/DelayPlugin/Makefile.in
  77. +341
    -0
      SpiralSound/Plugins/DelayPlugin/SpiralIcon.xpm
  78. +136
    -0
      SpiralSound/Plugins/DistributorPlugin/DistributorPlugin.C
  79. +57
    -0
      SpiralSound/Plugins/DistributorPlugin/DistributorPlugin.h
  80. +18
    -0
      SpiralSound/Plugins/DistributorPlugin/DistributorPlugin.pro
  81. +42
    -0
      SpiralSound/Plugins/DistributorPlugin/DistributorPluginGUI.C
  82. +48
    -0
      SpiralSound/Plugins/DistributorPlugin/DistributorPluginGUI.h
  83. +170
    -0
      SpiralSound/Plugins/DistributorPlugin/Makefile.in
  84. +328
    -0
      SpiralSound/Plugins/DistributorPlugin/SpiralIcon.xpm
  85. +125
    -0
      SpiralSound/Plugins/EchoPlugin/EchoPlugin.C
  86. +61
    -0
      SpiralSound/Plugins/EchoPlugin/EchoPlugin.h
  87. +17
    -0
      SpiralSound/Plugins/EchoPlugin/EchoPlugin.pro
  88. +135
    -0
      SpiralSound/Plugins/EchoPlugin/EchoPluginGUI.C
  89. +63
    -0
      SpiralSound/Plugins/EchoPlugin/EchoPluginGUI.h
  90. +166
    -0
      SpiralSound/Plugins/EchoPlugin/Makefile.in
  91. +341
    -0
      SpiralSound/Plugins/EchoPlugin/SpiralIcon.xpm
  92. +10
    -0
      SpiralSound/Plugins/Edit.sh
  93. +98
    -0
      SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPlugin.C
  94. +51
    -0
      SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPlugin.h
  95. +17
    -0
      SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPlugin.pro
  96. +73
    -0
      SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPluginGUI.C
  97. +54
    -0
      SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPluginGUI.h
  98. +168
    -0
      SpiralSound/Plugins/EnvFollowerPlugin/Makefile.in
  99. +321
    -0
      SpiralSound/Plugins/EnvFollowerPlugin/SpiralIcon.xpm
  100. +188
    -0
      SpiralSound/Plugins/EnvelopePlugin/EnvelopePlugin.C

+ 196
- 0
CHANGES View File

@@ -0,0 +1,196 @@
Release 0.1.1

Main app changes:

Back to one window GUI with seperate movable areas
Fixed Plugin window events/drawing bug
Echo/Delay crash bug fix
Less C code in SpiralSynthModular.C (Andy Preston)
Ability to load ssm files from command line (Dan Bethell)
gcc3.1 fixes + dynamic linking bugfix (Takashi Iwai)
configure + make fixes (Takashi Iwai)
configure option --with-plugindir=xxx added (Takashi Iwai)

Plugin changes:

LFOPlugin (Andy Preston)
MeterPlugin (Andy Preston)
StereoMixerPlugin fix (Andy Preston)
Scaling fix and name sorting for the LADSPAPlugin (Mike Rawes)
Sequencer bugfix for dragging note events
Matrix now 64X24 + tweaked GUI
Matrix can be controlled by an external clock pulse
Matrix copy/paste and transpose functionality (Andy Preston)
JackPlugin fixed for recent versions of jack (Takashi Iwai)

Release 0.1.0

Main app changes:

New GUI code, main app window has now become the editor window, with a new
window for plugin dialogues. (build fltk with ./configure --enable-shared)
New default theme.
New load/save system for external files like samples. (external files stored
in a directory)
configure fixes (Takashi Iwai)
ppc fix (Takashi Iwai)
gcc 3 fixes (Takashi Iwai)
wav loading fixes
Graph sorted node execution order to remove internal latency.

Plugin changes:
Scope plugin bugfix
DistributorPlugin (Fade)
JoystickPlugin (Bill Bland)

Release 0.0.9 Thursday Febuary 14 2002

Main app changes:

Right click plugin menu
More error boxes, all asserts out of SSM app, better recovery from bad files
Audio engine can now be run in callback mode for plugins like the JackPlugin
Options save (Bill Bland)

Plugin changes:

PoshSampler, with loop points, editing and dirty timestretching
ComplexEnvelope, describe envelopes with arbitary lines or Bezier curves
MidiPlugin updated to support all controller channels, with multiple ports
Rewritten the midi parser
Controller plugin save problem fixed
Matrix stream out leaner
SpiralLoopPlugin Close file dialog crash fixed
StreamPlugin crash on mono wavs fixed

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Release 0.0.8 Thursday Febuary 14 2002

Main app changes:

All plugin communication now in 32bit floating point.
New configure/make system (Erik de Castro Lopo)
Warning and error dialogs
FLTK 1.1.0 supported (Takashi Iwai)
gcc-3 fixes (Takashi Iwai)
Proper tooltips implemented
Options GUI
Crash bug fix

Plugin changes:

OSS output now does input, and with duplex - simultaneous i/o.
StreamPlugin
XFadePlugin
SpiralLoopPlugin

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Release 0.0.7 Tuesday November 21 2001.

Main app changes:

Wavfile fix for PPC machines. (Yves Usson)
PNG fix for images with an alpha channel. (Yves Usson)
All windows are now double buffered by default.
Misc gui tweaks

Plugin changes:

RiffWav loader attempts to decode non standard wavs
Ladspa plugin should compile whether ladspa is installed or not.
SampleHoldPlugin (Yves Usson)
NoteSnapPlugin
WaveShaperPlugin GUI updated. (Yves Usson)
AmpPlugin GUI updated. (Yves Usson)
Sampler plugin streams paths with spaces properly.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Release 0.0.6 Wednesday October 31 2001.

Main app changes:

Put a version number in the .SpiralSynthModular, so there's no need
to break the file format again.
Basic theme support - png loading needs libpng
Clear first buffer to stop noise on startup.
Different samplerates should be handled properly now.
RiffWav rewritten - automatically mixes stereo wavs into mono.
Deals with header much better, stores samplerate etc.

Plugin changes:

Output : Buffer size now handled correctly (Fragment settings in .rc file).
SeqSelector : Should always loop now.
SamplerPlugin : Individual sample outputs added.
SamplerPlugin : Pitch takes samplerate into account.
SequencerPlugin : Speed takes samplerate into account.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Release 0.0.5 Thursday October 20 2001.

Main app changes:

Plugin Tooltips
Layout text comments
Toolbox GUI sorted
Low level optimisation begun, to stop processing silent sample buffers.
Removed asserts from low level sample code (only for releases).
Removed tons of old SpiralSynth legacy code and dependancies.
File confirmation added.

Plugin changes:

WaveShaper Plugin added (thx to Yves Usson)
SeqSelector GUI finished
Oscillator & Wavetable octave fix (Yves Usson)
Oscillator, Echo and envelope GUI additions (Yves Usson)
Envelope plugin bug fixed (warning volume will need to be increased on saved layouts)
Controller plugin now much more versatile.
LADSPA plugin
Moog filter optimised
SVF filter optimised
Splitter plugin now has 4 outputs

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Release 0.0.4 Thursday September 13 2001.

Main app changes:

Crash bugs related to deleting of devices located and fixed.
Big endian PPC support back in.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Release 0.0.3 Monday September 10 2001.

Main app changes:

Fixed an include problem that some people were getting.
Added functionality for plugind to change their device
properties while running.

Plugin changes:

Sequencer Plugin finished, records note CV input, and can hold up to 16
different patterns.
Added the SeqSelecta, which can be used to step through patterns on the
sequencer or matrix plugins.
WaveTableOsc plugin - Sine, Square, Saw, InvSaw, Triangle, 2 Pulse and InvSine
waveshapes generated. Should be much faster than the old oscillator, but with
less modulation options.
Oscillator optimisations.
Improved the delay plugin (now linearly interpolated)
Sampler plugin now pitches samples offset from their input frequency,
for tuning of samples used in melodies.
Output no longer exits if it can't open the soundcard,
wav recording is still enabled.
Midi device wasn't opening the file in .SpiralSynthModular - fixed.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

First release 0.0.2 Monday July 2 2001.

+ 339
- 0
COPYING View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.

When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.

We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and
modification follow.

GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.

c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

Appendix: How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.

<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

+ 128
- 0
Examples/BandpassShaper.ssm View File

@@ -0,0 +1,128 @@
SpiralSynthModular File Ver 3
253 149 724 420 253 501 724 420
SectionList
23

Device 0 Plugin 0
873 153 0 76 47


Device 1 Plugin 13
523 78 0 76 47
1 1 0.36389

Device 2 Plugin 13
522 150 0 76 47
1 1 0.38383

Device 3 Plugin 13
525 223 0 76 47
1 1 0.36274

Device 7 Plugin 6
420 102 0 0 0


Device 8 Plugin 6
455 189 0 0 0


Device 12 Plugin 7
611 156 0 76 47
1 1 1 1 1

Device 13 Plugin 8
783 153 0 76 47
1 1 0.5 1 0.5 1 0.5 1 0.5

Device 16 Plugin 1
697 153 1 445 67


Device 17 Plugin 23
276 198 1 186 73
1 0 -3 0.0258332 1

Device 18 Plugin 23
340 262 1 180 205
1 0 -3 0.00586802 1

Device 19 Plugin 23
410 331 1 432 205
1 0 -3 0.0843751 1

Device 20 Plugin 3
184 100 1 103 83
3 1 -0.42 1
1
4
Name -1 1 0.71


Device 21 Plugin 23
267 98 0 76 47
1 0 -2 0.187005 1

Device 22 Plugin 23
337 100 0 76 47
1 2 -3 0.325557 1

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


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


Device 25 Plugin -1
196 78 0 0 0
1 26 Change this to alter pitch


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


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


Device 28 Plugin -1
625 125 0 0 0
1 27 the frequencies as colours.


Device 29 Plugin -1
248 330 0 0 0
1 39 These oscillators change the modulation


Device 30 Plugin -1
202 345 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


+ 78
- 0
Examples/Feedback.ssm View File

@@ -0,0 +1,78 @@
SpiralSynthModular File Ver 3
314 503 724 461 238 186 724 420
SectionList
14

Device 0 Plugin 0
612 241 0 100 100


Device 2 Plugin 4
348 109 1 95 160
1 2 2 0.0149791 0.53 0 0.019 0.299

Device 4 Plugin 6
240 254 0 0 0


Device 5 Plugin 1
419 246 1 349 157


Device 7 Plugin 9
276 109 1 447 33
1 0.1132 0.0377

Device 8 Plugin 9
420 109 1 448 291
1 1.1698 0.566

Device 12 Plugin 8
520 239 0 100 100
1 0.27 0.5 0.8 0.5 1 0.5 1 0.5

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


Device 14 Plugin -1
198 49 0 0 0
1 27 from one plugin to another.


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


Device 16 Plugin -1
232 63 0 0 0
1 41 Feedback generates quite a chaotic sound,


Device 17 Plugin -1
221 76 0 0 0
1 36 try changing some of the parameters.


Device 18 Plugin 23
200 109 1 95 47
1 0 -3 0.158165 1

Device 19 Plugin 23
491 108 1 92 274
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


+ 121
- 0
Examples/FourOsc.ssm View File

@@ -0,0 +1,121 @@
SpiralSynthModular File Ver 3
134 396 750 484 601 192 724 420
SectionList
21

Device 0 Plugin 4
443 77 1 84 7
1 2 0 1.47687 0 0 0 1

Device 1 Plugin 4
445 11 1 84 119
1 2 -1 0.960617 0 0 1.17928e-38 1

Device 2 Plugin 4
442 144 1 84 232
1 2 0 0.733381 0.23 0 2.2772e-38 1

Device 3 Plugin 4
442 212 1 84 345
1 2 0 0.983196 0.87 0 0 1

Device 4 Plugin 8
729 107 0 100 100
1 1 0.5 1 0.5 1 0.5 1 0.5

Device 5 Plugin 7
593 106 0 100 100
1 1 1 1 1

Device 6 Plugin 13
662 107 1 539 157
1 0.0943 0.07142

Device 8 Plugin 0
799 105 0 100 100


Device 9 Plugin 2
157 127 0 100 100
2 0 0 0


Device 10 Plugin 6
282 118 0 0 0


Device 13 Plugin 6
202 241 0 0 0


Device 14 Plugin 5
442 281 1 529 22
1 0.3844 0.1156 0.91 2.1609 0.5 0.01

Device 15 Plugin 6
282 186 0 0 0


Device 18 Plugin 5
513 214 1 331 345
1 0.8281 3.2761 0 0 0.5 0.01

Device 19 Plugin 5
513 145 1 331 234
1 0.6241 0.3249 0 0 0.5 0.01

Device 20 Plugin 5
512 79 1 330 122
1 0.7225 1.8496 0 1 0.5 0.01

Device 21 Plugin 5
514 11 1 332 9
1 0.0529 2.6896 0 0 0.5 0.01

Device 22 Plugin 7
512 284 1 417 208
1 1.47 0.07 1 1

Device 24 Plugin -1
216 36 0 0 0
1 42 A fairly complicated synth, 4 oscillators,


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


Device 26 Plugin 23
446 347 1 486 344
1 0 0 0.457092 1

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


+ 96
- 0
Examples/Polyphonic.ssm View File

@@ -0,0 +1,96 @@
SpiralSynthModular File Ver 3
283 72 724 482 284 586 724 420
SectionList
16

Device 0 Plugin 86
279 121 0 0 0


Device 1 Plugin 2
205 117 0 36 100
2 0 0 0


Device 2 Plugin 23
372 242 1 97 350
1 0 0 1 1

Device 3 Plugin 23
373 51 1 98 15
1 0 0 1 1

Device 4 Plugin 23
372 114 1 97 127
1 0 0 1 1

Device 5 Plugin 23
373 179 1 97 238
1 0 0 1 1

Device 6 Plugin 5
439 245 1 344 349
1 0 0.5 1 1 0.5 0.01

Device 7 Plugin 5
439 181 1 344 237
1 0 0.5 1 1 0.5 0.01

Device 8 Plugin 5
439 115 1 344 126
1 0 0.5 1 1 0.5 0.01

Device 9 Plugin 5
441 52 1 344 15
1 0 0.5 1 1 0.5 0.01

Device 10 Plugin 8
515 125 1 491 147
1 1 0.5 1 0.5 1 0.5 1 0.5

Device 11 Plugin 0
580 139 0 36 100


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


Device 13 Plugin -1
215 44 0 0 0
1 24 a polyphonic synthesizer


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


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


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


+ 74
- 0
Examples/Random.ssm View File

@@ -0,0 +1,74 @@
SpiralSynthModular File Ver 3
259 103 724 420 362 504 906 420
SectionList
13

Device 3 Plugin 0
772 162 0 100 100


Device 5 Plugin 5
560 161 1 530 87
1 0.0289 0.3249 0 0 0.51 0

Device 7 Plugin 8
702 162 0 100 100
1 1 0.5 1 0.5 1 0.5 1 0.5

Device 9 Plugin 14
631 162 1 376 21
1 0.396 0.62

Device 12 Plugin 13
491 162 1 380 141
1 1 0.43934

Device 20 Plugin 4
217 68 1 100 100
1 3 -3 0.119661 0.5 0 2.98023e-09 1

Device 25 Plugin -1
485 102 0 0 0
1 37 A design that generates random events


Device 26 Plugin 51
327 104 0 0 0


Device 27 Plugin 23
152 160 1 99 16
1 0 1 0.0326008 1

Device 28 Plugin 6
231 160 0 0 0


Device 29 Plugin 23
419 161 1 99 138
1 1 -3 0.933262 1

Device 30 Plugin 4
217 251 1 100 100
1 3 0 1 0.5 0 1.70555e-38 1

Device 31 Plugin 51
328 218 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


+ 76
- 0
Examples/Sequence.ssm View File

@@ -0,0 +1,76 @@
SpiralSynthModular File Ver 3
314 503 724 461 238 186 724 420
SectionList
10

Device 0 Plugin 18
159 82 1 111 149
2 0 0.0459186 21 1 0
32 6.6 3
1 1 7 1 13 1 15 1 19 1 23 1 25 1 29 1 30 3 0 4 2 4 6 4 10 4 12 4 14 4 18 4 20 4 24 4 28 4 31 6 4 11 8 11 16 11 22 11 26 11 -1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1

Device 1 Plugin 4
252 59 1 119 34
1 2 1 1 0.21 0 nan 1

Device 2 Plugin 0
629 79 0 100 100


Device 3 Plugin 8
557 79 0 100 100
1 0.39 0 0.36 1 1 0.5 1 0.5

Device 4 Plugin 14
472 51 0 100 100
1 0.321 0.31

Device 5 Plugin 13
330 83 1 382 35
1 0 0.37002

Device 7 Plugin 5
252 128 1 512 36
1 0.0121 0.16 0 0 0.92 0

Device 8 Plugin 6
403 83 0 0 0


Device 9 Plugin 14
473 119 0 100 100
1 0.34 0.31

Device 11 Plugin -1
396 224 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


+ 109
- 0
Examples/SpiralSynth.ssm View File

@@ -0,0 +1,109 @@
SpiralSynthModular File Ver 3
129 183 990 413 500 456 724 420
SectionList
19

Device 0 Plugin 2
144 177 0 103 22
2 0 0 0


Device 1 Plugin 4
377 215 0 101 247
1 2 -1 1 0 0 0 1

Device 2 Plugin 4
375 147 0 103 134
1 2 0 0.992771 0 0 0 1

Device 3 Plugin 4
375 79 0 103 20
1 2 1 1 0.5 0 0 1

Device 4 Plugin 6
306 81 0 0 0


Device 6 Plugin 7
519 149 0 500 124
1 0.77 0.67 0.31 1

Device 7 Plugin 13
591 148 0 495 11
1 0.6981 0.34483

Device 8 Plugin 5
446 215 0 350 248
1 0 0.9216 0.45 1 0.42 0.01

Device 9 Plugin 5
447 147 0 350 134
1 0 0.3844 0.08 1 0.5 0.01

Device 10 Plugin 5
447 80 0 351 19
1 0 0.9216 1 1.4161 0.28 0.01

Device 11 Plugin 6
249 178 0 0 0


Device 13 Plugin 5
517 213 0 604 130
1 0.9216 0.2601 0 3.0625 0.6 0.01

Device 15 Plugin 14
662 149 0 618 11
1 0.377 0.39

Device 17 Plugin 8
804 151 0 103 22
1 1 0.5 1 0.5 1 0.5 1 0.5

Device 18 Plugin 0
876 149 0 751 11


Device 19 Plugin 4
305 12 0 720 256
1 2 -3 0.0167674 0.5 0 0 1

Device 20 Plugin 1
733 150 0 496 252


Device 21 Plugin 20
234 83 0 103 22
1 0.114 0.151

Device 22 Plugin -1
367 282 0 0 0
1 63 SpiralSynth, with a moog filter. (and stuck in monophonic mode)


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


+ 205
- 0
Examples/Tutorial1-FirstThing.ssm View File

@@ -0,0 +1,205 @@
SpiralSynthModular File Ver 3
288 90 724 420 291 544 724 420
SectionList
40

Device 0 Plugin -1
371 24 0 0 0
1 36 Tutorial 1 - First principles of SSM


Device 1 Plugin -1
371 40 0 0 0
1 90 This is a comment, click somewhere in the middle of me to move me, right click to edit me.


Device 2 Plugin 0
541 115 1 493 101


Device 3 Plugin 23
216 115 1 178 106
1 0 0 1 1

Device 4 Plugin -1
230 81 0 0 0
1 31 The simplest noisemaking layout


Device 5 Plugin -1
230 81 0 0 0
1 31 The simplest noisemaking layout


Device 6 Plugin -1
254 93 0 0 0
1 41 A sinewave generating wavetable plugin...


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


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


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


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


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


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


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


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


Device 24 Plugin 2
198 286 0 158 214
2 0 0 0


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


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


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


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


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


Device 31 Plugin -1
266 264 0 0 0
1 44 Controlling the sound with MIDI/PC keyboard.


Device 32 Plugin -1
389 337 0 0 0
1 50 To change the pitch of the tone, press keys in the


Device 35 Plugin -1
389 362 0 0 0
1 51 to have midi, just bash those black and white keys.


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


Device 38 Plugin 5
401 470 1 313 235
1 0.0529 0.8281 0 0 0.5 0.01

Device 39 Plugin -1
386 394 0 0 0
1 103 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


Device 40 Plugin -1
168 421 0 0 0
1 3 (3)


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


Device 42 Plugin -1
242 491 0 0 0
1 47 Connect this to the WaveTable's output ------->


Device 43 Plugin -1
270 466 0 0 0
1 33 Connect this to the second output


Device 44 Plugin -1
277 478 0 0 0
1 33 down on the Midi plugin. ------->


Device 45 Plugin -1
518 488 0 0 0
1 34 <------ Connect this to one of the


Device 46 Plugin -1
529 501 0 0 0
1 20 OSS plugin's inputs.


Device 47 Plugin -1
398 547 0 0 0
1 65 The layout will now look a little messy, but should now cause the


Device 48 Plugin -1
405 560 0 0 0
1 67 sound to appear and then slowly die away after a note is triggered.


Device 49 Plugin -1
420 573 0 0 0
1 74 Try changing the [A]ttack [D]ecay [S]ustain and [R]elease of the envelope.


Device 51 Plugin -1
325 447 0 0 0
1 73 Click on the WaveTable's output port, so the first connection is deleted.


Device 52 Plugin -1
394 532 0 0 0
1 55 Now hit a key. (In the midi plugin window if necessary)


Device 53 Plugin -1
387 349 0 0 0
1 47 main window on your PC keyboard, or if you are


1
3 3 0 2 2 0


+ 133
- 0
Examples/Tutorial2-Audio&CVs.ssm View File

@@ -0,0 +1,133 @@
SpiralSynthModular File Ver 3
288 90 724 420 292 545 724 420
SectionList
25

Device 2 Plugin 0
631 196 1 539 111


Device 3 Plugin 23
236 103 1 104 120
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
1 0.0529 0.8281 0 0 0.5 0.01

Device 53 Plugin 1
312 186 0 100 100


Device 55 Plugin 1
382 103 0 100 100


Device 56 Plugin 1
512 104 0 100 100


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


Device 59 Plugin -1
371 -16 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
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


Device 65 Plugin -1
199 33 0 0 0
1 32 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.


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).


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


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


Device 71 Plugin -1
168 327 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.


Device 74 Plugin 1
543 196 0 100 100


Device 75 Plugin -1
537 181 0 0 0
1 7 Scope 4


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


+ 129
- 0
Examples/Tutorial3-SubtractiveSynth.ssm View File

@@ -0,0 +1,129 @@
SpiralSynthModular File Ver 3
401 127 724 420 402 579 724 420
SectionList
24

Device 0 Plugin 23
263 170 1 99 99
1 3 0 1 1

Device 1 Plugin 2
175 194 0 115 69
2 0 0 0


Device 2 Plugin 5
264 238 1 335 227
1 0.0289 0.16 0.08 1.0404 0.58 0.01

Device 3 Plugin 13
379 171 1 349 100
1 0 0.37137

Device 4 Plugin 0
628 171 0 593 69


Device 6 Plugin 1
484 171 1 472 93


Device 7 Plugin -1
382 10 0 0 0
1 17 Tutorial design 2


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


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


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


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


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


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


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


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


Device 17 Plugin -1
332 50 0 0 0
1 73 This synth uses what is known as subtractive synthesis to produce sounds.


Device 19 Plugin -1
333 65 0 0 0
1 81 The heart of a subtractive synths is the filter, as it is what the filter removes


Device 20 Plugin -1
236 80 0 0 0
1 32 that dictates the sound produced


Device 21 Plugin -1
348 95 0 0 0
1 81 The waveshape the oscillator uses should contain as many frequencies as possible,


Device 22 Plugin -1
348 110 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 25 Plugin 6
561 171 0 0 0


Device 28 Plugin -1
339 352 0 0 0
1 79 This is how many of the first analogue synths worked, such as the moogs - hence


Device 29 Plugin -1
223 366 0 0 0
1 32 the use of the moog filter here.


Device 30 Plugin -1
238 317 0 0 0
1 29 Triggered by keypress events.


8
1 1 0 0 0 0
1 1 1 2 2 0
2 2 0 3 3 1
0 0 0 3 3 0
3 3 0 6 5 0
6 5 0 25 20 0
25 20 0 4 4 0
25 20 1 4 4 1


+ 110
- 0
Examples/Tutorial4-AdditiveSynth.ssm View File

@@ -0,0 +1,110 @@
SpiralSynthModular File Ver 3
401 127 724 420 402 579 724 420
SectionList
20

Device 0 Plugin 1
495 175 1 477 128


Device 1 Plugin 0
629 174 0 100 100


Device 2 Plugin 6
562 175 0 0 0


Device 3 Plugin 23
219 175 1 95 14
1 0 2 0.421244 1

Device 4 Plugin 23
357 175 1 90 259
1 0 -3 1 1

Device 5 Plugin 5
289 165 1 143 134
1 0 0.3249 0.96 1 1 0.01

Device 6 Plugin 5
426 165 1 328 136
1 0.0289 0.4624 0.26 1 0.5 0.01

Device 7 Plugin 2
149 175 0 100 100
2 0 0 0


Device 8 Plugin 6
200 93 0 0 0


Device 9 Plugin -1
362 11 0 0 0
1 31 Tutorial 3 - Additive Synthesis


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


Device 11 Plugin -1
357 44 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 241 0 0 0
1 10 Envelope 1


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


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


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


Device 18 Plugin -1
212 58 0 0 0
1 28 frequency modulation, or FM.


Device 19 Plugin -1
337 72 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 246 0 0 0
1 12 Oscillator 1


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


11
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
7 7 1 8 8 0
8 8 1 5 5 0
8 8 0 6 6 0
7 7 0 3 3 0
5 5 1 4 4 0


+ 99
- 0
Examples/Tutorial5-Matrix&Sampler.ssm View File

@@ -0,0 +1,99 @@
SpiralSynthModular File Ver 3
225 58 903 467 306 558 724 420
SectionList
12

Device 1 Plugin 0
556 127 0 100 100


Device 2 Plugin 18
230 98 1 86 49
2 0 0.127474 17 1 0
32 5.4 0
0 0 2 0 4 0 6 0 8 0 10 0 12 0 14 0 16 0 18 0 20 0 22 0 24 0 26 0 28 0 30 0 4 1 12 1 20 1 28 1 0 2 8 2 16 2 24 2 -1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1 32 1 0
-1

Device 3 Plugin 16
316 97 1 634 10
2 1 1 4 None 0
1 1 4 None 1
1 1 4 None 2
1 1 4 None 3
1 1 4 None 4
1 1 4 None 5
1 1 4 None 6
1 1 4 None 7


Device 4 Plugin 6
481 128 0 0 0


Device 5 Plugin -1
358 21 0 0 0
1 31 Tutorial 4 - Matrix and Sampler


Device 6 Plugin -1
364 36 0 0 0
1 99 This design won't produce sound by itself, you'll have to load some samples into the sampler first.


Device 7 Plugin -1
342 50 0 0 0
1 83 Open the sampler plugin window and load up samples (wav format) from your hardrive.


Device 8 Plugin -1
375 65 0 0 0
1 105 Hihat for the first sample, kickdrum and snare for the others (not that it really matters what they are).


Device 9 Plugin -1
386 311 0 0 0
1 104 This represents a very common combination of plugins in ssm, the matrix and sampler. This design is used


Device 10 Plugin -1
361 325 0 0 0
1 92 mainly creating drum loops. Open the matrix and change the trigger notes to change the beat.


Device 11 Plugin -1
395 339 0 0 0
1 108 If you move your mouse over the two columns of ports on the matrix and sampler, you'll see that the triggers


Device 12 Plugin -1
256 353 0 0 0
1 49 are connected up to fire the samples off. Simple!


11
4 3 0 1 0 0
4 3 1 1 0 1
3 2 0 4 3 0
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


+ 101
- 0
Examples/Tutorial6-Sequencer.ssm View File

@@ -0,0 +1,101 @@
SpiralSynthModular File Ver 3
291 68 724 461 289 564 724 420
SectionList
15

Device 0 Plugin 23
300 144 0 100 100
1 3 0 1 1

Device 1 Plugin 2
152 170 0 100 100
2 0 0 0


Device 2 Plugin 5
299 208 0 100 100
1 0.0529 0.8281 0.49 0.3844 0.5 0.01

Device 3 Plugin 13
367 153 1 350 26
1 0 0.30583

Device 4 Plugin 0
628 151 0 100 100


Device 6 Plugin 1
498 151 1 105 19


Device 25 Plugin 6
563 151 0 0 0


Device 31 Plugin 14
432 152 1 491 28
1 0.321 0.56

Device 32 Plugin 17
222 162 1 107 147
2 1.73101 8.82 1 1 0 0 EventMap 1 2 0 10 50 1 8.82 86 0 100 8 19 5.48 63 0.1 1 5.96 66 0.1 1 6.4 70 0.14 1 6.92 63 0.14 1 7.46 66 0.14 1 7.94 70 0.2 1 0.1 63 0.14 1 0.46 66 0.1 1 0.86 70 0.1 1 1.5 63 0.2 1 2.14 66 0.14 1 2.58 70 0.2 1 3.74 63 0.1 1 4.02 66 0.14 1 4.46 70 0.14 1 8.34 39 0.2 1 1.24 39 0.14 1 3 46 0.3 1 4.86 42 0.2 1
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0
EventMap 1 1 0 10 100 1 2 0 0 100 8 0

Device 33 Plugin -1
357 33 0 0 0
1 32 Tutorial 5 - Using the sequencer


Device 34 Plugin -1
368 58 0 0 0
1 96 This is the same synth design as in tutorial 2, but with a sequencer controlling it's behavoiur.


Device 35 Plugin -1
364 72 0 0 0
1 93 (and some echo) This sequencer is quite different to the matrix, in that it is much better at


Device 36 Plugin -1
374 86 0 0 0
1 96 playing back melodies. The sequencer also records input, so keys you press while the midi plugin


Device 37 Plugin -1
358 100 0 0 0
1 89 is connected, will be played back. Open up the Sequencer plugin and scroll the piano roll


Device 38 Plugin -1
363 113 0 0 0
1 87 down, you should see the events. These can be moved, deleted or resized with the mouse.


11
2 2 0 3 3 1
0 0 0 3 3 0
6 5 0 25 6 0
25 6 0 4 4 0
25 6 1 4 4 1
3 3 0 31 7 0
31 7 0 6 5 0
1 1 0 32 8 2
1 1 1 32 8 3
32 8 0 0 0 0
32 8 1 2 2 0


+ 125
- 0
Examples/Tutorial7-LADSPA.ssm View File

@@ -0,0 +1,125 @@
SpiralSynthModular File Ver 3
291 68 724 461 289 564 724 420
SectionList
19

Device 0 Plugin 23
279 186 1 100 100
1 3 1 1 1

Device 1 Plugin 2
160 215 0 100 100
2 0 0 0


Device 2 Plugin 5
280 251 1 481 220
1 0.0036 0.3844 0 0.1156 0.5 0.01

Device 3 Plugin 13
347 187 1 350 100
1 0.3208 0.26683

Device 4 Plugin 0
638 187 0 100 100


Device 25 Plugin 6
487 157 0 0 0


Device 31 Plugin 6
212 144 0 0 0


Device 32 Plugin 5
413 144 1 482 101
1 0 0.0784 1 0.2601 0.43 0.01

Device 33 Plugin 22
571 187 0 415 148
2 0.714 /usr/local/lib/ladspa/cmt.so freeverb3 8 -1 -1 -1 0 0 0 0 0 1 1 1 1 1 1 1 1

Device 34 Plugin 3
435 245 1 95 215
3 6 -0.06 0.78 -0.52 0.5 0.22 0.82 1
6
6
Freeze -1 1 0.53
4
Room -1 1 0.11
4
Damp -1 1 0.76
3
Wet -1 1 0.25
3
Dry -1 1 0.39
5
Width -1 1 0.09


Device 35 Plugin -1
374 13 0 0 0
1 33 Tutorial 6 - Using LADSPA Plugins


Device 36 Plugin -1
375 29 0 0 0
1 71 If you have LADSPA installed, the plugins should be fully connected up.


Device 37 Plugin -1
377 43 0 0 0
1 36 If not, then this won't work at all.


Device 38 Plugin -1
566 171 0 0 0
1 10 (FreeVerb)


Device 40 Plugin -1
370 72 0 0 0
1 82 This shows you how you can set up the CV slider plugin to control a LADSPA plugin.


Device 41 Plugin -1