[sdiy] super cheap synthisizers
Paul.Maddox at Wavesynth.com
Mon Jun 10 23:28:14 CEST 2002
> I've been thinking the same thing for a while now.
> My idea was to have identical "one uC" mono synths,
> programmed to be the 1st, 2nd and so on, voice of a poly synth.
> No global note assignment, but each synth running the same assignment
> algorithm and then responding to the correct note.
Kinda like Midi Overflow on some synths..
> Big problem I ran into is to find a _cheap_ uC with enough timers.
> For 2 "juno style" DCOs you already need two 16 bit timers.
> With "juno stile" DCO I mean:
> Put out the note number to a 4 to 6 bit R2R DAC loading a capacitor
> and use the times to reset.
> The error will be in the amplitude, frequency is rock solid.
Hmmm, you can do this with one timer, and use Phase accumulator techniques
to get two oscillators..
and use a 6bit R2R to give saw/square without amplitude problems..
> Then you need some more 8 bit timers to generate PWM signals for the
> resonance and VCA.
AVR has two 8bit timers and one 16bit timer..
> Problem is that cheap uC generally don't come with 3 or more hardware
> timers and a hardware async serial interface for the midi..
Avr ALSO has a hardware UART (interupt driven if you so wish)
> The PWM signals for VCF and VCA should preferably run above 40khz and
> on top of that you want enough uC speed left for decent LFO and ENV.
> So away goes the software timer solution, although software timers are
> probably the only way out.
Also the new Mega range (Mega8,16,128) are also 16Mhz giving 16MIPs, so
plenty fast enough.
> One option might be to share one timer for VCF and VCA.
> IMHO AVR are a assembly programmers dream, but none of the AVR fit the
wrong, ok if you NEED two 16bit timers yes they wont do, but you dont need
If you have TWO internal counters (just adding two 16bit numbers) you only
need ONE timer..
Have a timer so it goes at say 1Mhz, yes?
Now have TWO speed values
Freq_a and Freq_b
use TWO accumulators
acc_a and Acc_b
each time the timer fires (1Mhz) you do this
acc_a = acc_a + freq_a
acc_b = acc_b + freq_b
bingo two oscillators ONE timer...
"I've seen the light at the end of the tunnel, And its blue!'
Wavesynth home page;-
Modulus synthesizers home page;-
PPG Synthesizer pages;-
More information about the Synth-diy