FM Matrix Question

jondie's icon

I am trying to make an FM matrix but I am encountering a problem when an oscillator modulates itself or when any other "feedback loop"(i.e A to B B to C C to A) is present. When an oscillator is sent back on its own FM path, the output is muted. The Question: How can an oscillator FM itself?

I can solve this problem by making a second, identical osc, but this doesnt strike me as true inner FM, and it can cause other problems when using more oscillators.

3664.Example.maxpat
Max Patch
Roman Thilenius's icon

we recently answered the same question with "use a copy of that oscillator".

for feedback loops bigger than 1 operator i have no solution though, except giving up the idea of digital style operators and using free running oscillators, so that the vector delay in the loop does not matter too much.

-110

brendan mccloskey's icon

Hi
I see two solutions....or three if you include [gen] - which I don't have. One is [send~]/[receive~], the other you have already mentioned - duplicate oscillators, here's an example of both:

Max Patch
Copy patch and select New From Clipboard in Max.

Brendan

vichug's icon

anyway, the solution does involve a minimal 1 sample delay line i think. You could probably do this with delay~ and tapin/tapout, or history in the gen~ world (which maybe Brendan was talking about). Afaik, having an audio feedback with 0 samples delay in Max is impossible and leads to immediate muting, even if it should not lead to a digital larsen, like in the case of a matrix~ where you would want to feed back one output into one input, it immediately ceases to work even if you never route the said output to itself.

Roald Baudoux's icon

tapin~ 0/tapout~ 0 creates a one vector size delay which is fine for any looping situation.

jondie's icon

Thank you, Thank you very much. Its good to know about that feedback issue. I didn't try the tapin sample delay method at this point. Here is the basic monophonic Matrix I made (you may to need the Envelope too) with send~s if you needed one or had any ideas for improvement.

3676.ModEnvelopeII.maxpat
Max Patch
Peter McCulloch's icon

The two oscillator method will definitely not give you the same sound as the feedback, since it will be much more stable.

The single sample delay is not a huge deal when using gen~, and remember that if you want a shorter delay, you can always upsample. The original DX7 had a higher sample rate, IIRC, so you might look into that.