Investigating Neoni FM - Traditional mode is Through Zero!

A surprise for me here is that Fundamental VCO and WT-VCO don’t perform phase modulation. This explains why they sound so different from all the rest of the oscillators in my test patch.

The Fundamental VCO stalls when fed low enough voltage to its LFM input. WT-VCO doesn’t.

But both of them do respond to DC at their LFM inputs. That alone differentiates them both from all the rest in that patch (Kitchen Sink, NYSTHI operators, Bogaudio oscillators in linear FM mode, and Terrorform in default mode but not in True FM mode).

Phase modulation can never respond to DC - the phase has to be constantly changing in order to hear a change in the output. Not only that, but the rate of change has to vary in order to hear variability in the pitch.

If you phase modulate with a LFO triangle wave, then you will hear two distinct pitches, one while ascending, and another while descending. That is because the rate of change is constant. Contrast that with a sine wave that has a continuously changing rate of change, and you hear continuously varying pitch. A saw modulates the pitch up a fixed amount, with a click at the begin/end of cycle. A ramp modulates down a fixed amount. And a square wave doesn’t change the pitch at all, but just introduces some clicks.

2 Likes

That was my understanding. I just had no idea that the Fundamental v2 oscillators in LFM mode were performing actual FM and not PM. Nor did I realize that each was doing something different in LFM mode.

Thanks for the video, by the way!

Yeah. I finally got around to experimenting with Chebyshev for the first time just now. When I saw a video about the various forms of FM (from Omri maybe?) it talked about linear through zero FM and reflection at the stall point. I didn’t realize that the Hz/volt might be scaled to the carrier frequency. I thought they were all like the VCV fundamental. That is why I didn’t understand why you didn’t need to reflect both at the low and high end to keep things symmetric. But now that I understand about the scaling, it makes sense.

I wonder what other true linear frequency modulating VCOs are available in VCV? And which ones support through zero?

Valley Terrorform is one, once you click the True button to activate True FM mode.

1 Like

You should read my article about pm v2 fm. It tells this.

1 Like

What do you mean, “it stalls”? Douse it clip the freq to keep it going negative?

No. Mathematically frequency can go negative. I really think you are wrong here.

Stalling is when the VCO core frequency tries to go negative and just stops at 0Hz instead. You can’t charge the capacitor in an analog saw-core VCO backwards.

Analog TZFM requires a bunch of extra circuitry that has to be calibrated properly. I haven’t tried the hardware Neoni yet but the Doepfer A-110-4 is really bad at this (it can sound cool but I think it’s overrated by some).

In a digital VCO, if it’s not modeling an analog core closely, TZFM is not a problem – you can subtract from the phase accumulator as easily as adding to it, so it’ll reverse without any issues.

2 Likes

Thanks. It appears that the Terrorform applies a constant 200Hz per FM volt (100% FM attenuation), regardless what the base frequency is. As you go negative, it never stalls, but has a range where it reaches a minimum frequency, and then as you continue negative it starts increasing frequency again. So it is through zero.

The Squinky Labs Chebyshev uses the base frequency to scale the Hz/Volt. So 1 V always doubles the frequency, and -1 V stalls the oscillator. And then continuing negative increases the frequency again. So it also is through zero.

VCV fundamental uses a constant 261.625 Hz/volt for FM, but is not through zero, so stalls when you reach 0 Hz and never increases again as you go further negative.

The Neoni through zero mode always scales the FM Hz/volt to the base frequency, where ~1 volt = the base frequency, but 0 FM volts is the stall point, and negative volts are equivalent to positive, except the waveform is inverted.

Four oscillators that support linear frequency modulation, and four different implementations

1 Like

Oh, it has a second page linked at the bottom! That’s where you look at the Fundamental oscillators. I’d read the first page only. I think your articles in that repo could use a table of contents or overview page; it’s not clear at a glance how much info is hiding beneath the surface.

Link for the uninitiated (read the whole repo, it’s good):

Past -1V, further decreasing voltage makes no difference. At that voltage, the frequency of the oscillator becomes zero.

Thanks very much for investigating all this. I’m super interested in Neóni, and feel much closer now to understanding what makes its behavior unique (as well as learning more about other oscillators).

