Introduction: Audio Delay Module
The circuit outputs a delayed version of an input audio signal. Depending on the amount of memory implemented and the sampling rate selected, it can store from 3 seconds to 8 seconds of audio. The audio input will be delayed by an amount selectable by the user.
This device can be used to produce a delay for many purposes. Some possible applications are:
- Sound effects , such as echo, can be produced by adding a delay to an input signal.
- This device can produce an effect which is sometimes referred to as “Delayed Auditory Feedback”. This effect has been used to help aid those who stutter.
- Another application of such a device would be in a “Speech Jammer”. Such a device records a person speaking and then plays the audio back at a delay, which causes most people to get confused and thereby disrupts their speaking. Using the device for this purpose would require a directional microphone and directional speaker.
- The device can also be used to delay the audio from a television broadcast. In my research, I found that some people prefer to use a separate, radio broadcast for the play by play or commentary for sporting events, and as such they wanted to be able to introduce a delay to synchronize a separate audio source to the television broadcast.
- The circuit can be used sort of like a TiVo, but for audio only. By changing the delay setting, you can go back as far back as the buffer size permints (only 8 seconds max in this design) to catch something you missed.
At any rate, the device described here can be a lot of fun to play and experiment with. The input range is controllable from 0 seconds to the maximum delay by means of an analog input. This analog input can simply be driven by a potentiometer, or from an external signal. Modulating the delay input with different waveforms can produce interesting sound effects.
Step 1: High Level Functional Description
The block diagram shows how the circuit works.
First, the input signal is amplified as needed. Next, the amplified signal is sampled and converted to a digital value by an analog to digital converter. The digital sample value is then stored in a large RAM buffer.
The delayed waveform is created by retrieving older samples from the buffer and sending them to a digital to analog converter (DAC). The output of the DAC is low pass filtered to remove unwanted frequencies that are an inherent part of the sampling and reconstruction process.
This process of analog to digital conversion, storage, retrieval, and digital to analog conversion runs in a continuous loop, controlled by a microprocessor. In this manner, a delayed replica of the input signal is produced at the output.
The steps that follow provide in depth detail of how each sub circuit works. A PDF of the complete schematic is attached here, with each subcircuit highlighted a different color. The following steps explain what each sub circuit does.
Step 2: Pre Amp
The pre amp circuit is used to interface the input audio to the microprocessor’s A/D converter. The
circuit is a non inverting amplifier, with the input biased at a reference voltage (VREF) of ½ of the supply
voltage. By biasing the non inverting input at VREF and capacitively coupling the audio, the input
voltage at the non inverting input will be equal to the audio waveform offset by VREF, instead of
swinging about 0 volts. This allows a waveform with positive and negative portions to be processed by
the rest of the circuitry, which only works with positive voltages.
Op amp U6-D is used to establish the VREF reference voltage that is ½ of the supply voltage. The
reference voltage is set by the voltage divider created by R1 and R2, and the op amp buffers the voltage.
The output of the op amp is VREF, and all points in the circuit labeled VREF connect to this point.
The op amps used here are Microchip MCP6022 and MCP6024. These are essentially the same part,
only one is a dual and the other is a quad. These parts have a full scale output that can swing from rail
to rail (0V to 3.3V in this design).
Resistor R5 biases the input to the op amp at VREF. The input audio is then capacitvely coupled via C1
to the input of op amp U6-A. The result is that the voltage at the input to the op amp will be the audio
input signal swinging above and below VREF. Biasing resistor R5 and the AC coupling capacitor also form
a high pass filter to the input audio. The values must be chosen such that the cutoff frequency is below
any frequencies you want to pass.
The gain of the pre amp is given by Gain = 1 + R7/R6. Depending on the source of the input audio, the
gain of the pre amp may need to be altered. If the input is from a source such as the line out of a
computer, radio, DVD player, etc, then it may be of sufficient amplitude that it requires no further
amplification.
If the input is from a microphone, then amplification will be required. R7 must be chosen to configure
the amplifier for the needed gain. The goal is to have the maximum peak to peak amplitude of the input
audio make the best use of the input range of the microprocessors A/D converter. In this circuit, that
means a maximum peak to peak voltage of 3.3V. If the input signal is amplified too much, the peak to
peak value will exceed maximum input range and it will be clipped, introducing distortion. I included a
switch (SW2) in my design so that the gain could easily be changed from 1 for higher level sources to
about 34 for use with a microphone. The switch shorts out R7 so that the gain is reduced to 1. I have
found that this works well with sources like the line out from a computer, radio, CD player, etc.
R4 is used to supply power to an electret microphone if that is the input audio source. Electret type
microphones need a power source to operate properly.
Step 3: Low Pass (Anti Aliasing) Filter
Op amp U6-B is configured as a low pass filter, used as an anti-aliasing filter. An anti aliasing filter is
often used with sampled data systems to reduce the amplitude of signals which have a frequency higher
than one half the sample rate. Frequencies higher than one half the sample rate will appear in the
output as lower frequency “aliases”, which is undesirable.
The filter used here is made up of a single second order Salen-Key filter. The overall cutoff frequency of
the filter is approximately 6 kHz. R8, R9, C3, and C4 set the cutoff frequency of the filter.
Step 4: Microprocessor
The microprocessor (U1) used here is a Microchip 16F88, and it serves as the heart of the system. During the main program loop, the micro reads the input audio, converts it to a digital value, and stores it to the RAM chips. It then reads a sample to output back from the RAM chips, and outputs it to the DAC. The micro performs these functions, and also manages the addressing for the RAM buffer and calculates the address of the delayed sample to retrieve.
There are also many configuration and housekeeping functions performed by the microprocessor. The general functions performed by the microprocessor as described below.
Analog to Digital Conversion
The microprocessor contains an internal ADC which has a resolution of 10 bits, but only 8 bits of the value are used. The two least significant bits of the value are discarded.
There are two analog inputs read by the microprocessor during the main program loop. One is the audio input, and the second is the delay setting.
The delay input is an analog input that determines how much delay there is between the input and output signals. 0 volts corresponds to 0% of full scale delay, and VDD corresponds to 100% of full scale delay. The value that is read is used to calculate the RAM address of the delayed sample that will be played back.
Op amp U6-C is used to buffer the delay input voltage to the microprocessor A/D pin. The analog value for the delay input can be generated by a potentiometer which is used to set the voltage at this pin, providing a delay from 0 seconds to full scale. This allows a fixed delay amount to be set easily. It can also be useful to use an external signal to control the delay. All kinds of strange sound effects can be produced by driving the delay setting input with different waveforms. For that reason, my design also includes a connector to allow an external source to be used to drive the delay setting input. The schematic shows the delay setting potentiometer R24 with the wiper connected to the input of U6-C via a 10k resistor, R3. With the R3 in place, the external signal which is input via the connector can still drive the op amp input, even with the potentiometer connected. C24 helps to low pass filter the delay input signal.
SPI Bus Master
The micro communicates with the RAM and DAC chips using the SPI communications interface. The micro is configured as the master, and the RAM and DAC chips are slave devices. All the SPI communications are therefore initiated and controlled by the microprocessor.
Determine Full Scale Delay Setting
The full scale delay range is configurable by setting the 3 digital inputs either high or low. This allows the user to select a full scale range that is smaller than the total RAM buffer size. R10, R11, and R12 are used to pull up the digital inputs. Switches S1-A, S1-B, and S1-C are a quad DIP switch. When any of the switches are closed, the corresponding digital input is pulled low.
The table included here shows the different full scale delay values possible based on the switch setting, sample rate,and RAM capacity,
Determine RAM Configuration
The microprocessor also determines whether the system is configured for one or two RAM chips. Resistor R13 needs to be used if two chips are to be used. When the circuit is first powered up, the microprocessor reads the line as an input. If the line is high, the software is configured for two RAM chips, and the addressing used internally is set up for that. The line will be used for the chip select signal for the second RAM chip in that configuration. If only one chip is to be used, pull the line low using R14. Only one of these resistors (either R13 or R14) should be populated at one time, depending on how many RAM chips are used. These lines need to be configured by tying them high or low via a large value resistor (10k was used here), otherwise the line to the microprocessor may be damaged.
Oscillator
The micro can operate with a maximum of 20MHz for the clock frequency. An external 20MHz oscillator (X1) is used here. All the circuitry here is run from 3.3V, but the oscillator is a 5 Volt part. Resistor R16 is put in series between the oscillator output and the microprocessor clock input, to limit current so that it can drive the 3.3V powered microprocessor without issue. Inside the microprocessor, the voltage of the clock pulses is clamped to 3.3V, and so the microprocessor input is not damaged.
Capacitor C6 is a bypass capacitor for the oscillator.
LED Indicator
LED1 is used to blink status or error codes to the user. R15 is used to limit the current through the LED. Capacitor C5 is a bypass capacitor for the microprocessor.
Microprocessor Pin Functions
This is a concise list of the function performed by each pin of the microprocessor
Pin 1
Audio Input. This is an analog input of the microprocessor which samples the input audio.
Pin 2
RAM configuration Input, also RAM2 Chip Select. At power up this line is an input, used to indicate the RAM configuration. High=2 RAM chips, Low=1 RAM chip. If two chips are used, this line is then switched to an output which used as the chip select line by the microprocessor to initiate SPI communication with the second RAM
Pin 3
Mode Setting. This is a digital input used to determine if the program will enter normal mode or the test mode. The line is read after power up, and the code runs the mode that is selected. High=normal mode, Low=test mode.
Pin 4
Sample Rate Selection. This is a digital input used to determine whether the sample rate should be 11025 Hz or 8000 Hz. High=, Low=. This setting only has an effect during normal operating mode, and it can be changed at any time during operation.
Pin 5
GND (VSS)
Pin 6
Chip select for DAC. This line is an output which is brought low by the microprocessor to initiate SPI communication with the DAC.
Pin 7
Serial Data Input. Data input to microprocessor. This line is the data input from the other SPI devices to the microprocessor.
Pin 8
Serial Data Out. Data output from microprocessor). This line is the data output from the
microprocessor to the other devices on the SPI bus.
Pin 9
Chip select for RAM1. This line is an output which is brought low by the microprocessor to initiate SPI communication with the first RAM
Pin 10
SCLK . Clock for SPI communications. This line is the clock used by the SPI devices. It is generated by the microprocessor and controls the clocking of data into and out of devices on the SPI bus.
Pin 11
Delay Range Select Input A (least significant bit)
Pin 12
Delay Range Select Input B
Pin 13
Delay Range Select Input C (most significant bit)
Pin 14
VCC (+3.3V power for microprocessor)
Pin 15
LED indicator output. The LED is used as an indicator during test mode.
Pin 16
Oscillator Input. An external 20MHz oscillator is used to drive this pin.
Pin 17
Unused
Pin 18
Delay setting Input. This is an analog input of the microprocessor which reads the delay setting
input.
Step 5: SPI RAM
The sampled audio is stored in one or two RAM chips. These are U3 and U2 on the schematic.
The RAM used here communicates with the microprocessor using the SPI interface. Capacitors C7 and C8 are
bypass capacitors for the two chips.
This design stores the waveform samples as 8 bit values. As such, it doesn’t provide extremely high
fidelity audio, but it is better than AM radio quality. This circuit was designed to use Microchips’ 23K256
RAM chips, which are 32k bytes in size. (32k by 8). Refer to the datasheet for the part for more details
about its operation.
The RAM is used as a large circular buffer. The maximum amount of delay possible depends on the size
of the buffer and the rate at which the input signal is sampled. The program loops constantly, storing
new samples into the RAM with each loop. When the number of samples exceeds the RAM size, it
wraps over and overwrites the oldest samples.
The system can use either one or two RAM chips, depending on how much capacity is needed. If two
RAMs are used, then the pull up resistor R13 must be used on the chip select line. This line is sampled
by the microprocessor at startup, and if it is pulled high, the program will be configured for two RAMs.
The program will then automatically adjust the way the addressing is handled, so that the two RAMs are
treated in the software as one large buffer. The CS input of the second RAM MUST be pulled high
through a resistor, NOT connected directly to VDD. If it is connected directly to VDD, it will short VDD to
ground when pulling the chip select line low and the processor may likely be damaged. When only one
RAM is used, the line should be pulled low, also through a resistor instead of directly to ground.
As mentioned earlier, the maximum delay depends on the buffer size and the sampling rate. Each
sample is one byte. The maximum amount of audio, in seconds, that can be stored is then given by:
Max Delay (in seconds) = Buffer size (in bytes) / Sample Rate (in samples per second)
So, if one 32k byte RAM chip is used, and the sample rate is 11025 samples per second, the maximum
delay that can be produced is:
Max Delay=32768 / 11025 = 2.972 seconds
If the sample rate is 8000 samples per second the maximum delay is:
Max Delay =32768 / 8000 = 4.096 seconds
If two RAM chips are used, the max delay times would be 5.944 seconds and 8.192 seconds, respectively
for the 11025 and 8000 samples per second rates.
Step 6: SPI DAC
The DAC(U4 in the schematic) receives the samples to output from the microprocessor in digital format,
and converts them to an analog value. It is a SPI device, and shares the data in, data out, and clock lines
with the SPI RAM.
The DAC used here a Microchip MCP4921. This DAC is actually a 12 bit device, but only 8 bits of
resolution are used. The four least significant bits of the values sent to the DAC will always be 0.
Refer to the datasheet for the part for more details about its operation.
Capacitor C9 is a bypass capacitor for the DAC.
Step 7: Reconstruction Filter
The reconstruction filter is a low pass filter used to remove the unwanted frequencies that result from the D/A conversion process. The unfiltered output of the DAC will have a staircase shape. The filter removes unwanted higher frequencies that are an inherent part of a sampled data system, so that the result is a smoother waveform that closely resembles the original input. These unwanted frequencies appear as pairs of “images” of the original signal spectrum, and are centered on multiples (harmonics) of the sampling frequency. The image frequencies are like the upper and lower sidebands present in the spectrum of an amplitude modulated (AM) signal. They diminish in amplitude as the frequency increases. The first set of images located around the sampling frequency can still be of significant amplitude, so a low pass filter is used to attenuate them.
The filter used here is made up of two second order Salen-Key filters cascaded. Op amps U5-B and U5-a are the op amps, configured for an overall cutoff frequency of approximately 6 kHz. R18, R19, C15, and C16 set the cutoff frequency of the first filter section, and R20, R21, C17, and C18 set the cutoff frequency of the second filter section.
It is not really necessary to use a four pole filter. I designed a four pole filter in and left it in place. The first section can be used alone, with good results.
The graphs show how the input signal, raw DAC output, and filtered (reconstructed) outputs compare. The first graph shows the response when the input is a sine wave, and the second graph shows the response for an voice signal. Note the staircase shape of the raw DAQ output, and that this is largely removed by the reconstruction filter.
I’ve also include a graph showing the frequency domain representations of the case where the input is a voice signal. Note that the unfiltered DAC output contains images of the baseband voice signal around the sampling frequency (in this case, 11025 Hz). Also note that the spectrum of the signal output from the reconstruction filter has these image spectra filtered out, and closely resembles the spectrum of the input signal.
Step 8: Power Supply
The power supply uses a 5V regulator VR1 followed by a 3.3V regulator VR2. A diode, D1, on the input to regulator VR1 protects against damage that would be caused if the input power polarity were reversed.
Capacitors C10, C11, C12, C13, C14 and C15 are used for filtering on the inputs and outputs of the two regulators.
The 5V power is used only for the 20MHz oscillator and the optional output power amp. All the remaining circuitry (microprocessor, RAM, DAC, and op amps) are powered from 3.3V
Step 9: Optional Power Amplifier
The output of the reconstruction filter is already of suitable amplitude, but it doesn’t have the output required to directly drive a speaker. If the output from the reconstruction filter is to be applied to some other device such as the audio input of a stereo, etc, then the power amplifier descrived here will not be necessary. An alternative to using the power amplifier described here is to use amplified speakers.
The power amp is based on a LM386 audio amp (U7). The LM386 amp has a fixed gain of 20 as shown. C24 couples the output of the reconstruction filter to the power amp circuit, with resistor R25 and potentiometer R23 used to attenuate the input to the LM386 amplifier. The output of the reconstruction filter can already swing from 0 to +3.3V, so the output from the filter needs be be attenuated before it is input to the LM386 to prevent clipping or distortion.
C23 was included on the input of the LM386, to filter out interference from AM radio. Without it, the circuit was picking up a local AM station!
Capacitor C22 is used to couple the output of the LM386 to a speaker. R22 and C21 are used on the output of the 386 to prevent oscillation.
Note that U7 is powered from +5 volts. C19 and C20 are bypass capacitors on the power inputs to U7.
Step 10: Software
programming have been included here. The PDF file contains a high level flowchart of how the software
works.
The software can run one of two modes: Normal Mode, and Test Mode.
Normal Mode:
In Normal mode, the software performs the primary function of playing back delayed audio. The attached PDF contains a flowchart showing the steps in the process.
In this mode the amount of delay is set by the range select switches and the voltage on the delay input. The sampling rate is determined by the sampling rate switch, allowing for either 8000Hz or 11025Hz sampling rates.
Special Test Mode:
Special Test Mode is a mode I included to help in verifying proper circuit performance after
construction. If this mode is selected, the following will happen after power up:
RAM Tests
The microprocessor tests the RAM by writing a value to it, and then trying to read it back. If the value
returned is a match, the test passes, and the LED will turn on for two seconds. If the value does not
match, then the LED blinks three times. If the circuit has both RAMs populated, the second RAM will be
tested as well, in the same manner, with the LED turning on for 2 seconds for a pass or blinking three
times for a fail.
DAC Test
The first part of the DAC test sends a value to the DAC so the proper output can be verified. First the
DAC will output 1/3 of full scale, and hold it for 3 seconds. It will then jump to 2/3 of full, scale, and hold
for 3 seconds, and then it will jump to full scale and hold for 3 seconds.
The next part of the DAC test the program will output a 1 kHz sine wave, swinging above and below the
½ VDD reference line. So, you should see a sine wave with an amplitude of abut 1.65V, swinging above
and below 1.65V. The sine wave output is on for 0.25 seconds, and then off for 0.25 seconds, and
repeats that way indefinitely.
Step 11: Construction
I constructed the circuit on a solderless breadboard. It just fit on one of the 840 point boards.
For an enclosure, I used a storage container I picked up at an office supply store. This particular style of box has cover held on by latches on each end. This makes opening the case for changes and adjustments very easy.
The breadboard fit well within the box, leaving just enough room for mounting switches and potentiometers. The input jacks for power, audio input, audio output, and delay setting are mounted to the sides and ends of the box. The potentiometers for delay setting and output amplifier volume are mounted on the front side. I mounted the gain select switch and the sample rate selection switches inside the enclosure.The picture shows the breadboard in the box, with the inputs and outputs labeled.
The delay range setting switches are part of a DIP switch mounted on the breadboard.
Step 12: Conclusion
The graph here (same as in Step 7) shows the signal input, DAC output, and reconstruction filter output. For frequencies less than half the sample rate, the circuit performs well at reconstructing the original signal.
As mentioned in the introduction, there are many possible uses for this circuit. If you can think of more, or have any questions, please comment.
Enjoy!
26 Comments
3 years ago
Hi
With some extra circuitry-this would make a great 8 bit looper delay you could busk along to. 6-8 secs is long enough to set up some grewt loops to solo over.
Does anyone know how to build this into this delay please?
4 years ago
It would be wonderful if you shared the CAD file for the schematic. Then someone else could use a tool like EasyEDA.com to generate a PC board that people could order. A useful side effect of that effort would be EasyEDA's automatic generation of a bill of materials, and if components are selected from those available through EDA's PCB supplier, anyone could order a complete kit, with professional multi-layer PC board silk-screened with components. Technology has come a long way in the last seven years. My last batch of boards cost fifty cents each in quantities of ten.
Question 5 years ago on Step 4
Do you have an Eagle Cad project for the project?
Regards
Dave, G4DPZ
10 years ago on Introduction
This is way over my head, but I want to learn. I've been wanting something like this forever so I can listen to local sports broadcasts with live TV of the same game. The radio is so far ahead of the TV that it's impossible to enjoy.
Would it be possible to get a parts list of the components needed to complete this?
Reply 10 years ago on Introduction
I guess I didn't include a real bill of material in the article, but all the part numbers for the ICs and other semiconductors should be on the schematic. The other stuff like resistors are pretty much 1/4 watt parts. The larger caps in the power supply part are electrolytics, and the smaller caps (0.1uF or smaller) are ceramic. The caps used to couple in the audio need to be non polarized types.
If I get a chance I will try to load as complete of a bill of material as I can, but I don't know when I'll get to it.
Reply 5 years ago
Did you ever get around to making a BOM for this? Would be greatly appreciated to help order parts.
5 years ago
Hi There
Is there a resource available on the net where I coulld learn about coding for these. I see many many sites, but which one to choose??
Im asking this as Id like to turn this into a multi-tap deal. This is a delay with about 4 different delay times in the loop
Still gona build this though-when I learn to code!!
diffent delay times in the loop-or an output for each
8 years ago on Introduction
I have an older ver of PIC START PLUS. The 16f88 is not in the file list. Would this software work on a 16f876? And if so what changes might have to be made?
Reply 8 years ago on Introduction
akm37260 seconds agoReply
Flin Flon, eh? I grew up in Winnipeg. I should let the author answer this, but I'll take a shot at it. The two chips ('f88 and 'f876) are different generations of PIC chips. Apart from the 18 pin vs 28 pin packages, you have to deal with the fact that the 'f88 has an internal 4 MHz oscillator. You could use a 16F876, but you'd have to rewrite the code for it, or at least change the configuration word and add an external ocillator. It's probably easier to spend a few dollars for the 'f88. You'll probably need to buy the memory and the DAC anyway.
Reply 8 years ago on Introduction
It would be easier to buy a 188 but the ver of MPLab i use is an older ver which doesn't have the 188 in it's list. I have loaded in the new ver but so much has changed that it would take another lifetime to re-learn it. So i am going to try and just re-write the code for the 876. I was just wondering if the 188 had something that is needed that the 876 might not have. But if they are compatable i will try and do it. Thank you for the reply. Laurie
Reply 8 years ago on Introduction
I was able to load the code into a blank 16F88 and have it run with no modification. I can see it would be more fun to program it yourself for the chip you have.
Good Luck!
Alan.
8 years ago on Introduction
Can you increase the time delay by decreasing the frequency of your microprocessor clock? I would like to develop a time delay of about 15 to 20 seconds.
Reply 8 years ago on Introduction
Reducing the clock frequency - or the sample rate would reduce your frequency response as well. We are already limited to 5KHz, about the quality of AM radio. You would have to adjust the filters to match the reduced cutoff frequency. You can get more delay by adding memory, but buffering 20 seconds of good quality audio might be a bit of a challenge. You probably could do it with the latest chips and their high memory density, but it would take a re-design, I would think.
Reply 8 years ago on Introduction
Thanks for the reply. I was trying to design a 20 sec audio delay without using a microprocessor. To do this I would need a very large capacity shift register (approx. one Mega bit in length) but cannot seem to find one. There are SRAMs on the market with that capacity but are hard to address and control without a microprocessor. Do you know of any large shift registers on the market?
Reply 8 years ago on Introduction
To do this without a microprocessor would be unwieldy. You might consider getting an old cassette player/recorder or two and make a 20 second tape loop. This is low tech but was a method used in the radio industry to allow delayed transmission - for cutting out bad language on the phone or in interviews.
8 years ago on Introduction
I'm glad to hear that the design worked out so well for you.
Good catch, I see what you are saying about the filter. I must have a typo or wrong value in my schematic, as the circuit wouldn't work if it had a 160Hz cutoff.
8 years ago on Introduction
I built this project. Nice design! I am going to use it to sync sound to video on some of the Youtube videos. My video processor is way slower than the audio.
Please check the input anti-aliasing filter. The components in the circuit give a cutoff of 160 Hz. I put a copy of your output filter in - changed 4 parts to give 6 KHz cutoff.. It works great.
Loaded the hex code as is. It ran fine right off.
10 years ago on Introduction
Here is a million dollar idea that someone can try to build.
You know those neighbors that are always raising hell at all hours? Even when you are not home they are stll at it. Set up a decently powered sound system wit one of these dealys and point a directional mic at the offending neighbors house along with a decent speaker or two in the same direction. When they play their music or whoop and holler, fight, run power tools, etc. they get the same noise returned to them on say a half to 3/4 second delay. But if they turn the music down or stop screaming at each other its quiet.
This would be very effective I think. If anything it has to be irritating.
Best, Smitty
Reply 10 years ago on Introduction
The "application" is much mor interesting than the project itself LOL !!!
Reply 10 years ago on Introduction
One of the topics that I came across when looking up information on audio delays is the so called "speech jammer gun" AKA the "Shut up Gun". That thing works like you describe, by playing back slightly delayed audio, only it is intended to be a handheld device and directed at a specific person speaking.
That kind of thing would be a fun extension of this project, if I have the time. There is a video out there of some Japanese students who supposedly built a functioning device.