4

I have my RPI3 connected to a pair of Edifier S1000 speakers through a device that extracts the audio from the HDMI signal and sends it to the speakers through an optical cable.

The sound is clearly better than using the analogue signal from the Chinese PiFi DAC+ card that I used before, but I would like to have the raw audio signal sent directly to the speakers, untouched by the mixer, and so far I was not able to do that.

The first thing I noticed when I heard my first song was that the sound was clearly distorted (clipped) whenever the music was loud enough. I found out that when the volume is at 100% there is a 4 decibel gain. Why? I mean this is a digital output, what do we get by increasing the volume? So, I went to alsamixer and found out that reducing the volume to 86% would give me approximately 0 decibels gain (EDIT: actually it is better to use amixer cset numid=1 0 more precise in getting to 0dB). That took care of the clipping, but I don't want a mixer to change the audio signal. My speakers include a digital amplifier which is the best way to control the volume.

What I have done so far: I included in /boot/config.txt

no_hdmi_resample=1
hdmi_stream_channels=1
hdmi_force_edid_audio=1

In audacious I selected as output:

hw:CARD=ALSA,DEV=1

Also, in the file /var/lib/alsa/asound.state we can see the dbmax 400 value (I tried to change this value to 0 but it just gets restored on reboot).

state.ALSA {
    control.1 {
            iface MIXER
            name 'PCM Playback Volume'
            value 6
            comment {
                    access 'read write'
                    type INTEGER
                    count 1
                    range '-10239 - 400'
                    dbmin -9999999
                    dbmax 400 
                    dbvalue.0 6
            }
    }

Is there any way to, in order of preference:

  1. skip the alsa mixer completely,
  2. make the mixer not change the sound data,
  3. or at least to set the dbmax to 0?

Thanks!

1

I have tried another OS, RuneAudio (an OS engineered to provide the best possible sound quality and with a very nice UI), which does have the option to bypass the volume control. Luckily I had an extra RPI2 that I was using as a backup server and it's now running RuneAudio while my usual Raspbian on a RPI3 continues to work as my main desktop machine. It's a pity though, that I couldn't find a simple way to just disable volume control in Raspbian / ALSA. :-(

I have also decided to buy a DiGi board to install on the old RPI2 and it arrived today. Making some sound quality comparisons between:

  • the output coming from the RPI2 running RuneAudio with the DiGi board, connected to the speakers with a coaxial cable
  • and the Raspbian RPI3 connected through the HDMI and an optical audio extractor.

Provides two main conclusions:

  1. Using amixer cset numid=1 0 really turns the volume close to zero (nearly no amplification or reduction although there is a slight difference in volume).
  2. The difference between the two systems is minimal. I can easily distinguish the RuneAudio clearer output but only if using lossless sources and the difference comes out better at specific recordings. But it is a really subtle difference.

In any case I'm not sorry for going with the RuneAudio setup, it's really a delight to use and listen to, I just need a new backup server!

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.