Voice Recorder & Playback Project

CS-122A, University of California at Riverside
Presented to Dr. Frank Vahid
24 Nov. 1999 (Fall)

by
Chris D. Duerr &
Matthew C. Hahn



Project Description

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.

[Description] [User's Manual] [Implementation]

User's Manual

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.

Recording

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.

Playback

When 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.

[Description] [User's Manual] [Implementation]

Implementation

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.

Materials
Breadboard Construction

Upon 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.

Code Development

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.

[Description] [User's Manual] [Implementation]

EOF. Submitted 24 Nov. 1999