Analog input sampling rate and bit depth

For analog input I chose a Hifiberry DAC + ADC to bring in a phono (post preamp). I will not be using the DAC as I have a USB Schitt audio dac i am using. I will just be using the analog input. I have gotten this operating as an input and it seems to be OK.

Question: Volumio shows 48K 16bit as the sample rate for the input. I know the board goes higher…is there some way to bring this in at a higher sample rate and bit depth? The manufacturer says that control must come from the software.

Question: Is there documentation on how volumio handles sampling frequencies…what is the native bit depth being processing via the DSP etc? Do all inputs have to be set the same? How to ensure that?
----------------------------- Delete here & above before posting below -----------------

1 Like

Hi Peter, using an external USB ADC to connect turntable to Volumio, I get same observation (48kHz for a 192kHz capable ADC).

look at my thread here : Vinyl lovers : ADC I2S card as Volumio analog input - driver compiled but no ALSA mount - #10 by BenoitMarhieu

I think the 48Khz is the default frequency of ALSA and the current implementation of non I2S sources in Volumio has not been nailed down to their full capabilities.
My gut feeling after some search is there are ways to manually define card capabilities in ALSA, but this is currently by manual change in the files, not through Volumio.
@volumio , @dvo

when all this will be sorted out, I think it would be good to write a case as more and more people are struggling in understanding and properly setting up this DIY analog input capability (I know we could buy the Primo and get it working :wink: )

Benoit

@Wheaten do you know anything about this?

Thank you deeply for this answer as I have asked the same exact question and got zero response. I’m at an impasse though… have you had much luck with analog input? I’m running Volumio on two separate raspberry pi’s (3&4) and they both seem to be crashing/freezing after using analog input for an hour or so. I’ve done everything from swapping to faster sd cards and rigging up elaborate cooling solutions with zero luck. I’ve come to the conclusion that the feature is just buggy, which sucks because it is the whole reason I’m paying for premium.

So far ADC through USB seems stable, I’ve listened to several LP without any issue (so far).
The only concern from my side is the Volumio sampling rate at 48kHz, with is IMO too low to enjoy the full potential of vinyls (hence my use of a 192kHz ADC interface).

Me too- I’m using the Hifiberry DAC+ ADC which is capable of 192kHz but it’s capped at 48. I only get stability for about an hour or so before I have to reboot the raspberry pi and start over. I’m streaming vinyl from my bedroom to my livingroom Soundsystem through two raspberry pis + DAC hats. Both of the machines have issues leaving me to believe it is a software issue/bug.

it seems Volumio resample audio stream for multiroom purpose.
here is an part of /etc/asound.conf :

# This PCM performs any necessary rate/format/channel conversion before sending on to the Server FIFO
pcm.volumioMultiRoom {
    type plug
    slave {
        pcm "volumioMultiRoomFIFO"
        rate 48000 
        format "S16_LE"            
        channels 2        
    }
    rate_converter "speexrate_medium"
}

adding another pcm for local play or changing this one for a higher rate might be a potential start of a solution… anyway I do not know all the intricacies and this might completely corrupt Volumio.

So better wait for feedback from the authors :wink:

Benoit

Yes but only for the audio which is sent to Multiroom clients. Everything else is bitperfect.

Re this issue: Volumio picks up the sample rate and bith depth that the audio device input is sending.
So, really nothing we can do on our end to pick up higher frequencies unless the audio device is set to do so, which is probably done at driver level…

Hi Michelangelo,

my understanding that the hardware sampling rate of the ADC is defined by the software, through the plugin. If the plugin and associated driver do not receive any rate request (as the current config), they fall back to the default 48kHz request to the hardware (hence we all get 48kH through different hardware that are all 192kH ADC capable : Tascam, Hifiberry DAC+ADC, Focusrite Scarlett, …). There is no resample in the ADC or driver/plugin until software request stays within ADC capabilities (i.e. 192kHz). And if you do not resample in Volumio, then it will be bit perfect from ADC to DAC.

I did try to change the USB card sample rate settings in ALSA conf, but strangely, the file is overwritten with the default content at each reboot, canceling all the change I made. So impossible to test the effect.

I think it would be super if we could agree on a way to test some configuration with an ALSA expert.
@volumio @Wheaten @dvo

Cheers,

Benoit

i’m not a expert in this field i just record on a pc in the quality i need no problems on a pc.

Very interesting. Would you mind sharing the changes you did on the alsa conf?

Sure!

a bit on my setup first :
hardware is TASCAM US1x2HR

volumio@volumio-doma:~$ cat /proc/asound/US1x2HR/stream0 
TASCAM US-1x2HR at usb-0000:01:00.0-1.3, high speed : USB Audio

Playback:
  Status: Stop
  Interface 2
    Altset 1
    Format: S32_LE
    Channels: 2
    Endpoint: 2 OUT (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000
    Data packet interval: 125 us
    Bits: 24
    Channel map: FL FR

Capture:
  Status: Stop
  Interface 1
    Altset 1
    Format: S32_LE
    Channels: 2
    Endpoint: 1 IN (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000
    Data packet interval: 125 us
    Bits: 24
    Channel map: FL FR
volumio@volumio-doma:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 5: US1x2HR [US-1x2HR], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
volumio@volumio-doma:~$ 
volumio@volumio-doma:~$ cat /proc/asound/cards
 0 [Headphones     ]: bcm2835_headpho - bcm2835 Headphones
                      bcm2835 Headphones
 1 [DAC            ]: I-Sabre_Q2M_DAC - I-Sabre Q2M DAC
                      I-Sabre Q2M DAC
 5 [US1x2HR        ]: USB-Audio - US-1x2HR
                      TASCAM US-1x2HR at usb-0000:01:00.0-1.3, high speed

It seems there are several intricacies between ALSA and PulseAudio layers, so I do not know if the card configuration need to be set in the first, second or both modules.

in ALSA (/etc/asound.conf), I would try this based on the discussion found here : ubuntu - Change sampling rate in ALSA - Unix & Linux Stack Exchange
and here : ALSA project - the C library reference: PCM (digital audio) plugins
This crude trial, as I do not know how the audio flux is selected when the analog output icon is activated in Volumio interface. So internal naming of the ALSA plugin might need corrections.

pcm.ADC{
        format S24_LE
        rate 192000
        type hw
        card 5
        device 0
}
pcm.!default{
    type plug
    slave.pcm "ADC"
}

In PulseAudio, I would try to change /etc/pulse/daemon.conf with relevant values with :

default-sample-format = s24le
default-sample-rate = 192000

Again, I have no ideas about the interactions of these changes with the Volumio clockwork, if it will not break any existing function.

Thanks for the support on this call, I really think “on the fly” sampling analog with high resolution will be strongly appreciated by the vinyl community :wink:

Benoit

1 Like

Read also here (paragraph 3.1) : Linux Kernel Documentation :: sound : alsa : Audiophile-Usb.txt

Benoit

Hi Michelangelo (@volumio)

Is there any update from your side or way to try out the proposal on a local install of Volumio?

Thanks - Benoit