Warning: This article isn't for the faint of heart. I guarantee you it'll be interesting, as it breaks new ground in home digital audio playback, but plug n' play it isn't. I'll do my best to cover everything one needs to know to implement what I'm about to discuss.
A couple years ago I started using high end digital signal processing in the form of convolution filters for room correction and upsampling. I was a major skeptic and refused to believe DSP was any better than the terrible demos I'd heard in the past. That all changed when I connected with Mitch Barnett of Accurate Sound, who used my room measurements to design custom convolution filters. Now, I don't look back at the old days as primitive, rather I look at today as a time when I have another tool in my audio toolbox. Powerful DSP that can be enabled or disabled as I wish and that's capable of giving me subjectively and objectively better audio quality 99% of the time.
In addition to convolution for room correction, I've achieved tremendous results using HQPlayer's upsampling capabilities into NOS DACs built to take advantage of HQPlayer and all the horsepower of a modern computer. I know this route isn't for everyone and it isn't my only source of reference level playback, but it's far too good to be denied.
Now for the bad news. High end digital signal processing requires serious horsepower and advanced capabilities, neither of which are found in many of today's best music servers. By music servers, I'm talking about "canned" solutions that are plug n' play, and more reminiscent of an audio component than a computer. Examples in this category are products from Aurender, Innuos, Lumin, Auralic, and others I'm not purposely omitting. Some servers have raw horsepower, but lack the software framework for high end DSP, while others don't support it due to lack of customer interest, among other things. Either way, I love great music servers and I love great DSP.
Note: Some people will undoubtedly suggest, "just use Roon." Well, that's one option but it's shortsighted. There are so many great music servers in HiFi that offer personalized support, fantastic interfaces, terrific sound quality, etc... and this combination is well beyond anything offered by Roon Labs.
With that in mind I've been on a mission to encourage manufacturers to support DSP and I've been conducting my own research into a solution that isn't dependent on any single manufacturer changing its product(s). Ideally, a component would exist that receives audio via USB, AES, S/PDIF, etc... runs DSP, and outputs that to a DAC via USB, AES, S/PDIF etc... The component would support 65,000+ tap convolution filters and upsampling via HQPlayer. Currently this component is only a dream. It could be done, but nobody has done it.
Realizing there are many other people using Aurender servers who'd love to try convolution or HQPlayer upsampling, but have no interest in giving up their current server, I started thinking about options. I know Aurender servers support output on traditional digital interfaces such as AES, S/PDIF, and USB, but also offer output over Ethernet via Ravenna. This was originally implemented to output audio to the Merging Technologies NADAC that features Ravenna input. Ravenna is a standards-based solution for streaming low latency audio over one's network (AES67 is a subset of Ravenna). It's used to record concerts and albums at studios around the world every day.
Note: For more information about Ravenna, listen to my interview with Merging Technologies' Dominique Brulhart here.
Given that Aurender supports Ravenna output, and I record my podcast using a Merging Technologies Anubis A to D / D to A converter that supports Ravenna, I first tested an Aurender N20's Ravenna capabilities. This was uncharted territory because of how Ravenna is setup. If using a NADAC, there's an app to select an Aurender as the input device and all is well. Using any other Ravenna device it's the Wild West and you're on your own. It wasn't easy (all the details later) but I got it to work. I sent audio from the Aurender N20 to my Merging Anubis and from there out to headphones or my main audio system.
That was my proof of concept, if you will. I knew I could send and receive Ravenna using an Aurender and a Merging Anubis. But, it didn't get me any of the convolution or upsampling capabilities that lead me down this road in the first place. Now, for the pièce de résistance, I wanted to send audio from the Aurender directly to my CAPS twenty PC via Ravenna, have my PC receive the audio using the Merging Audio Device driver, hand the audio over to HQPlayer via ASIO input for processing, then have HQPlayer send the audio out to a Sonore signatureRendu SE optical running HQPlayer NAA, then out to a DAC via USB. Technically I could output from my PC via USB to a DAC, but HQPlayer doesn't support input and output from ASIO devices simultaneously (input on Merging ASIO / output on Denafrips ASIO). I could use WASAPI, but that has it's own issues with DSD support and I'd rather use a fiber optic connection to my HiFi with a Rendu.
Let me quickly go over the before and after connection details, so we are all on the same page.
Aurender N20 > USB Out > USB DAC
Aurender N20 > ethernet Out > CAPS 20 PC > Sonore Rendu > USB DAC
Astute readers may be thinking that they'll just download the Merging Audio Device driver and give this a go. However, a Merging hardware device is required on one's network because one needs a PTP Master clock in order for this to work. In my case, the Anubis is my PTP master clock, and doesn't route any audio. For servers without Ravenna support, it's also possible to use the Merging HAPI interface to accept AES audio and convert it into Ravenna. The HAPI would also serve as the PTP Master clock.
The hardware part of this is fairly straight forward. I inserted my CAPS Twenty PC and a https://www.sonore.usSonore Rendu between the Aurender and my DAC. The PC for high powered DSP and the Rendu to receive the audio over the network.
Here are three diagrams to give readers a visual of what's going on. I couldn't decide which visual would be easiest for everyone to understand, so I'll post all of three. It's the same system I'm using, but without/without some pieces that may confuse people.
Let's look the image with numbers one through four.
- This is the Merging Anubis, connected to my network with an Ethernet cable. This device only serves as the PTP Master clock. No audio routes through it.
- The Aurender N20's only connection is to my network with an Ethernet cable. It sends all audio out via Ravenna.
- The audio is received over the network by the Merging Audio Device driver on my CAPS Twenty PC. Audio is sent to HQPlayer via its ASIO input for DSP, then out of HQP to a Network Audio Adapter.
- This is a Sonore signatureRendu SE optical connected to my network via fiber optic cable. The Rendu is running HQP's NAA, so it's an endpoint capable of receiving audio from HQPlayer running on my PC. The Rendu sends audio out its USB interface to my USB DAC.
Note: Ravenna can require one to use managed network switches. In fact, I wouldn't go down this path without a managed switch. Fortunately, Merging Technologies offers downloadable configuration files for Cisco SG300 series and some Dell PowerConnect switches. I'm using a fully managed UniFi network from Ubiquiti, which is said to have issues with Ravenna / AES67 due to lack of good QoS. I haven't experienced any issues that cause Ravenna to not work, but I'll say that Roon doesn't work well when the core is running on the same PC as the Merging Audio Device driver. The error messages in Roon point to what I believe could be a network mDNS issue. Removing the Merging software enables Roon to run perfectly once again.
Setup via Software
Setting up / routing the audio inputs and outputs via software is where this gets tricky. I'll start in position 1 in the aforementioned numbered diagram.
1. The Merging Anubis must be setup for Auto sample rate mode, Low (64) latency, and PTP Master enabled. No audio routing connections need to be made.
2. The Aurender N20 must have Ravenna enabled and should have native DSD output disabled. Merging's Ravenna driver is said to only support native DSD, no DoP, but there should be an asterisk by that statement. It's entirely possible to send either native DSD or DSD over PCM (DoP) from the Aurender to a PC running the Merging Audio Device driver. Both work without any issues. However, the Merging Audio Device driver can't be set into DSD mode manually, it has to be set by another application that's the Master ASIO Host. In this case, the Master ASIO Host is HQPlayer and HQP can set the driver up to receive native DSD. The issue is that HQP won't automatically switch back to PCM when PCM is played, in this configuration (more on this later). Setting HQP to receive any sample rate PCM and to look for the DoP marker on the ASIO input works perfect to receive DSD up though DSD128. The limit of the Merging driver is 384 kHz, thus the DSD128 DoP input limit. HQP can output up through DSD1024 and this output has nothing to do with the receiving of DoP.
3. I'm going to skip the PC setup for right now, and detail it below item four below.
4. The Sonore Rendu is simple to setup in NAA mode through its web interface. Enable HQPlayer NAA and that's it. There's no configuration to be done.
Now back to item three. I'm detailing it here because it's very involved and requires a bit more space than items 1, 2, and 4. This is where I spent most of my time troubleshooting and where, I'm guessing most people would give up if they didn't have the following information. I spent the time so you don't have to :~)
On the PC, running Windows 10 Professional, I installed the Merging Audio Device driver. This also installs Merging's ANEMAN and MTDiscovery apps. ANEMAN is critical, but MTDiscovery is only helpful to see if the devices are found on one's network (for our purposes here). I also installed HQPlayer desktop on this PC. Once the apps are installed, the following configuration will receive the audio, route it to HQP, and output to a Rendu.
A. In the Merging Audio Device Panel, select the RAV/AES67 tab. The other three tabs won't work for our purposes here. I use the Unite tab when recording my podcast and I love it, but Unite isn't setup to work with a Linux Ravenna source according to Merging Technologies. Make sure the correct network adapter is selected for Primary. I disconnected my second network adapter because ANEMAN kept telling me I had more than one ANEMAN PC on the network and I didn't want to see the messages anymore. Set Latency to 16/32/64. The Master ASIO Host should be HQPlayer4Desktop. I do this because then it's possible to set things up for native DSD if I ever want native DSD. Apps will only be listed in this dropdown box after launched at least one time after the MAD driver is installed. Buffer size should be 256 [smpl]@44.1kHz/48kHz. The other options can be left alone.
B. This is biggest challenge. If you can get through this, you're well on your way to audio bliss. Open ANEMAN and select Ne Sample Rate Zone. Drag the Aurender N20 into the Master position (with the crown), and drag the PC and Merging hardware into the main sample rate zone box.
Select all three devices by clicking and dragging your mouse over them in the newly created sample rate zone. This will populate the right side matrix with all the inputs and outputs of the devices. Yes, it's very pro audio looking and the antithesis of plug n' play HiFi.
We need to connect the Left and Right channel outputs of the Aurender N20 to the left and right channel inputs of the Merging Audio Device driver running on the PC. This is done by expanding the Aurender Audio Device outputs 1-8 to expose all of the first 8 outputs. Then, click in the square where ALSA Output 1 on the Aurender and ASIO Input 1 on the PC intersect. Do the same thing with ALSA Output 2 and ASIO Input 2. These are the left and right channels. The boxes should be highlighted green like the image below.
Then click the blue button that says Connect Unicast. Unicast will send audio directly from the Aurender to the PC, rather than to many devices in a multicast group.
IMPORTANT: If you receive the following error message, "Device incompatibility: frame size or media" don't worry. I struggled with this for days. The solution is to play any 24 bit content on the Aurender. Just press play on a 24 bit track for like 10 seconds. Then, highlight the output and input boxes again and select Connect Unicast.
When the Aurender outputs are connected to the PC inputs, the boxes will highlight orange and an arrow will be placed from the Aurender to the PC in the left window of ANEMAN.
Open HQPlayer and open its settings from the File menu.
Under Output Device Settings, make sure the Backend is NetworkAudioAdapter and the Device is the Rendu (or whatever you have running HQPlayer NAA). The Channels and bits etc.. are DAC dependent and not critical for this article.
Under Input Device Settings, select ASIO for the Backend and Merging Audio Device for the Device. Make sure DoP is selected for SDM Pack. The output modes are all DAC dependent and not the subject of this article. Click OK.
On the main HQPlayer screen, in the box that says Content Source URI, type audio:default/0/2 and hit enter. The queue area below should then list the song as audio:default/0/2 and the Length as 0:00. Click on this "song" and it should change to being highlighted blue. HQPlayer is now ready to receive any sample rate and two channels of audio on its ASIO input.
Press play on the Aurender and everything should work. Notice the Green dot in the MAD Panel and green writing that it's running and the clock is locked. Also note the orange boxes in ANEMAN have now turned blue when audio is successfully playing. The HQP "song" is blue and HQP displays the input sample rate (DSD128) it's receiving the from the ASIO driver (352.8 kHz PCM DoP) and the output rate it's sending to the NAA (DSD256). Convolution and upsampling through HQPlayer, on music from the Aurender, and out to a Rendu running NAA is now setup.
I absolutely love this capability. Applying room correction convolution filters and upsampling to music from an Aurender has been on my list of wants for a long time. I now have it working on all sample rates from 44.1 kHz through 352.8 kHz, and DSD64/DSD128 (I can output any sample rate from HQPlayer including PCM at 1,536 kHz and DSD1024). All can play seamlessly with auto sample rate recognition and auto sample rate changing. Auto sample rate is a big deal as is support for higher sample rates. There are some possible solutions, such as using an RME AES card to accept audio via AES from the Aurender or other music server, but getting auto sample rate detection and changing to work will be an uphill battle. Using Ravenna, it all works great.
If I had other music servers that only supported outputs such as AES, I'd use a Merging HAPI to receive the AES and convert that into Ravenna. From there, I'd process it identically to the system I laid out above.
I still don't know of a solution that can accept USB audio from a music server and send that on to a PC for DSP or convert it into Ravenna.
I'm also working an article using HQPlayer embedded to receive UPnP audio from other music servers and output that to an audio device. This could even be direct from a NAS or from one of the many great music servers that outputs UPnP/DLNA.
HQPlayer isn't the only DSP solution that should work with the aforementioned setup. Mitch Barnett's Hang Loose Convolver should work, but one will be limited on the output because it doesn't output anything over the network. If using ASIO input, sending audio to a different ASIO output may be problematic. I need to do additional testing.
I'll now sit back, grab my iPad running Aurender Conductor and select music for playback just like I would if the N20 was connected directly to my DAC via USB or AES. That's the beauty of this. I can use the Aurender like nothing has changed, but now the audio is going through state of the art DSP in the form of room correcting convolution and upsampling.