This is my first attempt to create an oscillator for musical synthesis, with both digital precision and stability and analog modulation capabilities.
A long time ago (in a galaxy not so far away), the Roland Juno series were using a Digital Controlled Oscillator, using a master clock of 8MHz divided with a 18 bit counter to reach a particular audio frequency. The same principle is used here, with slight variations:
- The master clock is based on a 16 MHz crystal.
- The counter is 16 bits wide, with a prescale circuit allowing the pre-division of the master clock for more precision in both the lower and higher frequencies. (just think of it as the gears in a car).
So far, I tried it without the analog modulation inputs, and I found that the square output was more precise than the output of the frequency generator app on my iPod touch.. And a lot cleaner!
Here is the graph of the theoretical errors (in cents) over the MIDI note pitch range (0 to 127, equivalent to 8,17 to 12543,8 Hz):
You can see that the maximum error is 0.6 cent (the human ear can detect pitch errors when higher than 5 cents). And this is located in the end of the audio range (where the note is barely audible). This is a bit better than the actual Juno DCO, which had a maximum error over 1 cent.
For more information about the Juno DCO, check out Electric Druid’s article here.