Glass FM

IMPORTANT : Before updating, make sure to backup your preset files (they will appear as ‚Äúpreset0.txt‚ÄĚ up to ‚Äúpreset16.txt‚Ä̬†(that can vary if you didn‚Äôt fill¬†all preset) in the patch folder). You can then copy them back to the new, updated patch folder and you‚Äôll get to keep your presets.¬†


Here’s my take on FM synthesis, made for the Organelle using Pure Data Vanilla.

It’s a 1, 2, 3 or 4 operators synth, with 12 voices of polyphony.¬†

In 1 operator mode, the synth is simply a sine wave synth. 

It has 4 parameter pages and you switch pages using the AUX button. Each page has a different LED color.


Page 1 (red LED) : Oscillator

Here you can adjust operators 2, 3 and 4 ratio (the modulators), and the index. Operator 1 is the carrier oscillator and has no parameter.

Important: When¬†an operator’s ratio value is 0, it will shut itself and subsequent operators down. So if you want a 1 operator synth (sine wave only), set operator 2’s ratio to 0, so that op 2, 3 and 4 are off. If you want a 2 operator synth, set operator 3’s ratio to 0 so that operators 3 and 4 are off. etc.¬†

That way, you have control over the¬†complexity of the waveform. More operators mean more complex, and with a high index you’ll be able to get pretty noisy if you want to (particularly with low ratios).

Knob 1 : Op 2 Ratio (from 0 to 100)

Knob 2: Op 3 Ratio (from 0 to 100)

Knob 3 : Op 4 Ratio (from 0 to 100)

Knob 4 : Index (from 0 to 100)


Page 2 (yellow LED) : LFO (triangle wave LFO)

Knob 1 : LFO Rate (from 1 to 30 Hz) Controls the speed of the LFO

Knob 2: LFO Delay (from 0 to 5000 ms) The time it takes for the LFO to fade in when a note is pressed

Knob 3 : LFO->Pitch (from 0 to 100) How much influence the LFO will have on pitch

Knob 4 : LFO->Index (from 0 to 100) How much influence the LFO will have on index


Page 3 (green LED) : Amp Envelope

Knob 1 : Attack (from 1 to 3000 ms) Duration of the attack stage of the envelope

Knob 2: Decay (from 1 to 3000 ms) Duration of the decay stage of the envelope

Knob 3 : Sustain (from 0 to 100) Level of the sustain stage of the envelope

Knob 4 : Release (from 1 to 12000 ms) Duration of the release stage of the envelope (when a note key is released)


Page 4 (light blue LED) : Global

Knob 1 : Transpose (from -2 to 2 octaves) 

Knob 2: Portamento (from 0 to 1000 ms) Duration of the portamento (pitch slide from the last note played to the new note)

Knob 3 : Sub Mix (crossfade between the FM oscillator and the triangle sub oscillator)

Knob 4 : Volume (from 0 to 100) This is the patch volume. If the sound is crackling in a bad way, you may want to bring that parameter down a bit.


Page 5 (Dark blue LED) : Save a preset sound

Knob 1 : Slot (select slot destination to save to) (from 0 to 15 ) 

To save into the selected slot, hold down the Aux button for about 1 second, until the LED flashes to confirm.

A quick press of the Aux button will get you to the next page and will not save.


Page 6 (Pink LED) : Load a preset sound

Knob 1 : Slot (select preset slot to load from) (from 0 to 15 ) 

To load the selected preset, hold down the Aux button for about 1 second, until the LED flashes to confirm.

A quick press of the Aux button will get you back to the first page (oscillator) and will not load.


Please, let me know if you encounter a bug!

UPDATE 0.91 : Adjusted the smoothing of some parameters and added a sub oscillator, accessible via the knob 3 on page 4

UPDATE 0.92 : I added preset capability. You can now save and recall up to 16 presets sounds in this patch. See page 5 and page 6 above for details.

UPDATE 0.94: Polyphony would not be 12 voices when played from an external keyboard. Fixed. 

4 comments on “Glass FM
  • √ęlectrafa on said:

    Nice patch! But it doesn’t work on Organelle M without renaming files in it :
    4op_fm_osc.pd to 4op_FM_osc.pd
    LFO_tri.pd to lfo_tri.pd
    VCA.pd to vca.pd

  • Francisco_Cordeiro on said:

    True! Got it working except for the LFO. Did you figure it out? Even tried re-naming the LFO_Delay to lfo_delay, but not working…


  • Kevin_Braiden on said:

    I was able to get it working. I opened in PD, did a “FIND” for LFO_Delay and change all instances of objects to lfo_delay – all lower case. As well as changing the name of the file to “lfo_delay.pd”

  • Tyko on said:

    A wonderful patch, thank you very much! It worked great immediately on my Organelle M. The submixbuttom is a splendid thing to set the last touch to the sounds, or change them totally.

  • Leave a Reply

    • Platform:
    • Category: Synthesizer
    • Revision: 0.94
    • License: GNUGPLv3
    • Modified: 8 years ago
    • Views: 814
      Likes: 26
      Downloads: 3032