Posted on Leave a comment

Supercollider MIDI Synth for Flesh MIDI Mod

The Supercollider project is available here
In order for this program to work with an external MIDI device, a MIDI input port must be available on the host computer.

The synth engine, looper, routing, and ‘other’, sections of the Supercollider software synthesizer program are described below.

Synthesizer Engine

The main synthesizer engine is built using the standard Supercollider 3 unit generators. Unit generators in this case are sound sources such as sine waves, square waves, and triangular waves. The user can choose 3 different (although similar in sound) synthesizers from the pull down menu at the top of the user interface (GUI). Each selection uses a different combination of three unit generators to make a sound.

The sounds are based on the idea that the mid and high frequency sounds should be powerful (almost harsh), and the low frequencies should be full and round. With this goal in mind, the mid and high frequencies were generated using square waves, sawtooth waves and triangular waves, while the low frequencies are generated using sine waves.

The frequency of the unit generators can be tuned via the GUI. The default (recommended) setting takes the frequency input and applies it to the first and highest frequency unit generator. This frequency is divided by 2 and used to control the second unit generator. The highest frequency is again divided, but this time by the same factor used to get the second sound (2) plus another division factor (in the default case 2, again). So, the third unit generator is controlled with the original frequency input divided by 2+2, or 4. The values for division factors can be modified via the GUI.

The output of this full frequency sound runs through several stages of filtering before getting to the users ears. Most important of these filters includes two pitch shifters, and a Moog filter. One of the pitch shifters takes in a random noise generator as it’s pitch ratio. This means that the pitch of the synth with change randomly at a very high rate when this filter is on. The result is a low frequency, unpredictable rumble, that ends up sounding something like a low quality tape recording. The sound also runs directly through another pitch shifter. This pitch shifter is used to slightly detune the synth engine. When the Supercollider pitch shifter is used to detune the engine, it dulls the sound a bit and take off some of the harshness of the high frequencies. This is not a normal effect of pitch shifters, and was found by experimentation. Finally, the sound is sent through a Moog filter, which just sounds good.

Looper

The looper reads in a sound file from the computers hard drive, and stores it in a buffer. When one of the four different ‘play loop’ buttons are pushed, the buffer plays back a sound file and loops it until the ‘stop loop’ button is pushed. This looped sound is played independently of the synth engine, so both can be played simultaneously. The four loops currently loaded into the looper were made with sampled sounds and were sequenced in Fruity Loops. The .wav files for the loops need to be saved into the ‘sounds’ folder in Supercollider in order for the looper to work.

The loops are here:
loop1
loop2
loop3
loop4
These loops are under copywrite (Audio8 Recording, Inc) and are not available for use outside of testing this synthesizer software.

Routing

The routing, both within supercollider and external wiring, are what make this software synthesizer a very useful and unique live performance tool. Supercollider allows each of the computers output audio channels to be used independently. This means that even though there is only one stereo output for most laptop computers, the two mono channels (right and left) that make up that stereo channel can be assigned to independent sound sources. In this software synth, the synthesizer engine is being routed to the right channel, and the output of the looper is being sent to the left channel.

This wouldn’t be pleasant to listen to in headphones, but this routing capability is what makes this software synth (and Supercollider, of course) so powerful. A mini (3.8mm) headphone plug is connected to the laptop output and then split into two rca connections (right and left, or synth engine output and looper output). These two rca connections are each split again into two more rca connections (so, now there are 4 rca connectors in total). Now, the synth engine has a stereo output (consisting of two of the same mono channels), and so does the looper. These channels are connected to the scratch mixer (the synth in channel 1, and the looper in channel 2). This setup allows the looper to play in one channel of the scratch mixer, while the synth is cut in and out with with mixers crossfader. This is basically a real time fader controlled gate for the synth sound.

Finally, the MIDI output of the scratch mixer is connected to the MIDI input of the laptop. When the crossfader is moved all the way to the left side, a MIDI note is sent to the laptop (and of course the software synth), which controls the frequency of the software synth. 12 notes, including all of the notes in the C chromatic scale, can be chosen by moving the knob on the mixer to one of the 12 positions.

Routing Diagram

Other (Recap and Found Insight)

The MIDI and routing capabilities of Supercollider are what really made this project possible. Originally, the goal was to make a good sounding synth in Supercollider. It was soon realized (after days of work), that getting usable and original sounds out of Supercollider is not easy. After going though all the unit generators and examples in Supercollider, there wasn’t much inspiration to use it strictly as a software synthesis tool. Other interesting found tools in Supercollider include the Spring ugen, VOsc ugen, and ATSSynth ugen. The Spring ugen was just fun to play with, but the VOsc and ATSSynth ugens allowed for use of external sounds as the core for synthesis instead of using the internally generated sounds of Supercollider. Their implementation, however, is not simple enough to make then usable as a quick creative tool (which can be a huge turn off).

While testing the sounds of the unit generators in Supercollider, it was found that audio output of Supercollider could easily be ‘broken’ (clipping, and aliasing was easy to acheive). The software synth in this project can very nicely overload Supercollider if done right. The following sound file uses the above synth to create a real-time tweaked composition based on this aliasing and clipping. The vibrato parameter in the GUI is used to create a ‘tempo’ for the aliasing, and the pitch shift overloads the cpu just enough to get some nice sounding ‘drums’.

The aliasing composition is here

Leave a Reply

Your email address will not be published. Required fields are marked *