Odp: [sdiy] DAC for MIDI2CV

Seb Francis seb at is-uk.com
Sat Oct 5 04:36:33 CEST 2002


Roman wrote:

> I'd have to look at my printed AD catalogue to check the specs
> (ADI site seems not to have AD1856 anymore...),

As usual the UK suppliers seem to lag behind the manufacturers ..

> I wanted to do the same thing, i.e. 16-bit dac for CV and
> pitchbend, but gave up the idea, mainly thanks to members
> of this list. It may be cheaper and better to have separate
> DACs for every task, than have 16-bit sucker doing
> everything.

Yeah, I thought that way in the beginning to use multiple cheaper DACs, but I plan a lot of features that are going to need a fair bit of software anyway, so I figured adding a little interrupt routine to sequence through the 15 CV outputs isn't going to be the hard bit.  It actually makes it a little easier for the other bits of multi-threaded code because you only need to write the desired output CV values to the right memory locations (rather than worrying about timing) and the interrupt routine takes care of actually setting the DAC + S&Hs.

Software is kind of my area, so I'm going to see really how much functionality I can squeeze out of a 20MHz PIC.  The desired spec is below.  I'll probably make the source available or some OTP PICs later if anyone's interested .. but one step at a time - I need to get the thing working first!

Thanks for the help with the INL/THD thing - the joys of datasheets...
Seb



I/O
===
MIDI In
MIDI Thru
3x Gate
15x High precision CV out



Bits
====
PIC
8x2 LCD Alpha Display
16-bit +-1LSB DAC
S&H array (or Mux + Caps)
4 x Quad precision opamps
Opto Isolator



Parameters / Features
=====================
All parameters setable via MIDI controller messages on control MIDI channel

Respond to MIDI all notes off message

Base MIDI channel
=> 1->16

Control MIDI channel
=> 1->16

Mono/Poly mode
=> Mode1 = 3 independent MIDI channels
   (uses 3 Gate + 3 CV)
=> Mode2 = 2 independent MIDI channels, first channel has gate on note off
   (uses 3 Gate + 2 CV)
=> Mode3 = 1 MIDI channel, 3 note poly
   (uses 3 Gate + 3 CV)

Note priority
=> Newest, Lowest, Highest

Gate on note off length
=> 0.001->60s

Portamento mode
=> Off
=> Slide on legato
=> Always slide

Portamento time
=> 0.001->300s

Pitch bend amount (set per channel)

3 LFOs
=> Speed
=> Shape (Saw / Pulse / Triangle / Sine / Random)
=> Sync to MIDI clock
   1/64, 1/32, 1/16, 1/8, 3/16, 1/4, 5/16, 3/8, 7/16, 1/2,
   9/16, 5/8, 11/16, 3/4, 13/16, 7/8, 15/16, 1,
   4/3, 3/2, 5/3, 2, 7/3, 5/2, 8/3, 3, 4, 8, 16, 32, 64

3 ADSR Envelopes
=> Attack time (0.001->60s)
=> Attack level (-7.5V->7.5V)
=> Decay time (0.001->60s)
=> Sustain level (-7.5V->7.5V)
=> Release time (0.001->60s)
=> Log/Lin

Assignment of pitch bend, MIDI controllers, LFOs, Envelopes to unused CV outputs
=> LFO 1->3, ENV 1->3, Pitch bend, CC "learn", CC 0->127
=> MIDI channel

Settings stored with power off

Multiple configuration memories ?





More information about the Synth-diy mailing list