2

I have an external USB sound card to hook up my PC (Fedora 20) to my stereo amplifier:

http://www.project-audio.com/main.php?prod=usbbox&cat=boxes&lang=en

Now, this normally works fine, however, from time to time, I have problems with the volume settings. In particular, when playing videos and music with VLC, the volume settings tend to get messed up. For example, in Pulse Audio Volume Control, I set the master volume to 100%, but then, in VLC, the volume setting is below 100%. If I then increase the volume in VLC to 100%, the master actually goes above 100%, which is not very desirable since it will result in distorted audio. The same thing also happens when playing Youtube videos in Firefox. This is rather annoying since it not only reduces the audio quality, it also leads to unpredictive behavior as one volume setting on the amp can produce a vast range of actual volumes on my speakers.

So, how can I completely disable the volume setting on the PC part, fixing it at 100% and control the actual volume only on the amplifier? In other words, I would like to behave the USB sound card exactly as a CD player, tuner, or other audio source, with a fixed level output.

0

I had a issue with some similarities (including broken volume but at low level). I found a workaroudn and explained in Pulseaudio with external sound adapter: work around broken sound .

Let's adapt it for your case. The command below should find the correct sink name for you (it just takes the first one):

export LC_ALL=C 
ADAPTER_SINK_NAME=$( pactl list sinks | sed -n 's/^.*Name: \(.*\)$/\1/p' | head -n 1 ) 
echo $ADAPTER_SINK_NAME

then plug it into a software-defined sink that will allow you to set volume

pacmd load-module module-combine sink_name=adapter-soft-volume slaves=$ADAPTER_SINK_NAME
pactl set-default-sink adapter-soft-volume

For details see Pulseaudio with external sound adapter: work around broken sound

This should work for applications launched from now on.

(Optional) this will move the currently playing applications to using that sink.

for SINK_ID in $(pactl list sink-inputs | sed -n 's/^Sink Input #\([0-9]*\)$/\1/p')
do
    echo Sink $SINK_ID
    pactl move-sink-input $SINK_ID adapter-soft-volume
done

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.