[sdiy] super cheap synthisizers

Paul Maddox 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
> specs.

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..

I mean;-

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...

Paul Maddox
"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 mailing list