Colibri 2.1.0 is now available

It has been way too long! The long past overdue update to our little hummingbird is now out – containing two of the most requested features in the past couple of months. Here’s the changelog, if interested.

Minimum required version is raised to macOS 10.13 High Sierra – this is due to the fact that Xcode 14.1 is the currently required minimum version of Xcode that is allowed to send your app to Apple, and it doesn’t allow targeting anything lower than macOS 10.13.

Native AirPlay 2 support – this is the fourth time over the past few years that I’ve tried to add this functionality to Colibri, I’ve even contacted Apple on multiple occasions regarding the possibility, to no avail. As Colibri is a Mac App Store app, it has to be reviewed and analysed every time an update is released – and using reverse-engineered (although publicly available) protocol implementation is very clearly off the table and using any other cross-platform library to interface with AirPlay wasn’t something that I was comfortable in doing. Looking through newer Apple-provided example codes for iOS and iPadOS I’ve stumbled upon one curiosity, that essentially involves manually sending data packets via AirPlay – and it ultimately turned out to be available for macOS as well! Having built a small proof-of-concept app proved that it can be done – all I needed to do was wire things up and we’re good to go…

Colibri AirPlay

…except that AirPlay only knows about the file formats natively supported by macOS. So implementing the above mentioned mechanics also meant that Colibri’s internal mixer handling needed to be re-adapted to be able to switch between ‘regular’ CoreAudio output and AirPlay data sending mode, not to mention that decoding still had to be done by Colibri’s internal decoder. This in turn meant that gapless playback and pre-loading needed a bit of re-thinking, as while having my own mixer gives me freedom to put markers anywhere I please – AirPlay on the other hand only takes a bag of data and off it goes.

Out of the box I have vastly limited control of what happens – imagine a scenario where the user drops in a Cue Sheet that references a single file that is multiple hundreds of megabytes in size – pushing that through to AirPlay at once would cause quite a delay in playback for just one song. The amount of data AirPlay accepts is seemingly infinite – however, the amount of data being read and pushed through the decoder is not and this also needed careful attention to orchestrate.

In the end, I really hope you’ll enjoy the seamless integration of AirPlay – try it out with a capable device such as a (pair of) HomePod(s), Apple TV or just any AirPlay capable smart TV (in such a case even the song info and album art is shown on the screen!). Multi-room is also supported with individual volume control – just tick the boxes and enjoy!

Search & Filtering – an essential feature that should have come sooner, Colibri now has proper search & filtering support for the Playlist. Just press + F to bring up the search bar at the bottom of Playlist and type away. Search criteria can be changed at the top menu and there are also keyboard hotkeys associated with all available options – even clearing the search phrase. The filter state also affects the playback, meaning that filtering the list to a set of songs will cause Colibri to treat those songs as the only ones available for playback. Ideal if you’d like to narrow down your listening to just a couple of songs at a time.

NowPlayable support – since macOS 11.0 Big Sur, the Control Center gained the ability to show audio information from apps that support it along with basic playback controls. Colibri now finally has this integration as well: song information and album art graphics are passed through to Control Center based on Apple’s documentation with the necessary playback state reporting – this means that seeking and pressing play/pause also works and is kept in sync with Colibri’s main window. Fun fact: the order of sending the song info and playback state does matter.

Colibri NowPlayable support for the macOS Control Center

Accessibility – all control elements and feedback labels should now have proper Description and Help fields filled out where relevant and old ones were revised to reflect changes where applicable.

Async file loader/crawler – Colibri should now tackle reading many files at once way better than before. The act of loading files is now split into two phases and processing should not cause Colibri to freeze – state of file processing is now also reported in the bottom status bar, giving visual feedback as to the current progress of reading files. Cue Sheet and M3U processing also got a bit of makeover to deal with the bugs reported by the kind users in the past few months. Thank you so much for the files and useful descriptions and steps-to-reproduce!

