FM frequency fine coarse and detune controls

Brygonz's icon

Hi, i'm new to max and i am in the middle of building an FM Algorithm, based on Algorithm three of the Yamaha DX7. I have the patch working without these controls but am having difficulty with implementing the frequency fine, course and detune to each operator. i have been at this for a couple of weeks and am getting nowhere. i would be very grateful for any help with this.

brendan mccloskey's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Hi
I'm not familiar with the algorithm you mention (I only have a DX9) - but here's how to implement coarse and fine detune (on the carrier):

Brendan

Brygonz's icon

Thanks very much noob meister I'm going to have a go at implementing this tonight, ill let you know how i get on :)

Thanks again

brendan mccloskey's icon

Hi

ignore that last - it was a little amateurish!

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

here is a more mathematically robust version, using 0-127 to control fine and coarse tuning across the octaves:

Brendan

brendan mccloskey's icon
Max Patch
Copy patch and select New From Clipboard in Max.

added "local or global" detune - not sure if this is a feature of the DX, I seem to remember it may be just local....

Brendan

Brygonz's icon

You just answered a few other questions i had, without me even having to ask! :)

Thanks Brenden

brendan mccloskey's icon
Brygonz's icon

Hi, I have the fine and coarse controls working and the first operators nearly complete :). i have got one problem left to complete this, i need to build a super fine control -7 to+7 range. the problem is i dont understand what the math means in the fine control. I need to adapt the maths in the fine control to make it super fine for very mild detuning. If its not to much hassle could you explain the maths a little so i can adapt the fine control to be super fine. i dont understand the maths in the expr pow object and what the split object is doing.

Thanks again i have achieved more with this project tonight with your help, than in the last two weeks :)

brendan mccloskey's icon

If an output ranges from 0 to 10 and you want to scale it down to a smaller range, then multiply by < 1.

All the explanation you need is here:

Brygonz's icon

thanks Brendan ill check it out :)