The purpose of this project was to design and create an electronic voice sampler, capable of recording short sentences and playing back, possibly adding special effects. The project was completed using various digital and analog circuitry, controlled by an 8051 microcontroller. No special effects were added, due to limitations in the hardware we settled on using. Original design specifications allowed for the easy implementation of software-controlled special effects; however; as discussed below, our original design implementation was heavily modified late in the project to accomdate for time and higher audio quality.
Effectively, the user is able to control this device using two pushbuttons (one for record, and one for playback) Light Emitting Diodes (LED's) and a Liquid Crystal Display (LCD) is used to provide the user with feedback as to whether the machine is recording, playing, or waiting for the user to press a button. See User's Manual for more information.
This presentation is broken into three (3) sections. The first section is the one
you are reading now: a project description. The second section provides a very
simple explanation of how to control the device. The final section describes
our chosen implementation; how we created the device. Full source code is
included in colorized HTML.
Usage
Usage of this device is straighforward. Pushbuttons are used to place the device in either Play Mode or Record mode. 3 Light Emitting Diodes (LED's) and one Liquid Crystal Display (LCD) are used to provide visual and textual feedback to the user. The system is either Ready, that is to say waiting for user input, Playing (playing back recorded audio) or Recording (Currently recording microphone audio input.)
Display
The following LED's indicated current mode of the device. The LCD simply
provides a synonomous textual representation of the current mode as
described below. Should the user press both buttons simultaneously, the
system will display an error by flashing all three LED's 5 times, then return
to Ready mode.
When the device is in Ready mode, the user may direct the device to start recording by pressing pushbutton #1. In the picture above (breadboard physical layout) pushbutton #1 is located near the upper center. (left pushbutton)
Upon selecting pushbutton #1, the device will switch to Record mode and start recording. The device will record approximately 20 seconds of fair quality analog audio. After 20 seconds are up, the device will return to Ready mode.
PlaybackWhen the device is in Ready mode, the user may direct the device to begin playback by pressing push button #2. In the picture above (breadboard physical layout) pushbutton #2 is located near the upper right. (right pushbutton)
Upon selecting pushbutton #1, the device will switch to Playback mode and start recording. The device will playback approximately 20 seconds of fair quality analog audio. After 20 seconds are up, the device will return to Ready mode.
Final implementation of this project ended up being quite different than what our initial design considerations were. Initial considerations included for one Analog-to-Digital Converter (ADC), one Digital to Analog Converter (DAC), two Op-Amps along with all parts used in the final design minus the ISD1000 Voice Record/Playback Chip. As we found our initial design considerations required more research than time allowed for us, we settled upon the following design.
Design Process
Upon deciding our original design considerations were no good, we chose to employ the use
of an ISD1000AP Voice Record & Playback Chip. These chips are
inexpensive and can be found at most Radio Shacks carrying
integrated circuits. After analysis of the chip specifications and functionality, it became
clear that using an 8051 microprocessor would be best suited to control the chip itself,
along with various input and output devices.
Breadboard ConstructionUpon procurement of the above materials, and with a thorough understanding of how each component works, especially the ISD1000AP, we allocated ports/pins on the 8051 microprocessor to control specific functions of the device. The following pins were required:
The ISD control lines were wired to pins on the 8051, along with wires from the pushbuttons,
LCD, LED's, Power, and Ground. ISD interfacing to microphone and speaker was quite simple
and was done as recommended by included documentation for the microchip. 7 Capacitors and
4 Resistors were required for breadboard construction of the ISD1000AP microchip. The
breadboard was wired neatly such that routing was extremely apparent.
Full online source code may be found here. This source code
was translated into HTML by code2html.pl (available from
Freshmeat). This source code is well documented and very easy to understand. It is written
in C, and was compiled using Keil.