Devices: 4 new settings – parallel to the work generated by AirPlay integration, the Devices section also got four new settings that can be enabled on a per-device basis. These were all requested numerous times, mainly the ‘force frequency’ and the ‘restore to frequency on quit’ options – while the other two options, ‘frequency switching silence’ and ‘initial volume’ were something that I’ve noticed while using an older DAC.

Sandbox Manager: to help people organise, remove and diagnose Sandbox bookmark related issues, Colibri now has a built-in Sandbox Manager module that shows all bookmarks known/granted to Colibri, marking invalid ones in red and showing superfluous bookmarks in grey. There’s also a Smart Cleanup button does a bit of housekeeping: removes unnecessary bookmarks. Manual add and removal are also possible here.

Sandbox manager

As for the future: as written here many times, let me reiterate – I do plan on supporting Colibri forever! I’m also a daily user and have quite a few ideas for years to come, not to mention the awesome feedback I receive via emails and App Store reviews.

As for what’s next in store: I do plan on adding remote control support and yes, iOS, iPadOS and tvOS versions of Colibri are in the works. I have no estimate on the release dates, will let you know via posts here as I go.

Happy listening!

Colibri 2.0.5 is now available

Hi and thanks for checking in! After a long bit of delay, here’s a new version of our little bird that features quite a few under-the-hood enhancements, mainly regarding Sandbox handling: the dreaded and seemingly most reported issue in the past couple of months is that Colibri would just bounce up and down on the Dock, without actually starting – or taking an enormous amount of time to boot up.

To combat this, the Sandbox bookmark handling has been broken down to smaller chunks and is now properly being handled using background threads – even with spotty Wi-Fi and disappearing SMB shares I’ve got very positive initial feedback during testing, so hopefully Colibri will now start quickly for everyone. As always, please do let me know if you experience otherwise!

Another Sandbox issue prevented the default MIDI SoundFont from being loaded – this is also fixed, along with a weird bug that caused the CMD + Up hotkey to not work as intended.

I do plan on extending Colibri to other platforms as well and work has been going on behind the scenes with the full intention of having iOS, iPadOS and tvOS versions of Colibri in the future. Part of this evolution is for me to get more acquainted with CoreAnimation and Transitions and while I’ve promised to keep Colibri’s interface simple and clean, I did sneak in a bit of fun to the Album Art view popover: double click on the album art, then either click on the image in the popover or click the little circle icon in the bottom-right corner.

Album Art animation

As for all the suggestions, feedbacks and issues we’ve discussed over email – they are still on the to-do list and coming eventually!

Happy Listening!

Update 2.0.2 is now available

This update brings fixes to the following:

  • Album art popover could cause a crash if the embedded album art was somehow irregular
  • Colibri would crash on startup if the supported frequencies reported by the DAC through CoreAudio would contain invalid data
  • DSD DoP playback would switch to PCM mode on playing the next DSD track
  • Adding songs from Finder and/or M3U/M3U8 playlists could cause the Playlist to not redraw itself
  • DSD DoP songs would not always restart themselves when ‘Loop current’ mode was selected
  • Dropping files/folders on Colibri’s Dock icon wouldn’t always save the Sandbox bookmarks on quitting

As usual, if you have automatic updates enabled, Colibri should be updated shortly – if not, visit the Mac AppStore listing to manually trigger the update.

That’s all for now, thanks for all the feedback, reports and suggestions! More to come in the following weeks – in the meantime, Happy Listening!

Sleep Warden is out now

The tool I’ve made a few months ago to help with Colibri’s system sleep preventing issues has been polished and is now ready for public use.

Sleep Warden is a tiny menu bar app that discreetly informs you whether your Mac is allowed to sleep or something is preventing it from doing so. Click on it to instantly see a list of sleep preventing apps and processes – and to avoid false positives, you can also add trusted apps/processes to the whitelist.

Sleep Warden is available from the Mac AppStore – with an introductory sale going until the 18th of June, 2021.

As for Colibri, I’m thankful for all the reactions, suggestions, feedback and bug reports I’ve been constantly getting since the 2.0.1 update – and rest assured, the next version is already in the works. Thanks for checking in!