<< Chapter < Page | Chapter >> Page > |
When implementing your spectrogram algorithm, make the following assumptions:
Here are some things to keep in mind:
zeros()
or
norm()
), as you want to make porting it to C as straightforward as possible.If your input signal is 8192 samples long, then your spectrogram output can be thought of as a 256 x 32 real-valued matrix. Make sure to understand why. You can then use the
image()
or
imagesc()
functions in MATLAB to visualize the data.
Your task is to implement a C version of the spectrogram algorithm that you wrote in Part 3. Here are some guidelines for how to proceed:
process()
is called,
inBuf
has
N
samples available to be processed.Lab4Activity.java
The values of
outBuf
must be between 0.0 and 1.0. This is because the output values are directly mapped to RGB colors, with each color channel being 8 bits. As the spectrogram output is generally not in between 0.0 and 1.0, you will need to find an appropriate mapping.
One possible mapping is to linearly scale and saturate the spectrogram output; you must determine the scaling parameters experimentally by processing real audio data. Here is an outline of one way to do this:
Resume
with all breakpoints disabled.process()
function returns.inBuf
array to a file. Review
Part 2: Exporting Variables to a File if you don't remember how.Be able to describe the effects of windowing and zero-padding on FFT spectral analysis. Know basic properties of the Fourier transform, DTFT, and DFT. What are the trade-offs between block-based and sample-by-sample processing? Although we did not require you to implement it, understand the effects of overlapping when computing the STFT. Understand the basic Android project structure and the relationship between Java and C programming for Android.
Notification Switch
Would you like to follow the 'Ece 420 fall 2013' conversation and receive update notifications?