Page 1 of 1

On HFO range

Posted: 02 Feb 2019 17:53
by Ortseam

As I use Karma more and more, some new questions appear.

While playing with HFO I noticed that it's real range is 44Hz ... 16 kHz, while the Manual in HFO parameter table says: "Rate (0.26Hz-16kHz)".

Which of two is wrong? (or maybe of three, taking me into account :) - maybe I do something incorrectly)

As to me, I'd like the Manual to be right as the frequency below 44 Hz might be highly welcome when building e.g. a kick drum sound by this module.

Thank you!

Re: On HFO range

Posted: 05 Feb 2019 09:22
by karmafx
Hi Ortseam!!

So glad you are using the synth. Love all the cool feedback. :D

Actually, you are correct. It is a bug, and part of the bugfixes in 1.20 is:
  • Bugfix: HFO rate could not go below 44Hz in FM Mode. Fixed.
However, I believe this fix was only for FM mode. Is that correct or did I miss something?

Re: On HFO range

Posted: 05 Feb 2019 15:49
by Ortseam
Thank you so much! I love Karma and so happy to hear it's getting even more beautiful! :)

This bug presents at any HFO mode and type of connection (as far as I could see). BTW at left knob's left position the module screen shows "Rate: 0.26 Hz" but actually it's 44 Hz

By the way, is it right that when I try to modulate Osc1's "freq" knob by HFO (it doesn't matter in FM mode or not) the amount of this modulation affects not only the amount of higher harmonics produced but also the Osc1's fundamental tone pitch?
Here's what's happening when you turn HFO's 'amount' knob:

Re: On HFO range

Posted: 03 Mar 2019 11:17
by karmafx
Hi Ortseam,

Because the HFO is high frequency, it has some built-in antialiasing. Unfortunatly, this has some problems in the low frequency area, mainly due to precision. I think that might be what you are seing in the plot. Also, for this reason I upped the precision in 1.20:
  • Bugfix: Internal Osc upped to 64 bit precision, due to precision artifacts at low frequencies (affects internal modulation and HFO/FM)
However, I'm not 100% sure that this will fix what you are seeing. So even more reason to let you have a go at 1.20 beta.

Regarding the FM detuning you mention. Yes, this is normal behavior. When modulating the freq knob in and Osc, you are basically doing Exponential Frequency Modulation, and that will detune your carrier. What you maybe want is to do Linear FM. The FM module does that, and also has the modulator built-in (so no need for hfo). Alternatively, you can use the an "Additive" Osc. This one has a phase control, which is actual phase and not just "phase init". If you modulate that with the HFO (in FM mode), you basically get linear FM, and this will be in-tune.

Re: On HFO range

Posted: 03 Mar 2019 11:20
by karmafx
BTW: Also, while I see why you would want to use the HFO for making a kick drum, an alternative way is to use a regular Osc1, set to Sine, and then modulate its frequency using an envelope. The Osc should not have the same issue with low frequencies as the HFO. All the kicks in the psy-kick bank for instance, are pretty much made like that.

Re: On HFO range

Posted: 03 Mar 2019 22:04
by Ortseam
Thank you so much for your explanation and pointing me at some important aspects!
Yes, regular Osc1 works nice (BTW the kick I used in the song that I showed to you is made just that way too).

Recently I've tried to modulate the phase of Additive with HFO and it worked nice. The only point is that the amount of harmonics is not to large (which is obvious in phase modulation case thus).

As to FM controller module it also works nice. The only thing that might be better (as to me) is the amount of modulation. In Karma two sin's of the same frequency produce very soft effect at max modindex level (~4 noticeable harmonics) while in many other FM synths under maximum modulation the spectrum extends to upper frequency range border. When I played with FM modulator in Karma I was surprised a bit with this. Although two or three FM modulators joined in sequence can do the job, I think it would be nice to have more of modulation range.

Re: On HFO range

Posted: 06 Mar 2019 22:37
by karmafx
I Agree. FM and the FM range is something that will be reworked in a future release.

Re: On HFO range

Posted: 07 Mar 2019 18:36
by Ortseam
Cool !!! :)

Re: On HFO range

Posted: 08 Mar 2019 12:53
by karmafx
Yes, I think the FM synthesis part is in need of some work. As you probably know, aliasing is a real pain with FM, so simply upping the range is problematic, unless of course you are into the aliasing "sound", as the FM overtones or sidebands then quickly reach the nyquist limit.

Now, since the synth features an internal control signal already, an idea could be to run this signal at a higher rate, say 16x.
Once this signal reaches a module, the module can decide if it wants to process it at this rate, which would make sense in case of an oscillator, and essentially do 16x oversampling, or process it at the low rate, which is trivial/normal behavior.

The overhead would be minimal, since (in case of FM synthesis) only the target module (the oscillator) and the control signal generator (FM module) would have to deal with the oversampling. An additional "phase" control signal could be added to support phase modulation (indirect FM) aside from direct FM modulation. This would also make the FM module capable of doing PM, instead of hooking it up through the additive module, which seems kind of odd. PM is indirect linear FM and what Chowning originally formulated and e.g. the Yamaha DX7 used.

Re: On HFO range

Posted: 09 Mar 2019 22:47
by Ortseam
Of course I know that extrawide spectrum (which is easily reached by strong FM modulation) causes strong aliasing problems.

The idea of initially oversampled signals used for FM with following downsampling seems nice to me. But, as I can understand, this should be rather CPU-hungry. So maybe there would be a need of making some parameters (such as upsampling ratio or probably forced spectrum ceiling limitation) flexible and user tunnable. Or maybe - developing some "smart logic" which will decide (dunno is it really possible in realtime ) if upsampling is needed*

Looking at the aliased harmonics that the majority of FM powered synths on the market produce, I suspect that the task has no simple and plain solution. On the other hand the same problem is actual for digital shapers. But despite this there are some nice solutions at the market. This makes me think that the developers in general simply underestimate the disruptive role of aliasing in human perception of digital sound and do not really care about its nuances**

* e.g. it may be needed for high pitched notes and not needed for low pitched ones. Or it may be needed for high velocities and not needed for low ones. But how to deal with glissandos, e.g.? Seems that question has no obvious answer((
** Cockos ReaComp is a striking example. It has up to 64x oversampling that seems to use no digital filtration at all(!). As a result all it does is 64x CPU load and some subsample delay.