On Fri, 2009-05-22 at 14:20 +0700, Patrick Shirkey wrote: > > Thanks for you reply. It's good to know that progress is being made. > FYI, I have received another report suggesting that pulse combined with > jackdbus has this problem fixed which I intend to test asap. > > Can you provide a command line for this that works for you please? I > would like to test it here. Okay. As I warned, it IS rather hackish. There's two scripts, the first one I name pulse-nojack, the second I name pulse-withjack. Sequence of events is as follows:- 1. Start pulseaudio (I comment out every HAL/alsa-related line in /etc/pulse/*.pa, so pulse just starts with a null sink if it hasn't yet). Using the --start means if pulse is already started nothing will be done (use current server). 2. Check for modules needing to be unloaded. Just pactl with some greps and sed, then pactl unload-module. 3. Check for jackd (this may need to be changed once jack2 comes out, I've been monitoring the jackdbus conversations and things are in real flux there), kill/start if needed. 4. Load the modules which need loading. Please note there's probably some wrapping problems with this code. Please check it out, should not be hard to figure out what to do. FIRST SCRIPT: PULSE-NOJACK---------------------------------------------- #!/bin/bash # ORIGINAL SCRIPT FROM: #http://ubuntuforums.org/showthread.php?t=904379&highlight=bash+ping # edited by edmondt in: http://ubuntuforums.org/showthread.php?t=939183 # edited by ngoonee, Feb 2009 # Start pulseaudio if it hasn't already been started pulseaudio --start # Name the module to be unloaded. MODULE="alsa" # The line used to startup JACK. JACKSTART="/usr/bin/jackd -R -dalsa -r44100 -p64 -n3 -D -Chw:0 -Phw:0" SINKID=$(pactl list | grep -B 1 "Name: module-$MODULE-sink" | grep Module | sed 's/[^0-9]//g') SOURCEID=$(pactl list | grep -B 1 "Name: module-$MODULE-source" | grep Module | sed 's/[^0-9]//g') if [ -e $SINKID ]; then echo $MODULE sinks/sources not loaded, proceeding.... else echo $MODULE sinks/sources are loaded, ID of $MODULE sink is $SINKID ID of $MODULE source is $SOURCEID... echo Unloading module $SINKID and $SOURCID pactl unload-module $SINKID pactl unload-module $SOURCEID fi if [ $( pidof jackd ) ]; then echo JACK is running, nothing to be done. else echo JACK is not running, starting JACK... $JACKSTART & sleep 3 fi JACKSINKID=$(pactl list | grep -B 1 "Name: module-jack-sink" | grep Module | sed 's/[^0-9]//g') JACKSOURCEID=$(pactl list | grep -B 1 "Name: module-jack-source" | grep Module | sed 's/[^0-9]//g') if [ -e $JACKSINKID ]; then echo JACK sinks/sources not loaded, loading now... pactl load-module module-jack-sink pactl load-module module-jack-source else echo JACK sinks/sources are loaded, ID of JACK sink is $JACKSINKID ID of JACK source is $JACKSOURCEID... fi exit 0 ------------------------------------------------------------------------ SECOND SCRIPT: PULSE-WITHJACK------------------------------------------- #!/bin/bash # ORIGINAL SCRIPT FROM: # http://ubuntuforums.org/showthread.php?t=904379&highlight=bash+ping # edited by edmondt in: http://ubuntuforums.org/showthread.php?t=939183 # edited by ngoonee, Feb 2009 # Start pulseaudio if it hasn't already been started pulseaudio --start # Name the module to be unloaded. MODULE="alsa" # The line used to startup JACK. JACKSTART="/usr/bin/jackd -R -dalsa -r44100 -p64 -n3 -D -Chw:0 -Phw:0" SINKID=$(pactl list | grep -B 1 "Name: module-$MODULE-sink" | grep Module | sed 's/[^0-9]//g') SOURCEID=$(pactl list | grep -B 1 "Name: module-$MODULE-source" | grep Module | sed 's/[^0-9]//g') if [ -e $SINKID ]; then echo $MODULE sinks/sources not loaded, proceeding.... else echo $MODULE sinks/sources are loaded, ID of $MODULE sink is $SINKID ID of $MODULE source is $SOURCEID... echo Unloading module $SINKID and $SOURCID pactl unload-module $SINKID pactl unload-module $SOURCEID fi if [ $( pidof jackd ) ]; then echo JACK is running, nothing to be done. else echo JACK is not running, starting JACK... $JACKSTART & sleep 3 fi JACKSINKID=$(pactl list | grep -B 1 "Name: module-jack-sink" | grep Module | sed 's/[^0-9]//g') JACKSOURCEID=$(pactl list | grep -B 1 "Name: module-jack-source" | grep Module | sed 's/[^0-9]//g') if [ -e $JACKSINKID ]; then echo JACK sinks/sources not loaded, loading now... pactl load-module module-jack-sink pactl load-module module-jack-source else echo JACK sinks/sources are loaded, ID of JACK sink is $JACKSINKID ID of JACK source is $JACKSOURCEID... fi exit 0 ------------------------------------------------------------------------