Sunday, January 31, 2010

DIY Synth log #2



Little board I made to help me in developping the programmable synth. Seeing how so many things need to be controlled by DACs (for preset recall and automation), made a little 16-channel multiplexer with sample-and-hold.

Still shopping around for a simple 16-bit DAC. most are either SMD, or are I2S (too slow) instead of SPI. And I can't spare the pins for parallel. Eugh...

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.