multiple modulator FM synthesis
Hey folks,
I'm trying to wrap my head (again) around programming FM synthesis. What I'm trying to accomplish is a 4-oscillator series FM synth, using as my model Ableton's Operator in its 1st algorithm. I've started with the simpleFM~ patch and built from there, and what I've discovered is how to program a parallel MM FM synth (included below), but I'm at a loss when it comes to programming series MM FM; I just cannot figure out at which stage to add the signals together, and further, if there is another operation involved that I am overlooking.
My first inclination was to duplicate the modulation section in the signal chain right before the first modulating osc. Logically, it seems to be correct, but this did not give me the sound I was looking for. Referencing Roads's Computer Music Tutorial (p240), I ended up building the same thing. Patch is mmfm-roads, attached.
My initial try, which resulted in parallel MM FM synthesis (a bit messy), is multipleFM-test, attached.
Can anyone tell me where I'm going wrong? Is the Operator's algorithm actually something different than either of these implementations of FM synthesis? Any guidance would be much appreciated as I've been going at this for days and am completely stumped!
Much obliged,
Jay
Hi there
forgive me for not checking out your patches, time is limited here. But I've attached an example of how I would modulate a modulator in series rather than parallel. Let me know if this duplicates your problem or conflicts with Curtis' excellent descriptions. One thing I do know is that you can expect more harsh/chaotic/noisy sounds when modulators are in series, so think percussion, brass or distorted guitar.
HTH
Brendan
[EDIT] yeah, I just glanced at your "Roads" example, and it's the same algorithm as mine: modulate [edit: not modulate; set) the frequency of mod1 (operator2) based on the carrier frequency (operator1); but modulate mod1's frequency with mod2 (operator3), before it gets to operator2 (mod1).
Hi, thanks Brendan. Yes you were right, the Roads example I created was the same as yours with the minor exception of modulating mod1's frequency with mod2. Where I'm having trouble is that when mod2 harmonicity is set to 0.5 or 1. (which should be -1 octave and unison) - or anything else lower than, say 1.25 - the sound that's generated is more ring modulator like, as if you can hear the modulating frequency. On the other hand, if you I enter 1.5 or 2. for the mod2 harmonicity, I get the expected sound. So in this case it looks like using a [- 1]. would do the trick, and though I haven't spent the time yet to do the math at many different float relationships, comparing with Ableton Operator at the same mod frequency ratios, the sound is not the same.
What is causing this difference? I think I'm missing some math but I cannot tell where.
Hi laotze
perhaps you can cobble together a single patch that describes your concerns; I'm not fluent in the math underpinning FM synthesis (so why am I here??). At a guess I would say that in a series algorithm, the ratio between the carrier and ALL AND EACH of the other modulators is imperative. The math can get chaotic, and I struggle with simple FM math ;)
Brendan
the problem is definitely the weird math when adding overtones to something that already has overtones.
6 years later, I'm trying this myself. :) I'm trying out Brendan's patch, and one thing I notice is that if set the following:
mod1 ratio: 3
mod1 index: 1
mod2 ratio: 1
mod2 index: 1
... and then I switch the mod2 ratio back and forth between values of 1 and 2, I get a DIFFERENT timbre each time I go back to the value 1! And this makes me think that maybe phase is playing an important role when you get into modulators in series. And the old Yamaha FM synths actually use phase modulation, right? So maybe the secret is somewhere in there? I'm still trying to figure this out.
I just hooked up a float box to the phase input of the right-most cycle~ object (the "top" modulator) and sure enough, different phase values give different timbres. Whereas different phase values in the "lower" modulator (the one that feeds the carrier) don't affect the timbre at all.
Here's the patch modified to use phase modulation instead. Seems to be much more akin to Yamaha FM sounds. The mod1 and mod2 index values should be very small though, in the range of 0 to 0.005 or so.
one often can find working ways how to implement or organize stuff by experimentation.
1.) first, add (modulator A + modulator B) and FM the carrier C with it
2.) next time make a copy D of the modulator C, and FM one of them with A and the other one with B
3.) now listen to the sonical difference between these two setups
to answer your question: yes, phase is important whenever the frequency rations between any of the X oscillators/operators is in integer relation. so keep all oscillators in sync wherever you can and resync them after the pitch of a modulator has been changed.
this is one of the reasons why in the yamaha synths there are no integer relations. use prime numbers or 1/prime numbers for best results. or if you use free running oscillators you can also at least resync them on every note on.
Yes, but Roman the examples you're listing don't use 2 modulator oscillators in series, which is where the problems were arising. I'd love to see an FM setup that is like A -> B -> C that gives Ableton Operator or Yamaha FM-like tones. I couldn't figure it out, same as the original poster. But using Phase Modulation, I can do it no problem.
i cant tell offhand now, but maybe that happens when A -> B already causes aliasing so that the resulting waveform is folded when sent to C?