Implementation
For this exercise, you will extend the system from
Audio Effects: Using External Memory
to generate a feedback-echo effect. You will then extend this
echo effect to use the serial port on the DSP EVM. The serial
interface will receive data from a MATLAB GUI that allows the
two system gains and the echo delay to be changed using
on-screen sliders.
Feedback system implementation
First, modify code from
Audio
Effects: Using External Memory to create the
feedback-echo system shown in
Figure 1. A
one-tap feedback-echo is a simple audio effect that sounds
remarkably good. You will use both channels of input by
summing the two inputs so that either or both may be used as
an input to the system. Also, send several test signals to
the six-channel board's D/A converters:
- The summed input signal
- The input signal after gain stage
G
1
G
1
- The data going into the long delay
- The data coming out of the delay
You will also need to set both the
input gain
G
0
G
0
and the feedback gain
G
1
G
1
to prevent overflow.
As you implement this code, ensure that the delay
n and the gain values
G
1
G
1
and
G
2
G
2
are stored in memory and can be easily changed
using the debugger. If you do this, it will be easier to
extend your code to accept its parameters from MATLAB in
MATLAB Interface
Implementation.
To test your echo, connect a CD player or microphone to the
input of the DSP EVM, and connect the output of the DSP EVM
to a loudspeaker. Verify that an input signal echoes
multiple times in the output and that the spacing between
echoes matches the delay length you have chosen.
MATLAB interface implementation
After studying the MATLAB interface outlined at the end of
Using the Serial Port with a MATLAB GUI, write MATLAB code
to send commands to the serial interface based on three
sliders: two gain sliders (for
G
1
G
1
and
G
2
G
2
) and one delay slider (for
n). Then
modify your code to accept those commands and change the
values for
G
1
G
1
,
G
2
G
2
and
n. Make sure that
n
can be set to values spanning the full range of 0 to
131,072, although it is not necessary that every number in
that range be represented.
Comments, questions, feedback, criticisms?
Send feedback