[sdiy] super cheap synthisizers

Jay Schwichtenberg jays at aracnet.com
Mon Jun 10 18:44:50 CEST 2002


I talked to the local microchip person last week and they moved it out again
to Q3/Q4 can't remember when. All I know is that it's to late form my
project so I didn't pay much attention to it. He did say you can get the
demo software and simulator for it off their WEB site somewhere.


> -----Original Message-----
> From: mikko.a.helin at nokia.com [mailto:mikko.a.helin at nokia.com]
> Sent: Monday, June 10, 2002 9:03 AM
> To: jays at aracnet.com; synth-diy at dropmix.xs4all.nl
> Subject: RE: [sdiy] super cheap synthisizers
>
>
> 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