A few years ago I received a Creative HS-720 as a gesture of good will. I wasn’t displeased, but since I didn’t need it I didn’t really investigate. Recently I’ve been wanting to use it as a headphone and noticed that even at the lowest possible volume, it was still significantly too loud. What’s really crazy is that there are actually positive reviews for the product out there. Read this negative one instead. That’s all you need to know. Avoid this product. Ideally I’d acquire something like an Asus Xonar U3, a Creative Sound Blaster Play! 2 or a Creative Sound Blaster E1 in combination with proper headphones (although the HS-720 certainly doesn’t make me want to buy another Creative product), but I figured there just had to be a software solution.
Some searching gave me “Fix for USB Audio is Too Loud and Mutes at Low Volume in Ubuntu.” The title isn’t quite accurate, because it’s a workaround. No matter. It requires modifying the file /usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common
. But we might as well take a look at what else there is to play with while we’re at it.
/usr/share/pulseaudio/alsa-mixer/paths$ ls
analog-input-aux.conf analog-input-mic.conf analog-output-lineout.conf
analog-input.conf analog-input-mic.conf.common analog-output-mono.conf
analog-input.conf.common analog-input-mic-line.conf analog-output-speaker-always.conf
analog-input-dock-mic.conf analog-input-rear-mic.conf analog-output-speaker.conf
analog-input-fm.conf analog-input-tvtuner.conf hdmi-output-0.conf
analog-input-front-mic.conf analog-input-video.conf hdmi-output-1.conf
analog-input-headphone-mic.conf analog-output.conf hdmi-output-2.conf
analog-input-headset-mic.conf analog-output.conf.common hdmi-output-3.conf
analog-input-internal-mic-always.conf analog-output-desktop-speaker.conf iec958-stereo-output.conf
analog-input-internal-mic.conf analog-output-headphones-2.conf
analog-input-linein.conf analog-output-headphones.conf
As you can see there’s a bunch of PulseAudio profiles. In my case I might be able to adjust one of the headphones files without changing the entire system, but as luck would have it I use a digital IEC958 output for my main sound system, so I could afford mess up all handling of analog output for the sake of these headphones. I’ll quote part of Chris Jean’s guide in case linkrot ever strikes.
Search for the text “Element PCM”. You should see the following text:
[Element PCM]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
Update this section of text to look like the following (changes are in bold):
[Element PCM]
switch = mute
volume = ignore
volume-limit = 0.01
override-map.1 = all
override-map.2 = all-left,all-right
Note that the value 0.01
can be adjusted as needed to change how quiet and loud the volume is. Making the number smaller reduces the max volume while making the number larger increases the max volume. I tested out 0.05
and found that the max volume was much louder than I would ever use. I also decided that 0.01
was technically louder than I’d ever use. I ended up with a value of 0.0075
(0.005
was too quiet) which I felt gave a good maximum volume and resulted in better overall control over the volume range.
I’d add that it seems to work fine with volume-limit = 1.0
as well. After making that change run killall pulseaudio
(or pulseaudio -k
, but why bother with something non-generic) to get it to work.
You can do some more volume play using alsamixer
, but you’ll have to figure out which device to use first.
$ pacmd list-sources | grep -e device.string -e 'name:'
name: <alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor>
device.string = "1"
name: <alsa_input.usb-046d_0990_E1C9E823-02-Q9000.analog-mono>
device.string = "hw:2"
name: <alsa_output.pci-0000_00_14.2.iec958-ac3-surround-51.monitor>
device.string = "0"
name: <alsa_output.usb-Creative_Technology_Ltd._Creative_HS-720_Headset-00-Headset.analog-stereo.monitor>
device.string = "3"
As you can see the headset is device 3. You can print some more info using amixer
.
$ amixer -c 3
Simple mixer control 'PCM',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 38
Mono:
Front Left: Playback 9 [24%] [-21.67dB] [on]
Front Right: Playback 9 [24%] [-21.67dB] [on]
Simple mixer control 'Mic',0
Capabilities: cvolume cvolume-joined cswitch cswitch-joined
Capture channels: Mono
Limits: Capture 0 - 16
Mono: Capture 14 [88%] [20.83dB] [on]
Simple mixer control 'Auto Gain Control',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [on]
And using alsamixer -c 3
you can play around with the volume a bit more, too.
My only regret is that I haven’t been able to find something like Identifier
for xorg.conf. Oh well, it’ll save me some money in the short term.
PS On Windows, try EqualizerAPO (source).