Hi folks,
I'm trying to set up a new server for use as both a file server and music player. I am connecting a USB S/PDIF transport (Audiophilleo2) as the audio device, which feeds the signal to an external DAC (NAD M51). The OS is FreeBSD 9.1-RELEASE,
What I'm aiming for is for the OS to pass a "bitperfect" signal to the DAC. I don't want any kernel level mixing, resampling or anything else modifying it.
The result I'm seeing is that the audio signal going to the DAC is at a fixed sample rate regardless of the input file. This is not right; if the audio is "bit perfect" the sample rate sent to the DAC will reflect that of the file. Using this same hardware on Linux and Windows, it will correctly pass through the signal (and DAC shows 44.1, 88.2 kHz sync accordingly).
After doing a lot of reading in the man pages (particularly sound), I have set the following values in /etc/sysctl.conf:
I also configured the mixer to be at 100:100 volume:
Based on the output of
When VLC plays audio files, the DAC is always set to a fixed sample rate of 960000.
Based on further reading (example), I tried setting some values in /boot/loader.conf:
After setting the hw.usb.uaudio values, the DAC syncs at a fixed value of 48000. So it seems like the problem is with the uaudio configuration?
I have a range of audio files in different formats (44.1/16, 48/16, 88/24), so it is not feasible to use a single fixed value. Is it possible to just pass the digital audio stream straight through this device at its native sample rate?
Any help is greatly appreciated, I'm really starting to hit the wall here.
I'm trying to set up a new server for use as both a file server and music player. I am connecting a USB S/PDIF transport (Audiophilleo2) as the audio device, which feeds the signal to an external DAC (NAD M51). The OS is FreeBSD 9.1-RELEASE,
uname -a
:
Code:
FreeBSD bsdtest 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec 4 09:23:10 UTC 2012 root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
What I'm aiming for is for the OS to pass a "bitperfect" signal to the DAC. I don't want any kernel level mixing, resampling or anything else modifying it.
The result I'm seeing is that the audio signal going to the DAC is at a fixed sample rate regardless of the input file. This is not right; if the audio is "bit perfect" the sample rate sent to the DAC will reflect that of the file. Using this same hardware on Linux and Windows, it will correctly pass through the signal (and DAC shows 44.1, 88.2 kHz sync accordingly).
After doing a lot of reading in the man pages (particularly sound), I have set the following values in /etc/sysctl.conf:
Code:
dev.pcm.0.play.vchans=0
dev.pcm.0.rec.vchans=0
dev.pcm.0.bitperfect=1
I also configured the mixer to be at 100:100 volume:
Code:
Mixer vol is currently set to 100:100
Mixer pcm is currently set to 100:100
Based on the output of
sysctl -a | egrep "pcm|uaudio"
, these values seem set correctly:
Code:
device snd_cmi
device snd_csa
device snd_emu10kx
device snd_es137x
device snd_hda
device snd_ich
device snd_uaudio
device snd_via8233
hw.snd.vpc_reset: 0
hw.snd.vpc_0db: 45
hw.snd.vpc_autoreset: 1
hw.snd.latency_profile: 1
hw.snd.latency: 5
hw.snd.report_soft_matrix: 1
hw.snd.report_soft_formats: 1
hw.snd.compat_linux_mmap: 0
hw.snd.feeder_eq_exact_rate: 0
hw.snd.feeder_eq_presets: PEQ:16000,0.2500,62,0.2500:-9,9,1.0:44100,48000,88200,96000,176400,192000
hw.snd.feeder_rate_quality: 1
hw.snd.feeder_rate_round: 25
hw.snd.feeder_rate_max: 2016000
hw.snd.feeder_rate_min: 1
hw.snd.feeder_rate_polyphase_max: 183040
hw.snd.feeder_rate_presets: 100:8:0.85 100:36:0.92 100:164:0.97
hw.snd.vpc_mixer_bypass: 1
hw.snd.verbose: 0
hw.snd.maxautovchans: 16
hw.snd.default_unit: 0
hw.snd.version: 2009061500/amd64
hw.snd.default_auto: 1
hw.usb.uaudio.default_channels: 0
hw.usb.uaudio.default_bits: 32
hw.usb.uaudio.default_rate: 0
hw.usb.uaudio.debug: 0
dev.uaudio.0.%desc: Audiophilleo audiophilleo2 v1.16 SN01114, class 0/0, rev 2.00/1.16, addr 2
dev.uaudio.0.%driver: uaudio
dev.uaudio.0.%location: bus=1 hubaddr=5 port=1 devaddr=2 interface=0
dev.uaudio.0.%pnpinfo: vendor=0x8605 product=0x5023 devclass=0x00 devsubclass=0x00 sernum=" 01114" release=0x0116 mode=host intclass=0x01 intsubclass=0x01 intprotocol=0x00
dev.uaudio.0.%parent: uhub1
dev.pcm.0.%desc: USB audio
dev.pcm.0.%driver: pcm
dev.pcm.0.%parent: uaudio0
dev.pcm.0.play.vchans: 0
dev.pcm.0.buffersize: 0
dev.pcm.0.bitperfect: 1
When VLC plays audio files, the DAC is always set to a fixed sample rate of 960000.
Based on further reading (example), I tried setting some values in /boot/loader.conf:
Code:
#hw.usb.uaudio.default_bits=16
#hw.usb.uaudio.default_rate=48000
After setting the hw.usb.uaudio values, the DAC syncs at a fixed value of 48000. So it seems like the problem is with the uaudio configuration?
I have a range of audio files in different formats (44.1/16, 48/16, 88/24), so it is not feasible to use a single fixed value. Is it possible to just pass the digital audio stream straight through this device at its native sample rate?
Any help is greatly appreciated, I'm really starting to hit the wall here.