[sdiy] Frequency follower idea. Question about FM.
magnus at rubidium.dyndns.org
Mon Sep 13 01:47:58 CEST 2010
On 09/09/2010 06:12 PM, cheater cheater wrote:
> Hi guys,
> I was wondering recently about syncing VCOs to other oscillators, and
> I came up with a framework idea of how this could be done in a new and
> I think interesting way. I wonder what you guys think about it.
> One of the problems is: you want an analogue LFO that is tempo-synced,
> but you want e.g. a sinewave, or a triangle wave, and very importantly
> it must reach the amplitude maximum. If you just coarsely set the
> frequency of the VCO and then sync it to sequencer pulses, then you
> lose the amplitude (the typical DCO problem). If on the other hand you
> don't want to lose the amplitude (because, for example, the LFO
> modulates the pitch and it's important that it reaches a certain
> interval), then the only other way for the VCO to catch up is for its
> pitch to be raised temporarily. It's similar to how beatmatching works
> with vinyl. Of course, this can work well for audio-rate VCOs as well.
> So here's the idea with how vinyl works vs how VCOs work. We have two
> VCOs vs two adapters with vinyl records on them.
> 1. unsynced VCOs - two records are playing with separate tempo. There
> is no sync.
> 2. Hardsynced VCOs: every time VCO1 reaches its sync point, the VCO2
> is also reset towards its own sync point. This can be seen as speeding
> up VCO2 to a very high speed of oscillation until it reaches its sync
> point. The analogy here would be that when vinyl 1 reaches a kick,
> vinyl 2 is sped up to nearly-infinite speed until it reaches the kick.
> Since the speed is infinite, the operation takes an infinitesimal
> amount of time, and in the next measure vinyl 1 and vinyl 2 start out
> perfectly in phase. Because they are probably set to different tempos
> (the probability of having the same tempos is 0), they will quickly
> drift out of sync.
> 3. Beatmatching: this is how records are synced: vinyl 1 is playing at
> a certain rate, vinyl 2 is playing at another rate. First the two are
> synced together. Then the dj checks if vinyl 2 is slower or faster and
> adjusts the rate of deck 2 to be higher or lower. At the same time he
> either pushes vinyl 2 forward or taps it with the finger to slow it
> This could look like this with VCOs: You sync the two VCOs together.
> You have access to the phases of both VCOs and check how quickly they
> fall apart. The derivative of their difference is the difference in
> frequency that needs to be added to VCO2. Then, the oscillators are in
> frequency sync (let's call this part we have just accomplished
> "frequency calibration"). However, after this happens, the oscillator
> needs to be 'pushed forward'. We can do this by injecting some phase
> to the VCO. However, so that there is no click*, we can limit the rate
> at which the VCO is being "pushed forward". We can do this by
> frequency-modulating the VCO one time with a windowing function to
> speed it up, or inverted windowing function to slow it down (let's
> call that part "phase calibration"). During the phase calibration, the
> frequency calibration should be somehow disabled. However, in a
> running process, it would be undesirable to have a state-machine, so
> maybe some form of continuous process could be invented from this.
> I have below included the mathematics behind this technique. One
> question is how to realize a fairly smooth windowing function.
Having only the time to very briefly look at your math, I'd say that you
should look at PID PLL loops, which is well researched and
well-understood beings. Already a PI-loop is easy to build in analog or
digital design, but adding the differential D term is no match to add.
The main reason I point you in this direction is so you can find support
in balancing the P and I parameters to form a nice lock-in behaviour as
you can get quite a resonance bump as a result.
PID-control of oscillators is being used in GPS disciplining of
oscillators (GPSDO) and there exists PIC-implementations in hobby
projects. A PID does not involve an offensive amount of code. :)
More information about the Synth-diy