Re: Configuring ALSA and SCHIIT BIfrost for "bit perfect"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 09.09.2012 23:26, chris hermansen wrote:
> I recently acquired a Schiit Bifrost and have been attempting to
> achieve (what I would call) "bit perfect" performance with 16 and 24
> bit music files at 44.1, 96 and 192K over the USB interface.

[...]

> In all of these cases, I end up with results that appear to be the
> same, or at least differ in ways indistinguishable to me.  To
> elaborate, if I play a 16bit/44.1K FLAC file, then switch to a 24 bit
> and/or higher resolution file, the audio for the second file is
> garbled in a very distinctive way - it sounds like it is being passed
> through some sort of "distortion network".  The basic nature of the
> melody is apparent, but everything sounds really odd.  If I stop the
> second song and restart it, often on this second try it will play
> fine.  Sometimes I have to do this more than once to get it to play
> fine.

I have dealt with a number of USB audio interfaces lately that have
similar problems under Linux.

The reason, as far as I could track it down, is that these interfaces do
not properly flush their feedback endpoint buffers when switching from
one sample rate to another, which results in wrong data being sent after
each stream start. The Linux driver has code for feedback format
auto-detection which gets confused by that and assumes a different
format, consequently sending data at a wrong rate.

Some of these issues have been resolved by fixing the firmwares of
affected devices, for others I just recently submitted a patch that
makes the driver ignore the first n packets of a stream, to work around
that hardware bug:


https://git.kernel.org/?p=linux/kernel/git/tiwai/sound.git;a=commit;h=2b58fd5b

> If anyone has any suggestions, I am willing to experiment (carefully)
> and document results.

Yes, you could try building a kernel from

  git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git

And add a quirk to sound/usb/quirks.c, in function
snd_usb_endpoint_start_quirk(). Just add a check for your device's USB
VID/PID and do the same "ep->skip_packets = 4" for the SYNC endpoint.

If you're not sure what to do, send me the output of "lsusb -v" on your
system and I'll provide a patch.


Thanks,
Daniel


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Alsa-user mailing list
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user


[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux