Friday, November 14, 2008

A True Rompler (2): Drum Machine

Drum Machine Overview
I have decided to extend the ideas i posted earlier by making an EPROM and logic-based drum machine. It's pretty simple, but i quite like the results. Currently, you can play an 8-note phrase that loops. For each step, you can choose one of seven drum sounds or silence. Also, there are two different banks or sets of drum sounds to choose from.

The nice thing is that you can still of course change the pitch as well as play with the address mapping to get some interesting sort of glitchy sounds.

Demo Video

Some Details
The EPROM (27C256) has a memory of 32KB (32768 bytes times by 8 bits). So in order to represent this memory space in terms of an address, we need 15 bits. On the datasheet, these fifteen bits for the address are labelled A0 to A14.

In order to make a drum machine using the EPROM, i had to first load up an appropriate sample. I made a two bar sound file, where i sequenced a different drum sound on every eighth apart from the first eighth of the bar (this will represent our silence). This gives us a total of fourteen drum sounds - seven drum sounds per bank for two banks.

I converted the sample rate of the file, then converted it into data and then a hex file, and then uploaded it to the EPROM as per last time. If you need more details, please see the previous information.

The circuit relies on the fact that we now know that we have a loop that is essentially made up of sixteen parts. Hence, only the lower eleven address bits are used to control the sample playback. The next three bits set an offset from where sample playback starts, giving us eight positions. The final bit switches between our two bars' worth of audio.

A set of three multiplexers move through a set of three DIL eight-way switches at a speed of one note or beat per switch. It is the state of that switch in combination with the other two switches (ie. high or low = 1 or 0) that determines which of the eight drum sounds are being played. Because this is occuring at a tempo related directly to our address map, it is always in time and thus we have a sequencer.

I have split the schematic up into two pages. Note that the point labelled Drum Bank Choice should be either high or low (ie. connected to 5V or gnd).

Breadboard Photos


thegoodbutcher said...

again, great stuff!

Will you extend your drum machine concept by making it programmable via a sequencer?

I always thought it would be cool to use the digital portion of Ray Wilson's 16-step analog sequencer to drive a drum machine via a diode matrix (like in old organ rhythm boxes).

Sebastian Tomczak said...

Glad you like it. I would love to add a matrix interface to play with the address bus quickly and easily.