Hi all I have been working on a bass management configuration for some time now, inspired by the "Low-pass filter for subwoofer channel (HOWTO)". I want to share my experiences and hopefully get some feedback on how to improve it. The purpose of this configuration is to pass all low frequency information through the lfe channel. It should work for any number of channels in the input. The primary reason for removing low frequency information from all channels, except lfe, is to avoid large cone movement in speakers, thus improve sound quality when playing loud. The low-pass filter from the howto uses the identity filter to pass everything through unfiltered, this will work if you set your lfe low pass filter below speaker roll-off. The low pass filter from the howto uses "plug" plugin that should do automatic conversion, but I never got that to work. I use route and explicit conversion through lfloat plugin. I started using Ubuntu Studio in beta release, and then I could do the conversion to float before the route pcm. I wanted to do that to avoid overflow when adding all channels to lfe channel. This doesn't work anymore, alsa complains about unusable plugin. So I put the route plugin before conversion. Is there any risk for integer overflow? I have tried using much lower volume settings in the route plugin, but that sounds really bad, I guess loss of detail when integers are scaled. The filter high-passes everything except lfe. Lfe is low-pass filtered. The high pass frequency is 200 hz, and the low pass is 100. The 100 hz difference is needed, else the 100-200 hz band sounds too loud. There is not much thought behind this though, I am shure there is a more scientific value to use here. I have tried to find out how to configure the butterworth filters for 24 db/octave, but found nothing. Anyone? What I really would like to do is linkewitz-riley filtering. Is that possible with these filters? If so, how much frequency difference should there be between high-pass and low-pass filters? The whole thing works pretty well. I have only tested playing CDs with this config, but it should work with films and other media formats also. Sometimes the butterworth filter segfaults. VLC and Kaffeine provokes this bug. Alsa-player not yet. See log at end of email. The config used when the bug happened is shown in the link below, it is slightly different (other values for volume in route plugin) from this config. pcm.!default { type plug slave.pcm mix_71 } pcm.mix_71 { type route slave.pcm to_float slave.channels 8 ttable { # Pass through all channels untouched 0.0 1 # front left 1.1 1 # front right 2.2 1 # side left 3.3 1 # side right 4.4 1 # center 5.5 1 # subwoofer 6.6 1 # rear left 7.7 1 # rear right # Copy everything, except lfe, to lfe # Possible integer overflow? 0.5 0.75 # front left 1.5 0.75 # front right 2.5 0.75 # side left 3.5 0.75 # side right 4.5 0.75 # center 6.5 0.75 # rear left 7.5 0.75 # rear right } } pcm.to_float { type lfloat # Linear<->Float conversion PCM slave.pcm filter slave.format FLOAT } pcm.filter { type ladspa slave.pcm to_int # lib64 since it is an x64 system, change to "lib" for 32 bit systems path "/usr/lib64/ladspa" channels 8 plugins { 0 { id 1904 #butterworth high pass policy none input.bindings.0 "Input"; output.bindings.0 "Output"; input { controls [ 200 0.755 ] } } 1 { id 1904 #butterworth high pass policy none input.bindings.1 "Input"; output.bindings.1 "Output"; input { controls [ 200 0.755 ] } } 2 { id 1904 #butterworth high pass policy none input.bindings.2 "Input"; output.bindings.2 "Output"; input { controls [ 200 0.755 ] } } 3 { id 1904 #butterworth high pass policy none input.bindings.3 "Input"; output.bindings.3 "Output"; input { controls [ 200 0.755 ] } } 4 { id 1904 #butterworth high pass policy none input.bindings.4 "Input"; output.bindings.4 "Output"; input { controls [ 200 0.755 ] } } 5 { id 1903 # Butterworth low-pass filter policy none input.bindings.5 "Input"; output.bindings.5 "Output"; input { controls [ 100 0.755 ] } } 6 { id 1904 #butterworth high pass policy none input.bindings.6 "Input"; output.bindings.6 "Output"; input { controls [ 200 0.755 ] } } 7 { id 1904 #butterworth high pass policy none input.bindings.7 "Input"; output.bindings.7 "Output"; input { controls [ 200 0.755 ] } } } } pcm.to_int { type lfloat # Linear<->Float conversion PCM slave.pcm surround71 slave.format S32_LE } My alsa config: http://www.alsa-project.org/db/?f=41878a60e92d2bc3439293d9eec51251cf52c33e # tail -n 24 messages Nov 7 18:37:35 htpc kernel: [ 4992.267216] __ratelimit: 60 callbacks suppressed Nov 7 18:37:35 htpc kernel: [ 4992.267221] gamix[7469]: segfault at 0 ip 000000000040a665 sp 00007fff6ab37f70 error 4 in gamix[400000+11000] Nov 7 18:39:06 htpc kernel: [ 5083.614336] sr 2:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE Nov 7 18:39:06 htpc kernel: [ 5083.614346] sr 2:0:0:0: [sr0] Sense Key : Illegal Request [current] Nov 7 18:39:06 htpc kernel: [ 5083.614355] Info fld=0x0 Nov 7 18:39:06 htpc kernel: [ 5083.614358] sr 2:0:0:0: [sr0] Add. Sense: Illegal mode for this track Nov 7 18:39:06 htpc kernel: [ 5083.628229] sr 2:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE Nov 7 18:39:06 htpc kernel: [ 5083.628240] sr 2:0:0:0: [sr0] Sense Key : Illegal Request [current] Nov 7 18:39:06 htpc kernel: [ 5083.628248] Info fld=0x0 Nov 7 18:39:06 htpc kernel: [ 5083.628252] sr 2:0:0:0: [sr0] Add. Sense: Illegal mode for this track Nov 7 18:39:06 htpc kernel: [ 5083.707839] sr 2:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE Nov 7 18:39:06 htpc kernel: [ 5083.707849] sr 2:0:0:0: [sr0] Sense Key : Illegal Request [current] Nov 7 18:39:06 htpc kernel: [ 5083.707858] Info fld=0x0 Nov 7 18:39:06 htpc kernel: [ 5083.707861] sr 2:0:0:0: [sr0] Add. Sense: Illegal mode for this track Nov 7 18:39:06 htpc kernel: [ 5083.714229] sr 2:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE Nov 7 18:39:06 htpc kernel: [ 5083.714236] sr 2:0:0:0: [sr0] Sense Key : Illegal Request [current] Nov 7 18:39:06 htpc kernel: [ 5083.714243] Info fld=0x0 Nov 7 18:39:06 htpc kernel: [ 5083.714246] sr 2:0:0:0: [sr0] Add. Sense: Illegal mode for this track Nov 7 18:39:06 htpc kernel: [ 5083.721411] sr 2:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE Nov 7 18:39:06 htpc kernel: [ 5083.721420] sr 2:0:0:0: [sr0] Sense Key : Illegal Request [current] Nov 7 18:39:06 htpc kernel: [ 5083.721428] Info fld=0x0 Nov 7 18:39:06 htpc kernel: [ 5083.721431] sr 2:0:0:0: [sr0] Add. Sense: Illegal mode for this track Nov 7 18:40:42 htpc kernel: [ 5179.932568] __ratelimit: 30 callbacks suppressed Nov 7 18:40:42 htpc kernel: [ 5179.932577] vlc[8345]: segfault at 100000001 ip 00007f06c598e8eb sp 00007f06c5889f30 error 4 in butterworth_1902.so[7f06c598b000+6000] ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Alsa-user mailing list Alsa-user@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-user