In this project I created an application to allow users to interact with 9 different audio filters (Lowpass, Highpass, Bandpass 1 (0 db gain), Bandpass 2 (Normalized gain), Notch, Allpass, Peaking EQ, Lowshelf, and Highshelf). I designed all my own UI elements and created my own methods to filter the audio stream in real-time. For more information check out the full post.
The filters were designed using a 2nd order feedback equation with an adjustable Q-factor to allow the user to specify the bandwidth of the filter’s falloff (lower Q = wider bandwidth, higher Q = narrower bandwidth). With a medium/high Q-factor the very characteristic frequency-sweep can be heard when sweeping the frequency cutoff slider low to high.
Audio Recording / Playback:
Instead of manipulating the live stream of audio coming into the microphone I instead programmed a history buffer that records and playbacks 15 seconds of audio. Once the audio has been recorded and is being played back the user can scroll back and forth through the audio by clicking and dragging inside the audio waveform box (easiest seen in the demo videos below).