Hi,

I want to make is a DSP module that improves the sound quality of the sound coming from the laptop builtin speakers by applying DSP (FIR/IIR filters).
I want to route all audio played back (from for instance an offline WAV or MP3 file, from a movie, or streamed from the internet) to pass through the
DSP plugin whenever headphones are NOT connected. When headphones are connected no processing should be applied.
I want to place the DSP module as close to the hardware as possible to make sure all audio is really routed through the DSP plugin so I always can enjoy
the DSP improvements made to the sound.

Where should I place this module/DSP code?
- As a plugin to PulseAudio?
- As a plugin to ALSA?
- As its own virtual sound card?
- In the audio driver for my built-in sound card?
- As a kernel module?
 
I have tried loading the LADSPA-module using the module-ladspa-sink in PulseAudio but I am not sure this is the best solution.
I need to remove some limitations in module-ladspa-sink to get it working properly ( multichannel audio, only DSP processing for internal speakers).
 
My requirements:
1) Must be able to detect if headphones are connected
2) Must be able to process stereo and multichannel (5.1/7.1) formats. I need the multichannel formats to perform binaural downmixing to stereo.
So it is important that I can receive multichannel audio and mix it down to stereo and output it to a stereo soundcard.

/Kim