[sdiy] Function Generator ICs

Scott Gravenhorst music.maker at gte.net
Wed Sep 19 15:06:08 CEST 2007


Tom Wiltshire <tom at electricdruid.net> wrote:
>
>On 19 Sep 2007, at 09:59, Paul Perry wrote:
>
>> Maybe a micro would be the go today? Anyone tried tio make a  
>> general purpose
>> voltage controlled audio osc from a PIC?
>
>I have. I tried at first with a 8-bit processor (PIC 16F series chip)  
>which is fairly limited, but is still able to copy the 16-bit divider  
>DCO of the Roland Juno synths. I wrote firmware for a chip which  
>takes a 7-bit digital MIDI note input and generates a square wave of  
>the appropriate frequency. The Juno followed this with a waveshaper  
>stage to generate ramp and PWM waves.  You could use the PICs 0-5V  
>analogue inputs for frequency modulation, although I didn't bother.  
>The analogue inputs are only 10-bit, so you have to watch the range  
>of the modulation to avoid zippering. You get true analogue  
>waveshapes though, not stepped waves from a DAC.
>
>I'm currently working on a dsPIC (16-bit processor) audio osc,  
>although this won't be directly voltage controlled. Instead, it will  
>have its basic pitch set digitally (either via an SPI connection or  
>directly from a MIDI serial stream) and use analogue inputs for  
>frequency and waveshape modulation. This gives you digital stability  
>and the analogue ability to feed anything you like into it. Output is  
>16-bit via a cheap 24-bit/192KHz Cirrus DAC. The DAC is stereo, so I  
>hope to be able to have two independent oscillator outputs.
>
>Bruce Duncan/Eric Brombaugh of Modcan Electronics have a commercial  
>example of something similar with the VCDO 58B, which also does two  
>operator FM synthesis.
>
>There are definitely problems with this approach. I'm vaguely keeping  
>in mind that I'd like to build a polysynth, but the current  
>consumption of the processor (70-100mA at the speed I'm using) means  
>I'm going to be using a big power supply if I put 16 voices in it -  
>300+W just for the oscillators! (How does this compare to synths of  
>old?)
>
>If anyone has any great ideas about a better way, I'd love to hear  
>it. I'm starting to think that Scott Gravenhorst is going in the  
>right direction with the almost-custom-hardware and massive  
>parallelism of FPGAs.

Two words for you: "Logic Lego".  The beauty of FPGAs is that there is no word size.
 If you want 10 bits, make 10 bits, but if 50 bits is needed, well, it's right
there.  My first synth has NCOs with 52 bit wide phase accumulators.  The FPGA I'm
using will obviously support 8 note polyphony, but I think that is not the maximum,
probably 12 or maybe even 16 voices depending on system complexity.  There are also
larger FPGAs which would handle more voices.  The fact that you can cram a
sophisticated MIDI controller of your own design in an embedded MCU is just icing on
the cake.  The synths I've designed are almost completely contained within the FPGA.
 Minimum parts required for a functioning MIDI synth are the FPGA, an optoisolator
for MIDI and a DAC.  I just used the dev board DAC and added a 6N138.

Then there is speed.  The xtal clock on my dev board is 50 MHz, but the chip is
rated at some 230 MHz.  The FPGA contains clock managers that can crank the 50 MHz
up to 200 MHz if that's really needed.  My synths all run at 50 MHz and are loafing
at that speed (that is, they compute the next sample well before the next sample
clock tick), the GateMan has a sample rate of 1.0 MHz, and the PolyDaWG physical
model synths are at 250 KHz, so there is plenty of horsepower available for audio
applications like this.

Another awesome thing about this method is that it takes mere seconds to send a new
bit file to the FPGA at which time it becomes a completely different machine -
without changing a single soldered item.

Modern FPGAs are certainly DSP capable, in fact, DSP in parallel...

All of the software I'm using for development is free, that includes the code for
the 8 bit MCU itself.

-- ScottG

-------------------------------------------------------------

-- Scott Gravenhorst
-- GateMan I - Xilinx Spartan-3E Based MIDI Synthesizer
-- PolyDaWG/8 - 8 Voice FPGA Polyphonic MIDI Synthesizer
-- FatMan: home1.gte.net/res0658s/fatman/
-- NonFatMan: home1.gte.net/res0658s/electronics/
-- When the going gets tough, the tough use the command line.




More information about the Synth-diy mailing list