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: http://milkcrate.com.au/_other/sea-moss/).
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: http://milkcrate.com.au/_other/downloads/projects/eprom_music/promWaver.zip.
Demos and Example
Here is an MP3 of the following waveforms: http://milkcrate.com.au/_other/useless/wave_examples.mp3