i'm trying to implement a jupiter 8 style modulation. Hope someone can point mo to the right direction. We have following components:
vco1 --> cross modulation by vco2 (exponential FM (1V per octave))
vco2 --> can be hard synced by vco1
So, each one is related to the other one. I tried to do following (pseudocode):
Code: Select all
float out1 = 0; float out2 = 0; if (vco1.didPhaseReset()) // should i hard sync out2 = vco2.tickHardSync(vco2Frequency, vc1Phase, vc1Increment); else out2 = vco2.tick(vco2Frequency); vco1Frequency = getFrequency(out2 * 96 + vco1MidiNote); // also some filtering happens here to avoid to much high frequencies out1 = vco1.tick(vco1Frequency);
In some edge cases at some frequencies, it produces a lot of noise like it does when you have some sub sample issues in the hard sync algorithm. My guess is that it has to do with the introduced delay we have because both oscillators depend on each other.
Is there a way to reduce this issues at all with some introduced delays or something?
Any information and input is welcome!