Sunday, January 10, 2010

DIY Synth log #1

Some sounds I had lying around:

http://nearworlds.org/stuff/diy/diy_synth_01.mp3
http://nearworlds.org/stuff/diy/diy_synth_02.mp3

Part of a long-term project of building a synth. The rough outline is:

-3 or 4 oscillators. sine, square, triangle, ramp
-2 or 3 LFOs for FM, AM and VCF
-1 noise generator
-lots of LFO shapes, including "manual" waveshaping
-resonant VCF (using SSM2044)
-2 ADSRs for amplitude and VCF
-programmable delay (based on 2399)
-savable patches
-real wood enclosure and 2-octave keybed!
-some kind of basic arpeggio/sequencer
-MIDI-in a big maybe. I haven't looked at MIDI yet

I'm using DSI-type synths (evolver, prophet) as inflluence for the design. Digital control of analog stuff! In the sounds above, I'm using a atmega88 microcontroller to drive an MCP4921 DAC which in turn drives an analog XR2206 function generator. The 12-bit resolution of the DAC gives me a range between 30hz to around 8khz with tolerable drift. The micro has a table of all DAC values for 92 notes. The samples are straight from the oscillator. There's no envelope, filter, LFO or anything. The delay in the first one was added in soundforge for kicks. The "sequencing" is hard-coded in the micro.

The XR2206 is basically a voltage-controlled oscillator with sine/triangle/square outputs, and ramp with a bit of tweaking. It's really simple to use and requires almost no external components!

I'm gonna need a lot of DACs. One for each oscillator, for each LFO/ADSR combo. I intend to do the LFOs and ADSRs in code to make them flexible and as low-part-count as possible! I think I can mix both LFO and ADSR in code and have it use just one DAC.

I'm hoping to make the delay as dynamic as possible! Time and decay modulated by keys and LFOs and whatnot! If I can fit all components for a single "voice" (a dozen chips, I'm guessing) i nsmall-enough space, then I might consider making this a 4-voice synth. The main micro would just have to keep track of which voices are available, and if none are, use the one that was pressed the longest time ago.

I don't know yet if I want to salvage a wooden enclosure from something or just make my own. I haven't done any sort of woodworking since when I was a kid. It's not hard, but I am sort of ill-equipped! I'm not worried for the keybed. Doepfer has some nice OEM ones.

3 comments:

Unknown said...

amazing and promising synth!

Unknown said...

You might consider using a SMP08 (8 voice demultiplexer+sample and hold) and 1 DAC instead of many DACs to generate your control signals, since you don't need a super fast sampling frequency for your control signals. You tell this chip "here's the value (from the DAC) to output on pin #n" and it holds this value."

http://www.buchty.net/ensoniq/files/SMP8.pdf

cloudscapes said...

yeah I've been thinking about that particular problem a lot today and those came up.

I think I'm gonna use a 16 channel multiplexer and then just do sample&hold with a bunch of quad opamps. even 16 channels isn't going to be enough for digital control of a single voice so I'm gonna go the cheap route.