** SpiralSynth ** Last changed Saturday 2 December 2000. SpiralSynth is open source software, distributed under the General Public License (GPL). See the file COPYING. SpiralSynth is a polyphonic analogue softsynth. It should work on i386 or big-endian hardware running Linux or FreeBSD. It is currently in a sort of pre beta state (and probably always will be ;). It uses the OSS /dev/dsp driver, (although this is configurable) and the GUI it uses is FLTK (www.fltk.org). The (PC) Keyboard can be used to play the synth, "q" & "z" are C, and the keys progess from there, ie "2" is C#, "w" is D etc. These are just the defaults, and can be changed from the .Spiralrc file. The F keys change the octave. More functionality comes from the midi interface, such as velocities, pitchbend and other parameters. To build the source type: ./configure make Copy the file .SpiralPatches.bank to your home directory, if you want some example patches to play with. The GUI requires FLTK to be installed (www.fltk.org), Which may in turn require Mesa or OpenGL to link correctly. If you have SpiralLoops, you can build SpiralSynth as a plugin. Uncomment the #define PLUGIN at the top of the Synth.cpp file, and link with the -shared option. Specs: You don't have to understand any of this to play SpiralSynth, you can tweak it purely based on the sounds you make - but if your interested in techy synth specs: 3 ocillators. Capable of Pulse/Square, Tri/Sawtooth and Noise (with sample & hold) waveforms. Each oscillator has it's own envelope generator. 2 mixers connect the oscillators together, with a ring or cross modulation option. 1 resonant low pass filter. 1 delay effect. An Envelope and LFO can modulate oscillator 1 or 2's pitch or pulsewidth, or the filter's cutoff or resonance each. MIDI interface, (works on my Roland PC-160A Keyboard - I can't vouch for anything else). Note velocity and pitchbend is catered for. The filter's cutoff can be controlled with midi via the general midi "reverb send level" or control code 91 (effect 1). The idea is to make all the controls midi, at some point. The oscillators have independant portmento, for super wierd effects. Move the PM slider up to make the response slide with the keyboard presses. Move the slider to the bottom to turn it off completely. Portmento will also effect any frequency modulation on the oscillator. Using this with sample and hold is quite fun. Cross modulation is really frequency modulation, or FM. It modulates one source's frequency with the other source. When enabled on mixer 1, oscillator 2's frequency is changed using oscillator 1. On mixer 2, oscillator 3 is modulated by the output of mixer 1. (phew) It can be used to create a whole different set of sounds. Ths kind of thing is really additive synthesis, and shouldn't really be on an analogue synth, but I don't care! Unlimited polyphony. You can play as many notes at once as your CPU will allow. Meaning of Oscillator sliders: PW = PulseWidth SH = Sample and hold PM = Portmento depth Wav file output is availible, click on the Record button in the output window to choose a filename to save to. All the synth's output will be written directly to disk until record is turned off. You can also save your sounds as patch information, so you don't have to lose sounds as you tweak the synth. There are 100 save slots, selected by the buttons and dial at the bottom of the Spiral Synth window. There is also a randomise button, which scrambles all the settings on the control panel. Changing the config settings: You can edit .Sprialrc (in your home directory), to change the settings of the synth. SpiralSynth resource file BufferSize = 512 - Size of the buffer in samples, lower no. - lower latency Samplerate = 44100 - Sample rate WantMidi = 1 - Set this to 0 to disable midi input checking FilterGranularity = 50 - Updates the filter dynamics every 50 samples Output = /dev/dsp - The output device file Midi = /dev/midi - The Midi input device file WantRealtimeOut = 1 - Use this to disable the soundcard output KeyMap = zsxdcvgbhnjmq2w3er5t6y7ui9o0p[ Polyphony = 3 - The number of voices the synth can play at once The keymap defines the keys to note mapping. Two and a half octaves are availible, starting from a C. For example, the keymap for a French keyboard goes as follows: KeyMap = wsxdcvgbhnjma2z3er5t6y7ui9o0p] Todos: * More realtime midi controllers. * Wav file input, so you can load your own oscillator waveforms. Disclaimer: No representations are made about the suitability of this software for any purpose. This software is provided "as is" without express or implied warranty. (Damage to ears, speakers or buildings are not my fault :)) Dave Griffiths - dave@pawfal.org www.pawfal.org