02.08.2015 01:17, Rene Bartsch wrote: > Hi, > > with > > load-module module-pipe-sink format=s32le rate=96000 channels=8 > channel_map=front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right > sink_name=brutefir.FCA610 file=/tmp/brutefir.FCA610 > sink_properties='device.description="BruteFIR Behringer FCA610"' > > a virtual sink can be created which pipes audio streams to a FIFO. The > drawback is that an external script has to start external processing of > the audio stream. > > Is there any way to call a shell command from Pulseaudio and route a > virtual sink to STDIN of that shell-command? No. But as this question is really about brutefir, not any arbitrary program, here is an alternative way to start it. The drawback is that it will not work after logging out and logging in again. Install JACK. In /etc/environment, put one line: JACK_START_SERVER=1 In /home/user/.jackdrc, put one line: /home/user/.jack_session.sh In /home/user/.jack_session.sh, put this script, make it executable: #!/bin/sh jackd -r -d alsa -d hw:PCUSB -s -r 44100 -p 256 & ( sleep 4 ; brutefir ) & In /home/user/brutefir_config, put (in this example, a separate filter is applied to each channel for room-correction purposes): sampling_rate: 44100; #show_progress: false; filter_length: 1024,64; convolver_config: "/home/user/.brutefir_wisdom"; coeff "left" { filename: "/home/user/.filter-left.pcm"; format: "FLOAT_LE"; }; coeff "right" { filename: "/home/user/.filter-right.pcm"; format: "FLOAT_LE"; }; input "i_left", "i_right" { device: "jack" { ports: "pulseaudio:front-left", "pulseaudio:front-right"; }; channels: 2; sample: "AUTO"; }; output "o_left", "o_right" { device: "jack" { ports: "alsa_pcm:playback_1", "alsa_pcm:playback_2"; }; channels: 2; sample: "AUTO"; }; filter "f_left" { inputs: "i_left"/9; outputs: "o_left"; process: 0; coeff: "left"; }; filter "f_right" { inputs: "i_right"/9; outputs: "o_right"; process: 0; coeff: "right"; }; Finally, copy /etc/pulse/default.pa to /home/user/.config/pulse/default.pa, and add there: load-module module-jack-sink connect=no client_name=pulseaudio Also, let me guess: are you trying to emulate virtual 7.1 sound on headphones? Then, if your filter is shorter than 64 samples, then there is no need to mess with brutefir at all. Just make a multichannel wav file with the contributions of each input channel to the left output, and provide it to module-virtual-surround-sink. The limitation to 64 samples can be easily patched out from module-virtual-surround-sink. And finally: this is the third request to convolve PulseAudio output with something arbitrary. Someone has to sit down and write a native replacement for brutefir. Unfortunately, for me, this is not really possible, because of the dayjob which keeps me busy 200% of time. -- Alexander E. Patrakov