Dynamic Noise Masker

Music 220a Final Project

Roy Fejgin

December, 2009

Getting It

This is the ChucK source code. There's also a recording of the program in action, with the input (room recording) panned to the left channel and the output (generated noise) to the right.


I often run into the problem of trying to study in an environment with many auditory distractions. The interesting thing is that the environment is not continuously noisy, but instead the noise rises and falls as people and conversations come and go.

As far as I know, traditional noise-canceling headphones have trouble dealing with such non-repetitive noise patterns. The alternative of just blasting some sort of music or noise into the headphones is far from ideal as well, since

a) the music itself can be distracting, and

b) constant loud noise quickly causes listener fatigue.

Project Description

The system uses input from a microphone and analyzes the noise in the room. That information is used to control various parameters of a noise synthesized by the program and sent to the user's headphones. The synthesized noise is smooth and care is taken that it never changes it abruptly . That is key, since it is what makes the masking noise non-distracting and therefore preferable to the room noise.

The system is adaptive both in frequency and in time: the noise it generates gets louder or softer depending on the room's noise level. Also, the noise's spectral composition matches the room's. That allows the program to minimize the disturbance to the user: noise is generated only for the frequencies and times where it is required.


The project is implemented as a ChucK program. The diagram above shows the signal flow. Here is a detailed description: