Thanks so much for the pointers! I did have this all working at one point yesterday, but in my quest for simplification, lost it. Now it's back!
The only portion of your tips I was unable to figure out was how to force the sampling to 44.1/16. I saw in DSP studio that you can force the sample rate, but I couldn’t find the bit depth setting….
Great!
Bit-depth is set in the device properties. (Tools → Options → Audio → Audio Device → Device Settings)
(don't use 10ms here, it just happened to be that when I took a screenshot)
And in case it stumps anyone else, sample rate and number of channels are set in the DSP Studio. (Tools → Options → Audio → Settings → DSP Studio)
Just right-click the sample rate box and set all to 44,100 Hz.
In all my messing around, I did come up with some instabilities--Airfoil Speakers doesn't like it when you change the default Windows audio device, and neither does TuneBlade. Speakers would often crash and TuneBlade would hang at various points as I attempted to force the audio to travel the path I sought. Hopefully these little quirks will be less obvious as I settle into operating instead of constantly re-configuring.
Are you up to date with Airfoil Speakers? It has been stable here.
TuneBlade too, for that matter.
And you say that you're changing the default audio device. Do you mean when TuneBlade sets the default device,
as specified in this step, or that you are changing it after that?
For what it's worth, I have not had that issue at all, and I often switch between three local devices on my PC. (unrelated to AirPlay)
I could see Direct Loopback perhaps not handling those changes well, but I'm not sure why that would affect Airfoil Speakers.
Perhaps if something has Exclusive Access to the device that Airfoil Speakers is trying to play to, it handles that badly.
I was hoping to eliminate the need to run Airfoil Speakers as an Airplay destination on the server. But it seems to be an added bit of complexity that is needed in order to keep the server (connected to my main playback system) in sync with all the other Airplay destinations.
Airfoil Speakers will be required to keep everything in perfect sync, since it will adjust itself to stay in sync as it drifts over time. (and sync
will drift over time)
I wonder if there’s a way to have my multi-channel/high-resolution music play in its full “bit-perfect” surround/high-resolution-ness on the server with that signal being sent to my receiver, while simultaneously having the same music sent to the Airplay destinations.
Not if you want it in sync, nor if you want the highest quality possible sent to the AirPlay receivers.
If absolutely perfect sync is not required, you could try using Linked Zones in Media Center to do this while staying
mostly in sync.
I just set up a test where I linked my AirPlay Zone (16/44) to my Headphones Zone (max 24/192) and after adding an 860ms delay by having the headphones on one ear and speakers in the room playing via airplay then spending a minute to find the right value, both of them were playing in more-or-less perfect sync, while the headphone zone was playing a 24/96 track and AirPlay received a 16/44 version of the same track.
The issue that I ran into was when the sample rate changed. My DAC takes a fraction of a second to switch over to the new rate, and this was enough to throw things out of sync again.
Pausing and resuming, since that did not have to change the DAC's sample rate again, brought them back into sync.
What might be an acceptable solution would be to resample everything to the highest rate that your DAC supports. That way you're still getting high res audio, but (hopefully) avoid breaking sync when the sample rate changes.
I do expect that it will likely drift over time though, so it may or may not be a suitable solution.
NOTE: it was important to have the TuneBlade zone set to NO BITSTREAMING, or several of my filetypes would not play (AC3, DTS, and so forth). Does the bitstreaming setting bypass MC’s DSP studio?
Yes, that's exactly what bitstreaming does.
However, software Airplay destinations (Airfoil Speakers on Windows & Mac) frequently do not pick up the stream from TuneBlade, despite TuneBlade showing they are connected. A toggle of the connection status normally revives the connection. Increasing the TuneBlade buffer doesn’t seem to help resolve this problem. Adjusting the silence for hardware sync setting doesn’t seem to help either. I don’t notice the issue on my hardware destinations. Anyone else seeing this on their software destinations?
It may be the 250ms buffer causing this. Perhaps it's too short for them?
I did see similar behavior from Airfoil Speakers initially as well, but it hasn't been a problem for me the last couple of days.
Edit: After doing more testing, the connection to Airfoil Speakers does seem quite unreliable. I've mostly been playing to Apple hardware so it had not tested it much.
What I'd found is that hitting stop on the Airfoil Speakers app to kill the connection means that it works again 100% of the time, the next time I connect to it.
I've contacted Rogue Amoeba support about this, so I'll see where it goes.