simpleFM~ collaborative patching thread

I’ve been thinking for a while that I’d like to do something more with the simpleFM~ patch that comes with Max. Y then thought that perhaps given the interest in the FM synthesis thread, that some folk here would like to get involved - making it a collaborative thing? I’ll also admit that I tend to finish stuff more often when other people are involved…

So, we could make a bunch of patches that use it in different ways, maybe try out some different control structures, generative sequencing approaches, novel modulation approaches, ways of connecting or mixing multiple oscillators together, cross modulation, matrixes, envelopes, LFOs, MPE, grid control or anything else… The ideas could go in different directions, get combined, shared, re-used etc. No rules really, just that some part of simpleFM~ is at the core.

It’s somewhere in the Max examples, but can be created by making a new object and typing simplefm~. The patch itself is quite simple, but it can make a wide range of sounds - especially with some modification. I like to de-encapsulate it and work with the innards to begin:

Anyone want to get involved?


I’ll follow along ! I’m using an fm patch right now, but I kind of don’t know what I’m doing in terms of ratios n all, still really learning synthesis. degrade~ is a nice pair with fm stuff.

1 Like

Yes… Possibly in the modulation bit of the patch too. I’m definitely interested in making something noisy and unpitched also.

Here’s a start:

I’ve added a option to fill a polybuffer~ with a folder of external waveforms. I use the excellent Adventure Kid pack. So drop the folder in and it should populate the umenus with whatever you throw at it.

I then wrapped the cycle~ bit into a bpatcher and added a crossfade from sine to whatever waveform is loaded. There are a few presets with different settings. And two oscs for some stereo fluctuations.

SimpleFM Stuff 1.maxpat (146.7 KB)

The bpatcher should be embedded, but here it is if not:

FM_Blend_OSC.maxpat (17.1 KB)

And the right input on the bpatcher is expecting signals from -5. to 5. so any BEAP stuff should plug straight in :smile:


I love the Adventure Kid pack! And this looks amazing. Definitely going to play around with this tonight.

1 Like

Further to the idea of collaborative patching - has anyone tried Kiwi? Free realtime collaborative Max/Msp style patching over the internet…
Downloads for Windows/Mac/Linux here:

also late to the party, but here is my little contribution:
@_mark I think it’s better to have a base frequency (which eventually is the fundumental) and separate harmonicity ratios for both carrier and modulator. This helps to put easier ratios like 2/3 etc and also keep a sense of where the fundamental is…
The use of some index envelope is important to produce spectral motion.
Moreover, and for shake of clarity, for simple-FM I would only use a single carrier/modulator combo. Anything beyond this (multiple carriers and/or modulators in any combo) it’s placed under the complex-FM category.

take a look at this patch:

simpleFM (vals).maxpat (19.0 KB)