In the previous episode, we’ve seen how we could receive informations about the frequency of the monotron duo via its pls1 pad. This is very useful since we drive the oscillator’s pitch using a CV (through the dac, see here) and we will need to calibrate the voltage we send to the monotron in order to get the correct pitch so it ‘plays’ the correct note.
For my first monotron mod, I had made some experimental measurement using Live’s spectrum and operator to get an estimate of the mapping between the desired frequencies and the voltage to apply. Although the end result was ok, it was a little tedious and possibly error prone.
This time, we have a real measurement system and we can use it.
The first thing was to find out how generally the cv > frequency mapping looked like. To do so, I”ve setup a loop that would go through a good bunch of the DAC’s 12bit range and each time, set the CV, wait, measure the frequency. This would give me an idea of the general shape. Fortunately – and not too surprisingly – the korg designer tuned the cv response to be linear.
Here’s what the dataset looks like – the x axes is the 16-bit value sent to the dac, the y axis is the resulting VCO frequency.
Most of the analog synths are known to drift as the circuit warms up. Some more modern ones have temperature compensation circuits but the monotron being a cheap unit, there’s a high chance there’s nothing of such sort. So we’ll take the same set of measurement, except – this time – we’ll wait for the circuit to be connected for an hour before we measure anything. Comparing the two set of measurement, we get:
So they are indeed different. Not enormously but still different. Since the frequency perception is logarithmic, it’s in the low range that drifting a few hertz might do the biggest difference. Looking at our measurement results, we have
CV = 65535 : Hot = 22.06 Hz : Cold = 32.44 Hz
So we drift of nearly half an octave at that level, which is huge and this result somehow prevents to do any kind of static Frequency/cv mapping within the teensy.
However, since we can do the measures on the fly, nothing prevents us from triggering the analysis at any time, collect the results and use a linear regression algorithm to find the current coefficient for the linear mapping.
I’ve currently implemented a system that uses a 4 point analysis and is triggered every time the teensy is powered up. You can find the details of the code over here on github.