Any particular reason for not including Fundamental WT VCO alongside those other four?


Here’s a look at some of the testing I’ve been doing with Neóni. I have each group present in two forms, and those two forms are plotted against eachother on each Bogaudio Analyzer XL:

  • C4 Osc → FM C3 Osc
  • (C5 Osc + C4 Osc) → FM C3 Osc

In other words, the spectrogram is showing the difference created by the addition of a C5 oscillator.

In both groups, the C3 Osc serves as the sync source for the other oscillator(s).

These are the oscillators (I aimed for including all linear through-zero true-FM oscillators with sync):

  • Terrorform (True FM mode)
  • Fundamental WT VCO (LFM mode)
  • Neóni (all oscillators Traditional mode)
  • Neóni (C3 Osc in T.Z. mode, all others Traditional mode)

In the 3-oscillator-algorithms, the sync has this effect visible in Hot Tuna:

  • Terrorform throws Hot Tuna off its tracks
  • Fundamental shifts to a solid E3
  • Neóni leaves Hot Tuna mostly unperturbed

true_fm_sync_test.vcv (7.9 KB)

Edit: fixed screenshot

That is unfortunate. I did not know that.

ah, right you are! The fundamental VCO limits the frequency to be >= 0 and <= nyquist:

if (!linear) {
    pitch += inputs[FM_INPUT].getPolyVoltageSimd<float_4>(c) * fmParam;
    freq = dsp::FREQ_C4 * dsp::approxExp2_taylor5(pitch + 30.f) / std::pow(2.f, 30.f);
} else {
    freq = dsp::FREQ_C4 * dsp::approxExp2_taylor5(pitch + 30.f) / std::pow(2.f, 30.f);
    freq += dsp::FREQ_C4 * inputs[FM_INPUT].getPolyVoltageSimd<float_4>(c) * fmParam;
}
freq = clamp(freq, 0.f, args.sampleRate / 2.f);

To me, any digital “FM” VCOthat doesn’t go through zero is doesn’t something wrong. When Chowning claimed to have invented FM synthesis in the 70’s it went through zero. And I would be astounded if the “digital first” FM VCOs don’t all do this (Bogaudio, Squinky Labs, Nystyhi, Dexter).

As far as analog VCOs and modules that emulate them - fair enough. While someone said it’s “impossible” to make a charge pump run backwards I would soften that to “it’s extremely difficult to make an analog VCO run backwards”. Whatever Neoni is doing I applaud, and (not that they need it) they have my permission to call it whatever they want.

Not available as a module in VCV but the video on Intellijel Rubicon explains TZFM really well.

1 Like

yeah, that’s video is not bad. It is a little bit specific to that module with the “symmetry” control. And, while someone above said it’s impossible for an analog VCO to go backwards, clearly this one can.

oh, one more in the mix :wink: My SFZ player is a sample player that has through-zero PM.

1 Like

I don’t think anyone said it is impossible - but rather it requires a bunch more circuitry in the analog world. Even the video alludes to the fact that the Rubicon has extra circuitry to support TZFM.

1 Like

The Chebyshev can sound qualitatively the same as Neoni TZFM if the modulating signal is offset -1 volt. It then also becomes a wavefolder, with the modulator setting the fundamental pitch, and the carrier the texture/amount of wave folding.

Neoni vs Chebyshev.vcv (2.7 KB)

I’m not making a video, but you can play with the patch. There are two key differences as you sweep the carrier frequency.

The Chebyshev grows and folds from two peaks within one cycle, while the Neoni has one of those peaks constant and only folds from one. I’m not sure what accounts for this difference. A wild guess - there is a difference in how the waveforms are reversed/inverted when crossing the zero point?

The Chebyshev has a very smooth wave form throughout the sweep, and a much cleaner frequency spectra. The Neoni has a ton of extra noise, especially at the upper end. If you look at the image, you can see and odd spike at the top of three peaks. I suspect that is the source of the noise. And I am guessing that it may be the result of the Neoni reversing the waveforms at -0.2 volts instead of 0 volts. That introduces some asymmetry. Perhaps there is some additional noise created at the switch point having nothing to do with the -0.2V offset.

2 Likes

Right you are.