[sdiy] super cheap synthisizers

mikko.a.helin at nokia.com mikko.a.helin at nokia.com
Mon Jun 10 18:02:44 CEST 2002


Hi, Microchip's dsPIC's have I2S output, though the chips (as well as the outputs) aren't yet available (afaik).

Here's the link to product page:
http://www.microchip.com/1000/pline/dspic/index.htm

-Mikko

> -----Original Message-----
> From: ext Jay Schwichtenberg [mailto:jays at aracnet.com]
> Sent: 10. June 2002 17:15
> To: synth-diy at dropmix.xs4all.nl
> Subject: RE: [sdiy] super cheap synthisizers
> 
> 
> Synthers,
> 
> Another approach would be to run the audio at 44.1 kHz (or some other
> 'sampling rate') like other DSP/NSP implementations. You could also
> implement an I2S interface and drive a DAC directly. DACs are 
> pretty cheap
> now days. Anywhere from $3-$6 depending on the quality. You 
> do need external
> filters and buffers which add cost and PCB layout is 
> extremely critical.
> 
> One problem with doing this in the analog/digital domain 
> (i.e. reading an
> ADC then adjusting freq) is the time lag. Most ADCs in uC 
> aren't all that
> fast.
> 
> Have fun.
> Jay
> 
> > -----Original Message-----
> > From: owner-synth-diy at dropmix.xs4all.nl
> > [mailto:owner-synth-diy at dropmix.xs4all.nl]On Behalf Of Theo
> > Sent: Monday, June 10, 2002 5:02 AM
> > To: mikko.a.helin at nokia.com; dmt10 at waikato.ac.nz;
> > synth-diy at dropmix.xs4all.nl
> > Subject: Re: [sdiy] super cheap synthisizers
> >
> >
> > I don't think 1/80000 or 1/160000 gives enough pitch 
> resolution for DCO.
> > That is why I suggested to use 16 bit timers.
> > At /80000 you only get 80 steps for a 1000hz waveform, to 
> move one octave
> > higher you have only 40 pitch steps.
> > Not much room for smooth sweeps and it only gets worse, next
> > octave only 20
> > steps.
> >
> > IF 1/80000 is enough resolution for you , the best way might be
> > to set up a
> > timer for a 1/80000 interrupt and do the real work inside 
> the interrupt
> > handler.
> > With the cycle counting method you may loose quite some 
> cycles to NOP
> > instructions to keep the cycle count the same while 
> branching and stuff.
> >
> > Just some thoughts.
> > Theo
> >
> >
> > From: <mikko.a.helin at nokia.com>
> >
> > > You don't have to use timers, you can also count the 
> instruction cycles
> > and do the reset when the counter reaches zero. I think 
> it's  best to use
> > one uC for MIDI and a dual-port SRAMs for passing the 
> frequency and other
> > parameters to the 1-voice uC:s, so the other uC's don't 
> have to use any
> > interrupts which mix up the instruction cycle count. Anyway you
> > need pretty
> > fast CPU (like 8 MHZ AVR) and tight code (hand assembled) 
> to be able to
> > minimize the time and count of instruction cycles for one while
> > loop to get
> > better resolution. It may though be just possible. If the cpu
> > freq is 8 MHz
> > and your code takes something like 100 cycles the minimum
> > resolution will be
> > 1/80000 s.
> > >
> > > main():
> > >
> > > init_variables_and_reset_DCO_s();
> > >
> > > while (1)
> > > {
> > >   read_dual_port_SRAM;
> > >
> > >   update_dac_vco_1();
> > >   dec(voice_1_counter);
> > >   if (voice_1_counter == 0)
> > >   {
> > > reset_dco(1);
> > >       voice_1_counter = cycles(frequency[VOICE_1]);
> > >   }
> > >
> > >   update_dac_vco_2();
> > >   dec(voice_2_counter);
> > >   if (voice_2_counter == 0)
> > >   {
> > > reset_dco(2);
> > > voice_2_counter = cycles(frequency[VOICE_2]);
> > >   }
> > >
> > >   update_dac_vco_3();
> > >   dec(voice_3_counter);
> > >   if (voice_3_counter == 0)
> > >   {
> > > reset_dco(3);
> > > voice_3_counter = cycles(frequency[VOICE_3]);
> > >   }
> > >
> > >   // update (multiplexed) dac for other parameter
> > >   update_dac_vcf_cutoff(); // send vcf freq + vcf eg to dac
> > >   update_dac_vcf_resonance(); // send resonance to dac
> > >   update_dac_vca_amplitude(); // send vca eg + vca 
> amplitude to dac
> > >
> > >   // update eg and lfo state machines ...
> > >
> > > } // while
> > >
> > > -Mikko
> > >
> > > > -----Original Message-----
> > > > From: ext Theo [mailto:t.hogers at home.nl]
> > > > Sent: 10. June 2002 10:28
> > > > To: Dominic Tarr; synth-diy at dropmix.xs4all.nl
> > > > Subject: Re: [sdiy] super cheap synthisizers
> > > >
> > > >
> > > > 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.
> > > >
> > > > 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.
> > > >
> > > > Then you need some more 8 bit timers to generate PWM signals
> > > > for the cutoff,
> > > > resonance and VCA.
> > > >
> > > > Problem is that cheap uC generally don't come with 3 or 
> more hardware
> > > > timers and a hardware async serial  interface for the midi..
> > > > 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.
> > > > 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.
> > > >
> > > > Duno, maybe there is a PIC that fits the bill.
> > > > But PIC ain't my first choice, bit slow, ugly structure etc.
> > > > Then again there _are_ pp who actually seem to like the PICs,
> > > > then again again, some pp are into kinky stuff...
> > > >
> > > > SX maybe a better alternative, fast and have "soft" hardware
> > > > periphery that
> > > > you may configure the way you  need.
> > > > However they look a bit like the PIC on the programming side :(
> > > > And with the "soft" periphery eating some of your 
> cycles it can become
> > > > troublesome to keep track of your cycle count for time 
> critical work.
> > > > Still SX is probably the best candidate.
> > > >
> > > > There are new fast 8052 look-a-likes from Dallas and Texas.
> > > > Some of these are both fast and offer two 16 bit and 
> one 8 bit timer,
> > > > but don't think they fit the "cheap" part of the description.
> > > >
> > > > My 2 cnts,
> > > > Theo
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > From: Dominic Tarr <dmt10 at waikato.ac.nz>
> > > >
> > > > >
> > > > > I'm contemplating building a monophonic synth from a PIC
> > > > chip (as the
> > > > oscilator) and a vca and vcf and decay eg.
> > > > >
> > > > > either controling the vcf through a heavily low pass 
> a pulse width
> > > > modulated signal to produce a rough control voltage, or 
> a frequency to
> > > > voltage converter.
> > > > >
> > > > > I havn't actually done much electronics, so what are your
> > > > thoughts on the
> > > > feasibility of all this?
> > > > >
> > > > > cheers - Dom
> > > > >
> > > >
> > > >
> >
> >
> 
> 
> 



More information about the Synth-diy mailing list