Steps towards a near-audiophile, bit-perfect Linux audio setup
Posted: Tue Sep 05, 2017 10:58 am
I am working my way towards turning my computer into a "near-audiophile", "close-to bit-perfect" source for playing audio and video. In opening this thread, I am seeking help from the community here. To begin with, I am fully aware that there are many forums, blogs etc for computer audiophiles covering all operating systems, and that operating system forums such as this one might not be the obvious first choice to look for help. But I am also aware of the varying quality, applicability, correctness and up-to-date status of contributions literally anywhere, to say the least. Thus, please bear with me and try to give as much feedback as you might have. Be aware that I am going much further than the initial plug-and-play which nowadays works on any operating system, Linux included. I guess everybody agrees that the Linux audio stack is very convoluted and maybe even messy..., thus hard to comprehend.
I will organize this thread and post into several topics, which I will spread over several posts. Questions will be asked all along the way.
1. The Goal: "Near-audiophile", "close-to bit-perfect" Setup for a Computer
Definition of this term: For now, I am seeking to set up my (single) computer and an external USB-DAC for the best replay possible, taking the DAC output to a headphone or a home stereo. As Ronald van Engelen points out in one of his brilliant blog posts http://lacocina.nl/bitperfect-audio, bit-perfect audio in the end is a bit of an unreachable dream, and for sure there are many more steps to be taken beyond my goal defined above.
2. Choice of Hardware (USB-DAC)
In order to start, I did chose an Audioquest Dragonfly Red, due to its sound as per the reviews, its capabilities and its fit to a budget. This one is capable of digesting up to 24 bits and sample rates of 44.1, 48.0, 88.2, 96.0 kHz. The company states that it can do the desirable isochronous/asynchronous data transfer which is a characteristic of USB Audio Class-2 (UAC2) devices (instead of isochronous/adaptive in UAC1), although it maxes out at 96k in order to let it operate with the standard MS Windows UAC1 driver. Windows began offering a UAC2 driver only from the Windows 10 Creators Update (04/2017) onwards, s.th. like 10 years after that standard had been defined. Apple and Linux do know UAC2 since long... For a comparison of UAC1 and UAC2, please refer to https://lacocina.nl/detect-alsa-output-capabilities, which has a comparison table near the end.
A nice feature of this DAC is that it shows the sample rate coming in by lighting its LED in different colors - very useful for setting up and debugging the system.
3. Windows 10 as a Not-So-Perfect Role Model
I think WIndows can be more easily set up to almost do what I want, certainly more easily than Linux. (I don't think I would need to reiterate the advantages of Linux as an answer to "why don't you stick to Windows then?" here.)
The go-to audio player is foobar2000, which I use with the WASAPI plugin. This circumvents the WIndows Mixer and outputs all sample rates 44.1, 48, 88.2 and 96k from the music source file (FLAC) directly to the USB-DAC. Bit depth to my findings cannot be made agree automatically with the source, but needs to be set in foobar2000 (I use 24 bits). For higher sample rates, with my Dragonfly Red DAC one has to retreat to Direct Sound and its downsampling, where - I think - the target sample rate needs to be set in the Windows Hardware & Sound setup.
Important points: Make the operating system sound mixers stay out of the way, and avoid resampling wherever possible. I think one can more easily live with requantization (changing bit depth) than with resampling (changing the time domain).
I put one problem with Windows 10 aside for the time being: When installing the USB-DAC driver, WIndows 10 Creators Update did pick the USB Audio Class-1 driver. I couldn't find a way yet to install the MS UAC2 driver manually...
4. Choice of Audio and Video Player Software under Linux
VLC is quite the most obvious choice for a video player.
Chosing an audio player under Linux is not that easy: (1) I want optimum playback capabilities, and I want to be able to see and influence what it does. Blind trust in out-of-the-box plug-and-play isn't the way to get towards better sound. (2) I want gapless playback, as foobar2000 has. (3) I don't need music library, tagging and other on-top capabilities (although foobar2000 has those). My library management is perfectly accomplished by the file manager. For tagging, there is nothing better than the Windows application Mp3tag, although puddletag is on a good way to replicate it under Linux. Anyway, I need to resort to Windows anyway, e.g. for AccurateRip ripping of CDs using dBpoweramp.
Currently, I have two audio players in use under Linux: Audacious and DeadBeeF. Both have extensive output choices (ALSA, PulseAudio, Jack). I have Audacious under Linux Mint 18.2 Cinnamon and under openSUSE Tumbleweed, while DeaDBeeF yet is only under Tumbleweed since I want to avoid adding a PPA in Mint.
I am aware of many people recommending MPD (Music Player Daemon) for these purpose, but I am not yet ready to venture into this territory.
Please, any suggestions for player software are highly welcome, considering the requirements mentioned above.
I will organize this thread and post into several topics, which I will spread over several posts. Questions will be asked all along the way.
1. The Goal: "Near-audiophile", "close-to bit-perfect" Setup for a Computer
Definition of this term: For now, I am seeking to set up my (single) computer and an external USB-DAC for the best replay possible, taking the DAC output to a headphone or a home stereo. As Ronald van Engelen points out in one of his brilliant blog posts http://lacocina.nl/bitperfect-audio, bit-perfect audio in the end is a bit of an unreachable dream, and for sure there are many more steps to be taken beyond my goal defined above.
2. Choice of Hardware (USB-DAC)
In order to start, I did chose an Audioquest Dragonfly Red, due to its sound as per the reviews, its capabilities and its fit to a budget. This one is capable of digesting up to 24 bits and sample rates of 44.1, 48.0, 88.2, 96.0 kHz. The company states that it can do the desirable isochronous/asynchronous data transfer which is a characteristic of USB Audio Class-2 (UAC2) devices (instead of isochronous/adaptive in UAC1), although it maxes out at 96k in order to let it operate with the standard MS Windows UAC1 driver. Windows began offering a UAC2 driver only from the Windows 10 Creators Update (04/2017) onwards, s.th. like 10 years after that standard had been defined. Apple and Linux do know UAC2 since long... For a comparison of UAC1 and UAC2, please refer to https://lacocina.nl/detect-alsa-output-capabilities, which has a comparison table near the end.
A nice feature of this DAC is that it shows the sample rate coming in by lighting its LED in different colors - very useful for setting up and debugging the system.
3. Windows 10 as a Not-So-Perfect Role Model
I think WIndows can be more easily set up to almost do what I want, certainly more easily than Linux. (I don't think I would need to reiterate the advantages of Linux as an answer to "why don't you stick to Windows then?" here.)
The go-to audio player is foobar2000, which I use with the WASAPI plugin. This circumvents the WIndows Mixer and outputs all sample rates 44.1, 48, 88.2 and 96k from the music source file (FLAC) directly to the USB-DAC. Bit depth to my findings cannot be made agree automatically with the source, but needs to be set in foobar2000 (I use 24 bits). For higher sample rates, with my Dragonfly Red DAC one has to retreat to Direct Sound and its downsampling, where - I think - the target sample rate needs to be set in the Windows Hardware & Sound setup.
Important points: Make the operating system sound mixers stay out of the way, and avoid resampling wherever possible. I think one can more easily live with requantization (changing bit depth) than with resampling (changing the time domain).
I put one problem with Windows 10 aside for the time being: When installing the USB-DAC driver, WIndows 10 Creators Update did pick the USB Audio Class-1 driver. I couldn't find a way yet to install the MS UAC2 driver manually...
4. Choice of Audio and Video Player Software under Linux
VLC is quite the most obvious choice for a video player.
Chosing an audio player under Linux is not that easy: (1) I want optimum playback capabilities, and I want to be able to see and influence what it does. Blind trust in out-of-the-box plug-and-play isn't the way to get towards better sound. (2) I want gapless playback, as foobar2000 has. (3) I don't need music library, tagging and other on-top capabilities (although foobar2000 has those). My library management is perfectly accomplished by the file manager. For tagging, there is nothing better than the Windows application Mp3tag, although puddletag is on a good way to replicate it under Linux. Anyway, I need to resort to Windows anyway, e.g. for AccurateRip ripping of CDs using dBpoweramp.
Currently, I have two audio players in use under Linux: Audacious and DeadBeeF. Both have extensive output choices (ALSA, PulseAudio, Jack). I have Audacious under Linux Mint 18.2 Cinnamon and under openSUSE Tumbleweed, while DeaDBeeF yet is only under Tumbleweed since I want to avoid adding a PPA in Mint.
I am aware of many people recommending MPD (Music Player Daemon) for these purpose, but I am not yet ready to venture into this territory.
Please, any suggestions for player software are highly welcome, considering the requirements mentioned above.