FM Matrix Question
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.
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.
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:
----------begin_max5_patcher---------- 1383.3oc6Z1sbahCE.9Z2Y56.CWtaZFN5Hjfd29Rr2rSmcvfbJM1PFLtaZ6r 4YeER3+RAaYAwhjt9BiQfQG8oyuR7i2+tY9yKeTr126id+k2rY+P1xLUaMsL aaCy7Wk7X5xj0pazuP7Oky+h+MsWqV7Xsp8xBwCkKEO4QCBB1c4xM0KE00e6 AgtW7WmeWQxReuOs8Nxyz+84e4CHe2+aQYQ857uq9W.bav11eHoN8y4E282U hzZ8iDXAxq6gAzlCwgMeSjMsuKJ1rJuPJFpA.4fV0RmpY3vdtHYkpm8+SQUV RQhu5Z+66eWyQ4gaLlVokqVIJp+YbklTUkKp7VUlsYYRsbH4kWuVrbwtacYd gHsbSg59wtvEyFbgHqgPPrFWwMeS48hKnabEbkwUCY9vArp8mkUciKRW3hZC thPtRgBv83BwoNtVL2KuHS7neWb.sRsILpYnGFu+6SXjMUvvlhrjlKI83zAI .vJ+Mgzs1L2HUOlTj3tj7hmNqy2a77yarS5zGLw+Di8PToEfb0vFUf.HQWpy Vh0CP4yYtnxng3hkkI8LHI6m3kfPT80lHReTMMdNEB4fKe0lUp4vCZsLSbzr cGriqYGinrfXlFlRNfzcVbbO5RjSpKs6h0PS6xoLGCeHzEvW69BAlUzmdKkO BvObHv+kKuKvpDIXfBozHxqo7tVHDYySRuuy3Ab6xP.TQBTXfwlTwC5So42d RZ.YYR51vHNpxQmniXPgIktxH4VKxAt0hHJaPHvV2ZDXh5Va.ZnPrUpnQftt n3onJZOTJ8aoRW+1gIRv.rjg8ENNHLkVtTVCm5IGbKOlEvitQ9KJS9g27q3f vnHhrCOrKtNv82sDrXnUgSaKkfqLhQxsguFBm1aUlDhUwR04mgfJaBZ3qixL qRpyK6DB1ErT67QuvCH+MQo1D5.RwTuhUSrRseABbQrywARzQrBdEE3ZHTxp pU3D8pDyBeylAJ47kuXRNksFcLzpTJQZz9t6sSNkjnADSGveYxoLd.dvPf9+ 4T1WNkACYIZZ46zJmxWB8ODFBlBGmZZtNX5gj68V3sneN0Sww8jHF4z69CnK NlnIDNlD5OpxkSmiuydo4c+v4TKjCZEgBzqDCiN9lZCjPxwprWNGKj4VLOo3 tdXB4rLo6EwpKR0tyY5krJ3mUkjB+1mDbTtDmMUexUUAyReTPfM5WDn0sjxU NHS1e5nfI9dVR5ScU1Wr+I2RY8lIqSRhtqj+KaDE3vMKMx+juWJ5x30J5tXu R6QwUJhh7uJdxaw76sSElamFbqGR0AtkaTxXlk2Kjig0hhrig6AniYC5ZWsU jx1WY1.VHjoK5rM83PqnZ6qwR66zvarP1zAfDNuuXyStnvRsBaqUc..BZcpi CzI10fPCodJXH1UbpQKh+vsqzOX0a.3yeYVUhWyEdF4VWtoJcKA19tm5cfHl IVWmWzrv9EGbWriuoOmmkIJNx25p7rGJkILzJHdep+4yQV1hbhrAlHZOe.bs 3VnIBGwQSpFAtlQ.b0kMpQbyIXiXhnE5DQyHsMvIhVjIhV7zVzt9lAF41sob dW32MvTCgqO2.zXvMQ8sAT2LoRLV3bvrpYjCcSXAib9htQkCMJIIvM4gPLR3 Z1+SGPNhQQGHWrKXVrpZeHh1bfiw6NabLULOwSXplUraxFvrIbzMI3gFEyEc SJdDtw1wSUgCcSpTOWUuGx4FctmWc5IDtKxUBmn74gwJOfLFt6rwwCnQLEuX oNVuuWDseaFr6rwA1AlJ0NH2Pi7LBwS33zPrswo4pCsy9pyFGlZjwEdwqzAi vaDzP8aMQXTGmgsuecz8mMNwnHS2R8MW1FlFbSCxC+G.RQHj1 -----------end_max5_patcher-----------
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.
tapin~ 0/tapout~ 0 creates a one vector size delay which is fine for any looping situation.
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.
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.