I’ve programmed new synthesizer in Pure Data. This time also with visuals that are corresponding to the sound. I’ve designed the patch having in mind that it will be controlled by Leap Motion, joystick or a computer mouse (or anything that produces two- or three-dimensional space coordinates).

Core of the patch is a three voice subtractive synthesizer. All three voices are linked in a harmonic series of a three-note chords. Amplitude envelopes of each voice are being triggered one-by-one in a repetitive manner (arpeggio). The voices are being mixed before going into a stereo chorus effect. Additional monophonic bass voice (tuned two octaves down from chord base note) is being added to the mix after the chorus. Bass voice have two phase-shifted outputs – sine and cosine – routed to left and right channels respectively.

Work in progress version – without amplitude envelopes yet

Controls

XY coordinates are being used to control chord changes. Square plane is being divided into four quarters: top-left, top-right, bottom-left and bottom-right. Each quarter is linked to a different chord (build on a root note): I, V, Vi and IV respectively. Default root note is middle C (MIDI note 64) but can be changed using a midi keyboard (note on message) or manually.

XY coordinates also corresponds to low-pass filter cutoff control – the further the position is from the middle of the plane the more high frequencies will pass.

XY coordinates can be set either by a computer mouse or by a MIDI controller. Interesting performative results can be achieved when using Leap Motion or a joystick to control the parameters. I have described how to connect Leap Motion to Pure Data in my previous post.

Two additional controls are available:

  • mix of the LFO and XY position controlling filter cutoff
  • release time of the voices amplitude envelopes.

Chord changes, LFO frequency and amplitude envelopes triggers are controlled by a master clock.

Visual ‘shape’ is a direct result of the left and right audio channels connected to oscilloscope in XY mode with extra Z signal. Teapot model is only rendered for fun but its size is related to left channel amplitude. Both are being rotated and their hue (shifted by 180 degrees for contrast) is changing on a repetitive basis. White dot represents the XY coordinates.

The final result

In the video above:

  • left-right and back-forth hand positions corresponds to XY coordinates thus also chord changes and low pass filter cutoff frequency.
  • up-down hand position controls amplitude envelope release time

Find this patch on my github