notes/description:

This third project involved plotting wideband and narrowband spectrograms, and applying equal loudness curves to a signal. Wideband spectrograms display better time resolution, making it easier to pick out formants, while the narrowband spectrograms show better frequency resolution. It is worth noting that the deprecated MATLAB specgram command seems to work a lot faster (in a matter of seconds) than the newer spectrogram command, which seems to produce a more detailed picture.

For the second part, I used a MATLAB function for the standard ISO 226 equal loudness contours found here. For the time-domain filtering, the output for the equal-loudness chirp plays fine coming out of MATLAB, as well as in various audio editors (tested in Audacity and WaveLab), but many media players I tested (Windows Media Player, Media Player Classic, foobar2000) seem to have this distortion at the end of the sweep, for reasons unknown to me.

For the frequency-domain filtering, it's interesting to see that there is barely any noticeable increase in the upper frequency range, unless the equal loudness curve is pumped up ridiculous amounts (into the hundreds of dB) for frequencies about 12.5 kHz. I guess this does make sense, considering that most audio doesn't contain much of those high frequencies in the first place. I created numerous graphs for different audio samples, as well as spectrograms done in WaveLab. It takes forever to generate a nice-looking spectrogram in MATLAB, and I even started running into memory errors as I made them. The spectrograms nicely show the large reduction in mid-range frequencies the the equal loudness contour dictates.

sections:

part 01a, b, c
part 01d
part 02a, b, c
part 02d, e, f

files:

complete problem description (.pdf)

part 01 sound input (my name)
part 02abc sound input

part 01abc code
part 01d code
part 02abc code
part 02def code

part 02abc sound output