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:
- you try and initialize the audio output with the maximum available frequency by trial and error (ouch!)
- 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.
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:
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.
Fixes and improvements are coming along at a steady pace, which means that the update is likely to be out during September.
Hello and thanks for reading this!
There has been quite some time since the last update of Colibri and I’ve felt that I should put out a quick note on how things are
progressing chugging along.
Currently I’ve got my hands full with the exam period over at the university I’m attending (Computer Science for those wondering) because of which little progress has been made since the previous release – most notably a few bugs have been fixed and as I’m using the preview build on a daily basis for extended periods of time it hopefully means that the next update will be more bulletproof.
The fixes, feature requests you have all sent me and the additions I’ve promised are all still part of the roadmap and in fact, the list has been growing longer ever since as I stumble upon things that need improvement or just realize that some other functionality would be beneficial for Colibri to have. Keeping it bloat free is still top-priority and one of the main reasons why new things are added at a slow pace.
It has been asked before – and lately even by folks from the music biz – whether I’m planning to extend Colibri’s compatibility downwards so that people using earlier versions of macOS / OS X would be able to use Colibri. Then answer is yes, I’m game and am going to investigate what parts of Colibri need to be rewritten to achieve this.
I’ve since gotten hold of an AirPlay test device, so all those who are waiting for that to happen: it’s still on the roadmap.
It comes up quite often lately so I’ll say this again here: Colibri will remain DRM-free and I’m never adding limitations / in-app purchases or the likes to it, ever. The very same applies to the new trend of selling apps via subscription models – that is one feature that’s kept off of the roadmap.
The “Buy it once – free updates for a lifetime” tagline is here to stay, ladies and djentlemen.
Colibri 1.8.8 – BS2B and Equalizer
A few minutes ago Apple has approved the latest version of Colibri, so it should be updating itself automatically through Mac AppStore if you have autoupdates enabled – if not, consider doing it via System Preferences – App Store. In many aspects, this update has been long time coming as the most frequently requested features in past few months have been BS2B support (read more about it here if interested) and a multi-band Equalizer, among other things.
Colibri has a modular infrastructure while BASS has its’ own plugin ecosystem which translates to a pretty flexible set of options regarding the addition of extensions to the signal chain – so I thought integrating the BS2B library will be a breeze. It turned out there were quite a couple of things under the hood that needed to be reworked in order for the BS2B module to start doing its’ thing – not to mention shaping it in such a way that it would play nicely with Colibri’s memory conserving policies.
Having read through many forum posts it was clear to me that people who use BS2B on a daily basis are not quite satisfied with the solutions that are provided by other players, the main complaint being that there simply isn’t a one size fits all setting – different songs need different values, not to mention the inability to store different default values to different output devices. That’s the main reason why I pushed the release from the end of February to today: Colibri as of now is able to handle BS2B profiles on a per song basis and it is also able to set different default BS2B profiles to audio output devices.
The same thing happened with the Equalizer – having taken extra steps in BS2B support meant that I couldn’t just leave the Equalizer with one global option, thus the per song profile switching was born for this feature as well. It would have been extra awesome to use sliders in the Right/Control-click menu of the song, but sadly macOS currently does not support stuffing sliders into the menu – no matter how many tricks I’ve pulled to make it happen.
Regarding Finder / External Sources loading, I’ve implemented the missing features that were requested not so long ago in AppStore reviews, namely the option of loading all files from a selected directory when opening only one song (as some audio players did so in the past) – plays nicely with the other two options of providing a fresh start: clearing the playlist on exit or on song load. It is now also possible to switch between instant playback or silent enqueue on song load.
Album art loading has been extended, more file types are analyzed and should that bring no visible results, then Colibri tries to display the first readable image in the songs’ directory. Also, try double clicking on the album art in the main window!
Status bar modifications include the removal of time elapsed – as it is now positioned at the title bar of the main window, with multiple display options to choose from. Taking its’ space is the Number of songs and total time statistical info, which is a new option available from Settings – Display.
The Behavior section got a bit of a rehash too in the form of ReplayGain support, configurable Pre-cache trigger placement and RAM Audio Cache settings with information popover help where necessary.
Last but not least, the Output section now has an option for changing the DSD Data Sending method – it is highly advisable to leave it on ‘Auto’ if you do not have issues with how Colibri talks to your DAC.
I did look into crafting a smarter playlist than the current one we have as I’ve promised in the previous blog post – but all of the approaches I’ve took were pretty much unusable as dynamic column sizing is something the does not play well with exotic song titles. I’ve still got a few ideas I will be trying out, so a smarter playlist is still under development and – just as in the case of AirPlay – it is coming at a later point in time.
That’s it for now, take care and happy listening!
Colibri 1.8.6 is now live!
UPDATE: 1.8.6 contains an urgent bugfix, below you can read what is new in 1.8.5
As of a few moments ago Colibri has been updated to version 1.8.5 with the update prompts appearing shortly for everyone through the Mac App Store application if automatic updates are disabled on your system as part of the somewhat steadier (and albeit slower) release cycle that I’ve adopted recently – this concludes the Winter Update.
This patch has been long coming in a sense that a few critical (and nasty) bugs were finally fixed and the frequently requested MOD/MIDI support has been implemented – you can read the full changelog here.
At the end of the previous post I’ve mentioned a customization option that I haven’t seen in any other player so far on macOS and that turned out to be the per song adjustment of sample mixing in the case of MOD music files, whereas in the case of MIDI files it is the per song SoundFont attachment – all with realtime bank switching and quasi uninterrupted playback as the playhead maintains the current position within the song.
Another small yet useful addition is the ability to control Colibri from the Dock – right/alt-click on its’ icon and you will be treated to a slightly improved menu that allows basic control of the playback function, along with showing the currently playing song’s title, artist and album:
Just after submitting the finalized update to Apple for review I’ve got an email regarding a crash that happened just as Colibri would start up: it turned out to be one of those bugs that I had been chasing around for a while now but never managed to find the correct environment to reproduce it. I’ve instantly pulled back the update to address the issue which in the end translates to less Sandbox Permission asking dialog boxes popping up when you add new songs.
For those of you trusting Colibri by allowing top level access to your music collection, this issue shouldn’t really have come up as it affected the negotiation part of handling different permission bookmarks for folders and songs simultaneously.
Once again, thank you for your continued support, it truly means a lot! The great majority of feature requests via emails/reviews/comments I’ve received so far have been added to the roadmap and will be implemented in the future.
What’s high on the TO-DO list? Currently, the equalizer and a better playlist so please look forward to those in the near future.
That’s it for now, take care and happy listening!
Tags: midi, mod, release, sandbox
Winter update is just around the corner
Hello and welcome to the first of hopefully many posts about my misadventures in developing (and bug fixing) Colibri – hope you enjoy your stay!
Some time ago I’ve made the decision to switch to a slower release cycle in order to have a bit more time to polish new features and enhancements before they are released in the form of an update and also to not annoy my users with constant updates as I’ve heard that most people find frequent updates inconvenient.
Doing a quick search in the Mac AppStore lead me to believe that the current selection of MIDI players is scarce at best – which brings us to the main element of the upcoming update: as the BASS engine has native support for both MOD and MIDI music (via plugin) it was a no-brainer to teach our bird how to chirp glorious video game music and Nokia ringtones aka MOD/MIDI music.
Having entangled myself in a series of doubts regarding the legality of bundling MIDI SoundFonts with Colibri I’ve come to the conclusion that the best way to avoid angering the reviewers at Apple (and copyright holders of said soundfonts in general) is to ship the next update with a free, publicly available soundfont as I’m sure most of you would like to try your MIDI files right away – user supplied SoundFonts are supported and are strongly encouraged!
There’s also a neat new feature currently entering the finalization phase that introduces a new customization convenience option for playing back MIDI files that I personally haven’t seen before in any other player.
That’s about it for now, happy listening!
Tags: midi, update