Over the past few months, I’ve been improving my non-existent knowledge of electronics through a project I call Clueless. It’s basically a very simple digital delay.
DIY delays seem to fall into two groups: those based on analogue bucket brigade chips, and those based on the PT2399 IC, which was originally meant for karaoke applications but has also found use in a number of guitar pedals and eurorack modules. These both have limitations in terms of delay length and (for the PT2399) the sample rate.
The present design is based on a few chips of 74xx-series logic and an SRAM IC and can scale to ludicrous delay lengths, since simple cascadable counters are used for addressing. The quality is (probably) hampered by the fact that it uses 8-bit DACs and ADCs, but when run at high sample rates it doesn’t seem to exhibit much of the crunchiness normally associated with older designs.
The design is described in further detail at my hackerspace Labitat’s wiki, because that’s where I’ve been working on it. In fact, it’s fair to say that none of what I do with electronics would be possible without Labitat. It’s such a great environment for being creative with technology, and there are so many helpful people. I basically showed up a little over a year ago with the parts for a MIDIBox sequencer and someone there taught me to solder and helped me debug it. If you’re in the Copenhagen area, come down on a tuesday night. Similar places exist all over the world, check out hackerspaces.org to see if there’s one near you. Or support a movement and start one.
I’m already in the process of augmenting the design to make it a one-voice sampler. A digital delay is a sampler that continously records and plays back as it steps through a buffer. Or conversely, a sampler is a delay that steps through a buffer once while recording and then steps through it playing back at request.
The hard part of a sampler implemented in digital logic (well, one of them) is address generation. If you’ve only got one sample at a time and all you want to do is play it back from start to finish, this can be done with counters as in the delay. More features requires more logic, but fortunately there are a few examples in the service manuals of old samplers of how to do this — the earliest Emus, in particular, have very good, thorough service manuals with clear schematics, block diagrammes and sections describing the operation of this part of the circuit. I hope to do more in-depth posts on the SP12(00) and Emulator 1 and 2 in the near future. The ones after those, unfortunately, sealed all this off in custom ICs that also do DSP.
Modern µcs are fast enough to do address generation by bit-banging if they don’t have a proper memory interface. Unfortunately, the through-hole versions generally don’t have enough pins to actually output them in a timely fashion. The Where’s The Party At uses an AVR and some latches to do it. I’ve studied the design more closely, and one thing that struck me is that it runs at a fairly low sampling rate (a maximum of 20khz) and does no filtering of either inputs or outputs. This is why it’s sound is so rough, but is something that could be easily cleaned up. I don’t particularly like the thought of working with somebody else’s 8 bit assembly, but if one used parallel-input DACs and ADCs and never let the data touch the AVR, the latter could be reduced to a pure address generator, which might lead to significant reductions in code complexity (and also free up the data pins, meaning less latches). This deserves to be explored. The ARM-based LPC1114 is also interesting, although the through-hole variant has too few pins.