Upcoming update – DSD / DAC / Sample Rate Switching fix

Hi there and thank you for reading! Here is a short update on what’s coming: small fixes, additions, enhancements and a very critical bugfix are what this new version will bring to the table.

Automatic Sample Rate Switching

It has been brought to my attention that Colibri does not do sample rate / frequency switching automatically as expected – mainly with external DAC devices. The Mac AppStore reviews were somewhat descriptive of the issue, but with no means to effectively reproduce the behavior there was little hope to pinpoint the actual cause of the issue. Recently I’ve received a highly detailed and descriptive scenario (thanks Katherine!) which helped me understand the nature of the problem – to which the solution is now complete.

CoreAudio is the layer provided by Apple to handle the audio hardware under macOS and it works flawlessly – for the most part, if you are using the audio framework provided by the system. As you could have guessed, this isn’t the case with Colibri – we are using BASS as the audio engine, which in turn interfaces with CoreAudio to produce audio output. The issue here is that BASS under macOS has no way to determine what is the maximum accepted frequency of the currently selected audio output device – and this imposes a problem.

Having a mixed playlist of songs with different sample rates means that either:

  1. you try and initialize the audio output with the maximum available frequency by trial and error (ouch!)
  2. re-negotiate sample rates every time before the playback starts, if the sample rate of the upcoming song differs

Colibri does the second option as of the current build, which was the result of a complete rewrite of the playback/preload logic: frequency negotiation happens only when it needs to and all newly loaded songs are quickly analyzed for accurate sample rate information. The tests have been promising so far: opening Audio MIDI Setup clearly shows that Colibri is doing the sample rate switching automatically.

 Automatic Sample Rate switching bug is finally fixed

Currently what needs to be fixed are the way Colibri deals with Bluetooth headphones – some of what I’ve tried do not support anything greater than 44.1 kHz and this poses a problem: every time a higher resolution song is sent to them they simply revert back to 8 kHz and stay that way – which, again, isn’t what I’d call ideal. There already are a few ways to deal with this – we’ll see which one of them ends up being the most reliable.

[Ninja edit: since publishing this I’ve managed to extract accurate sample rate data from CoreAudio regarding wireless headphones as well, which now eliminates the “stuck at 8 kHz problem”]

Menu Bar Song Display

Due to popular request and again, some very detailed suggestion (thanks Jan!) Colibri will have its’ Menu Bar icon beefed up a little: customizable song information display will be available in the next version, here’s a sneak peek:

Song Info in the Menu Bar

ZXTune

Another recently requested feature (thanks Vasyl!) was the addition of the BASSZXTUNE library, in order for Colibri to support a huge amount of chiptune tracker formats. Sadly, the library is as big as Colibri itself and while it is active, some delay can happen when the playback of a non-chiptune music is started – for this reason, ZXTune is present as a switchable option within Settings as the freedom of choice should be given to the user. This way, people who otherwise don’t intend to listen to chiptune tracks can disable ZXTune to save resources.

Release Date

Fixes and improvements are coming along at a steady pace, which means that the update is likely to be out during September.