Novelty Alarm Clock
It’s a cheap digital alarm clock, but with the alarm mechanism replaced with a digital playback system. This design uses a 512k EPROM to store eight 64k 8-bit samples. The playback rate is variable, so each sample can last up to several seconds, with a degredation in sound quality* at the lower sample rates. It’s a super-simple circuit and there are many different ways to construct it, so I’ve just included a block diagram and a short description of how I built each block. The manufacturers datasheets for each of the components I used have example circuits which can be lifted directly. You can probably knock up something much simpler using a dedicated playback chip, but that wouldn’t be hardcore.
*Not that it’s exactly Hi-Fi at even the highest rate.
I used a 555 timer to generate the variable clock signal. Choose timing components to suit the range of sample speeds on your EEPROM (~64kHz->5kHz) and connect it to the clock input of the address counter
The 16-bit address counter was built with four 74AC161 4-bit counters in the lookahead carry configuration, although you can probably get away with a simple ripple carry at these slow clock speeds. Connect the output to the lower 16 bits of the EEPROM. After the sample is played the counter will roll over to zero and begin counting again, so looping samples can be played back.
Connect the common pin of the switch to +5v and the three LSBs to the 3 MSBs of the EEPROM (if you’re using the 27C040). This selects which 64k block of the EEPROM the sample is retreived from. If you’ve got a 1024k EEPROM you can use all four bits and have 16 samples. Unfortunately my then employer only had 512k parts (27C040) available.
The EEPROM image file needs to contain up to eight 65536 byte 8-bit unsigned samples. Each sample must be aligned on 64k boundaries. I assembled such a file by preparing samples in an audio editor, resampling them to be 64k in length then saving them in raw format. The final 512k image file was produced by concatenating the eight 64k sample files. Currently Sham 69 wakes me up with “The Kids are United”. Which is nice of them.
DAC and AMP
The DAC is a ZN428 8-bit DAC, permanently enabled, so no tricky syncronising logic. Connect the 8 bit data output of the EEPROM to the DAC and the DAC output to the LM386 audio amp, although it could really do with something with a bit more poke for Monday mornings.
Lastly, you need to interface your playback module with your alarm clock. I took the output from the clock’s piezo buzzer to the input of a retriggerable monostable (74LS123). This kept the playback running between bursts of the buzzer being sounded. The playback unit’s power must be sourced from the clock somehow. I don’t know how much spare capacity alarm clock PSUs have for driving ancillary equipment, but mine seems to deal with it. However the clock seems to run fast when the alarm is sounding.