Exponential FM synthesis

ncg777
ncg777 Member Posts: 13 Member

Hello all!

A thought occurred to me that frequency modulation should control frequency like we control pitch, that is, exponentially with base 2, and not linearly. Linear control of frequency seem unnatural to me as frequency perception is not linear at all.

The usual equation for FM is

x(t) = Aₐ sin(2πfₐt + I sin(2πfₘt))

Where

  • "ₐ" represents the subscript "carrier".
  • "ₘ" represents the subscript "mod".

But I think it should be something like

x(t) = Aₐ sin(2π(fₐ*(2.0^(I sin(2πfₘt))))*t)

So there you go; I'll just leave that here.

It would be super nice to have some sort of synth implementing this FM equation; I bet it would sound much better than traditional FM.

I'm trying to modify the FM4 in reaktor to do just that. I'll probably upload my ensemble here when I am done.

Tagged:
«1

Comments

  • ncg777
    ncg777 Member Posts: 13 Member

    Here is my modified version.

    All I did was modify the FM Op Snc block in the 4 operators.

  • ncg777
    ncg777 Member Posts: 13 Member

    I don't want to brag, but it sounds dopee as fork.

  • ncg777
    ncg777 Member Posts: 13 Member

    The index of modulation is in octaves. It's just the semantics of this modified version.

  • KoaN
    KoaN Member Posts: 137 Advisor

    I have seen a few blocks offering 2-3 types of FM,linear,log,ex. But when using Log you get crazy pitch drifting from FM Depth,Linear doesn't have that so you only get timbre changes which is a lot more musical.

  • colB
    colB Member Posts: 988 Guru

    Great to hear some enthusiasm from a new builder :)

    There are various different types of modulation that are loosely named FM.

    Exponential FM is one of those… like KoaN said, there are various Reaktor devices that implement variations of exponential FM. It's not really necessary to include it as a 'feature', because an exponential FM modulation can just be mixed with the Pitch input (you will see it more in hardware modular, because precise adding is more tricky in an analogue context).

    The 'FM' in FM4 is a different type based on the Yamaha DX line of synths. It is often called Phase Modulation to differentiate it from classic analogue FM.

    Yamaha style Phase Modulation is the equivalent of modulation of the carrier by the derivative of the modulator. One benefit is that any parasitic DC offset in the modulator has no effect on tuning. Another is that the the phase stays constant as frequency rises. With simple linear FM, raising the pitch reduces the modulation effect (e.g. raising the frequency by 80Hz at 80Hz is doubling the pitch, doing so at 10KHz is barely noticeable). With Phase modulation, a phase shift of 0.5 is always a phase shift of 0.5, so the FM effect is consistent across the full pitch range.

    It's also a somewhat different sound. Definitely more controllable (fewer sidebands?), so building intentional patches with 6 operators is more of an achievable goal.

    =========================================================================

    FWIW, the 'FM Op Snc' object in FM4 is not a block, it is a macro.

    It seems somewhat pedantic, but it's kind of important in Reaktor to use the right name for things to avoid confusion.

    We have:

    • modules (Primary and Core):
      • These are the atomic operations/components that we can't click into to see their structure
    • macros (Primary and Core)
    • core cells
      • like a core macro, but specifically a top level core macro that lives at the Primary level
      • there used to be two types, but now there is only one type
      • Primary Macros have a GUI presence, Core macros do not.
    • instruments (Blocks are a special subset of instruments)
      • a higher level construct than a Macro, no polyphonic connectability, Important in the GUI Instruments automatically cascade visually (selectable). Before Grouping was implemented, this was particularly important.
      • In an ensemble, a Block is just an instrument built to the Blocks specification
      • In a Rack there may be more restrictions, really not 100% sure about that :)
      • Instruments can be internal to other instruments (it gets complicated so it's rare)
    • ensembles
    • Racks

  • colB
    colB Member Posts: 988 Guru

    Another issue is what to do with negative excursions of the modulation signal.

    There are lots of different options, each is a compromise

  • ncg777
    ncg777 Member Posts: 13 Member

    Negative excursions? 2^x is never negative, at least for reals…

  • colB
    colB Member Posts: 988 Guru
    edited December 12

    You are absolutely right, I misread your equation… you are using multiplication to apply the modulation rather than summing, so it makes complete sense. zero maps to 1, negatives to fractions etc.

    Was playing with it a little. Sounds interesting.

    One feature - relative to Yamaha style phase modulation - is that using the exponential introduces a bunch of harmonics to the modulator that will all modulate the carrier.

    In one way this is great, because we get more complex sound with a single modulation operation.

    However it is also a limitation. Those harmonics are baked in, relative to the modulator, so they limit the available timbres significantly, particularly in a multi-operator context.

    …you get a lot of square wave type sounds.

    With pure sine waves, we just get the fundamental, so using multiple operators, we get more control in terms of building the harmonics we want for the sound.

    Here's the spectrum of the 2^sinwave

    (edit: this changes depending on the scaling of the modulation signal - assuming that is applied prior to the exponential function)

    It also introduces a pitch dependency between the modulator frequency and the output fundamental.

    Here's a little comparison ens

  • ncg777
    ncg777 Member Posts: 13 Member

    What exactly do you mean by "negative excursions in the modulation signal"?

  • colB
    colB Member Posts: 988 Guru
    edited December 12

    when the signal value goes below zero, that is a negative excursion

    (seems that it more common terminology when talking about speaker cones, but does get used in DSP)

  • colB
    colB Member Posts: 988 Guru

    So the question is:

    Is there a way to somehow counteract pitch issue relating to DC offset inherent to this approach?

    …is it even possible? each of those harmonics generated by the exponential has a different amplitude, so has a different DC offset… there is probably some elegant solution

  • KoaN
    KoaN Member Posts: 137 Advisor

    Testing the Sirius block which offers 5 types of FM,the only ones that don't have crazy pitch detuning when using FM depth are the usual Linear ones,LinTz and LinDx…and they both go positive and negative,as soon as you remove the negative part,like Exp and Lin "with a clipper",Lin Abs they all detune badly which is maybe ok for sound fxs but certainly not for something you want to play with the keyboard. So the negative part seems very important to maintain pitch stability?

  • ncg777
    ncg777 Member Posts: 13 Member

    Sirius VCO? Where can I get that?

  • KoaN
    KoaN Member Posts: 137 Advisor
    edited December 13

    https://www.native-instruments.com/en/reaktor-community/reaktor-user-library/entry/show/9451

  • ncg777
    ncg777 Member Posts: 13 Member

    I just can't get that Blocks thing to do anything. A/B? What is That? How do you just modulate a VCO with a VCA using that thing?

Back To Top