[sdiy] super cheap synthisizers
Paul Maddox
Paul.Maddox at Wavesynth.com
Mon Jun 10 23:28:14 CEST 2002
Theo,
> 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
cutoff,
> 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
it!
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
and
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;-
Http://www.wavesynth.com
Modulus synthesizers home page;-
Http://www.modulus.wavesynth.com
PPG Synthesizer pages;-
Http://www.PPG.wavesynth.com
More information about the Synth-diy
mailing list