Saturday, November 22, 2008

A True Rompler (3): Synthesis

This is an extension on to a previous post.

So of course it is possible to play back samples on an EPROM without a microcontroller or a computer. But what about some form of synthesis? Well, i built a circuit that loops only a small memory area of the EPROM to form a periodic waveform and then lets you select different waveforms by changing the upper address bits (to move the output of the EPROM to different areas of non-overlapping memory).

The circuit is so simple that i won't draw a schematic at this stage. Instead, here is a basic block diagram of the idea:

I have also added a basic arpeggiator (as seen on the Fun With Sea Moss Page:

Breadboard Setup

Getting the Waveforms Ready
I made a Max/MSP patch for this synthesis process that allows you to generate and draw in waveforms, and then dump the data as a 32KB text file.

In total, there are 32768 x 8 bits used. In terms of the waveforms that are played back, this area is divided up in the following fashion:

• There are 256 different waveforms
• Each waveform is 128 bytes long
• Each byte is 8 bits wide

Above you can see a snapshot of the promWaver Max/MSP patch. The patch has 32 pages, where each page has eight waveforms that can be edited. It's pretty basic stuff - the patch can generate sine, saw, reverse saw, triangle, pulse and noise waves. The user can also draw waveforms by hand or edit these rendered waveforms by hand.

The gain for each waveform can be set from 0.0 to 100.0 where 1.0 representes using up all eight bits of amplitude. For pulse waves, a width can be set from 0 to 100% in increments of 1/128ths (so this is a sample-accurate pusle width I guess you could say).

You can download the Max/MSP 5 patch here:

Demos and Example
Audio Example
Here is an MP3 of the following waveforms:

Video Example:


Anonymous said...

I have a bunch of 4k EPROM lying around at home. Unless I do something more interesting with them (Hehe) I'll probably try this at some point.
Another idea I get when I see this is to permit limited "circuitbending" by allowing certain bit operations on the address and/or data bits. (Ie, INPUT xor A3, where you can also modulate INPUT externally)

Sebastian Tomczak said...

Heya Nitro,
Yeah I had thought about adding some bitwise operations to the address bus.

I guess the comparison with circuit bending in this situation might be the idea of an unkown outcome brought about by trial and error? because of course the theory of the circuit etc is very simple.