SoftwarePractice.org: Home | Courseware | Wiki | Archive

Digital acoustical correction

From SoftwarePractice.org

This article describes a project that implements an acoustical correction system using Matlab. It is suitable for a team implementation and design project in a second class in signals and systems.


Overview

The fidelity of audio reproduction or amplification is dependent on many things. Non-linearities in the recording chain or microphones, distortion in electronics, and non-linearities in loudspeakers are three obvious culprits. One factor that is often overlooked, however, is the acoustics of the listening environment itself. Although many venues -- such as concert halls -- are acoustically tailored at great expense, other environments are not.

Consider a simple example, in which a single loudspeaker is placed in a room, and a listener is situated elsewhere in the room. The listener hears the direct signal from the loudspeaker, but shortly thereafter starts hearing the same signal reflected from a wall or ceiling. With just a single reflection, the heard signal y is

  for all n, y(n) = x(n-T1) + alpha x(n-T2)

For alpha=1, this is a pure comb filter; for other values of alpha, the frequency response is still not exactly flat! You can imagine that with many, repeated reflections from different surfaces, the frequency and time signal received by the listener is substantially different the the signal that left the loudspeaker, x.

Some correction for acoustical problems can be made to the audio signal before it reaches the loudspeaker. Digital processing now makes it possible to perform correction and compensation that was impossible or not cost-effective previously. This kind of correction is not a panacea, but can certainly be used to improve the overall performance of an audio playback system under less-than-ideal conditions.

Project description

For this project, you will design and implement an acoustical correction system in Matlab. The program will have a measurement mode, a parameter adjustment mode, and a correction mode. In measurement mode, a signal is generated, and the response of the acoustical environment is recorded. In parameter adjustment mode, the user chooses certain parameters to attempt to make corrections for the acoustical environment. In correction mode, a signal is modified and played back in real time into that same environment.

You are to design a suitable test signal for measurement. In addition, you are to implement all three modes of operation, and to demonstrate the system in use. You are also to determine a method of compensating for non-linearties in the loudspeaker used to generate the acoustical measurement signal. You will demonstrate the program in operation in a real listening environment.

Your project documentation should address at least the following:

  • The theory behind your program
  • A description of your implementation, including issues encountered and proposed enhancements
  • Sample Matlab code to illustrate key points
  • Plots and spectra to illustrate program operation
  • A discussion of the limitations of your program

Extra credit will be awarded to teams who do an excellent job of implementing and documenting the program as described above, and either a) make their program function in real time, or b) implement a useful and usable GUI to the program.