SoftwarePractice.org: Home | Courseware | Wiki | Archive

Profanity delay

From SoftwarePractice.org

This article describes a project to design and implement a "profanity delay" for broadcast applications. It is suitable for a team implementation and design project in a second class in signals and systems.

Overview

In talk radio, there is always a signal processing unit called a "profanity delay" between the mixing desk output and the live broadcast feed. When in operation, the unit delays the output from the mixing desk by several seconds. (Typically the delay is seven seconds, although off-the-shelf units offer variable delay amounts, up to about 30 seconds.)

During a show, the talk-show host is typically conversing with a caller who has phoned in. If the caller should say something that contravenes broadcast guidelines, then the sound engineer drops the delay -- that is, removes the contents of the delay line. The undesired utterance (which was in the delay line) does not go to the broadcast transmitter, and proper decency is maintained...

The delay unit has several modes. In "normal" mode, the output is delayed by several seconds (typically user-settable). In "pass-through" mode, there is no delay between the output and the input. In "recovery" mode, the delay line is being filled gradually using one of a number of different possible techniques. (Note that the radio broadcast is still live!) Furthermore, there should be a transition mode to move gradually between normal and pass-through modes, in order to avoid producing a "glitch" in the audio output.

Project description

You will implement a profanity delay in Matlab. The input to the program will be a realtime audio stream representing the audio from the mixing desk, and the output is the signal sent to the broadcast transmitter. You will need to create a simple GUI to the program, which consists of at least the "Dump" button and a visual display of the current program mode.

When the program is started, it begins by filling its delay buffer from the input stream. After the required time has elapsed, it starts producing the output signal.

When the "Dump" button is pressed, the contents of the delay buffer are removed from the signal stream, and the program then goes into its delay recovery mode. You are to attempt two different methods of delay recovery:

  • A time-domain based technique
  • Time dilation using time-frequency analysis and synthesis

You should aim to have a non-realtime version of your program working first, in order to verify that your delay recovery algorithms are working. Only then should you attempt the realtime implementation.

Your project documentation should address at least the following:

  • The theory behind your two recovery methods
  • A description of your implementation, including issues encountered and proposed enhancements
  • Sample Matlab code to illustrate key points
  • Plots and spectra to show how your program behaves
  • A discussion of the benefits and limitations of your chosen recovery methods
  • Notes on how these techniques can be implemented in realtime hardware

Resources

(In preparation)

Personal tools