Colibri 2.1.9 is now available

Thank you for using Colibri! This is an emergency update that fixes the crashes introduced in the previous version. Really sorry about this!

Fixes:

  • Colibri would crash on a Song change
  • Colibri would crash when reaching the end of the Playlist

Remarks:

  • Built with Xcode 14.3.1

As usual, it might take a few hours for your Mac to pick up the update – you can do it manually by visiting Colibri’s page in the Mac App Store app.

Colibri 2.1.8 is now available

Thank you for using Colibri! This update fixes an annoying Playlist bug and addresses memory related issues related AirPlay playback mode. Happy listening!

Updates:

  • FLAC module updated to 2.4.5.2
  • OPUS module updated to 2.4.2.4
  • HLS module updated to 2.4.4

Fixes:

  • A memory leak could occur when playing AirPlay songs with preload enabled
  • A memory usage spike could happen when the play button (or Return hotkey) was pressed many times in quick succession while AirPlay mode was active
  • A race condition bug could prevent Colibri from gaplessly proceeding to the next Song in AirPlay mode under high system load
  • Re-ordering Songs above the currently playing Song could cause the Playlist to mark a different Song as being played

Remarks:

  • Built with Xcode 15.0

Colibri 2.1.7 is now available

This update fixes even more issues related to M3U playlist loading and some annoying bugs related to opening files from Finder.

Updates:

  • Colibri can now properly read iTunes/Music.app exported Playlist files in M3U and M3U8 formats

Fixes:

  • Network streams would fail to load from M3U files
  • Stopping and restarting a song via AirPlay could cause silence to be played
  • AirPlay playback could softlock itself if the upcoming Song was unavailable
  • Adding Songs from Finder would crash Colibri if the ‘Clear playlist…’ option was enabled
  • Colibri could crash/behave erratically if ‘Load all songs from within…’ option was enabled
  • When opening files from Finder, Colibri would not start playback at the song that was initially clicked on in Finder
  • When dropping files to the Playlist, Colibri wouldn’t always start playback with the correct Song
  • Colibri wouldn’t properly read DOS/Windows formatted .m3u playlists with ^M carriage-return character end-of-line characters
  • Colibri would crash if an XML file is present within a dragged folder
  • Volume slider would flash for a split second when pressing Play/Pause while AirPlay/Audio signal override was active

Remarks:

  • Added a bit more logging for AirPlay and preload related issues to the Debug Log for easier troubleshooting

Colibri 2.1.6 is now available

This update fixes issues related to M3U playlist loading and extends compatibility with other audio signal modifying apps.

Updates:

  • Colibri should no longer freeze when playing back a high sample rate file when a 3rd party audio signal modifier app is active (such as Boom3D)

Fixes:

  • M3U loading by double clicking in Finder would cause Colibri to crash
  • M3U playlist processing wouldn’t always ask for top-level folder permission, leaving some tracks unplayable or skipping them
  • Clear playlist on exit could leave songs in the playlist on next startup, thanks to a race condition bug

Remarks:

  • When a 3rd party audio signal modifying app is active, Colibri might not succeed in sending frequency switching commands to your audio output device via CoreAudio

Colibri 2.1.5 is now available

This update extends the Sandbox Manager with additional invalid bookmark handling, allowing users to remove inaccessible bookmarks to mitigate slow startup speed issues.

Specifically, it will allow Sandbox Manager to show unresolvable bookmarks in red colour as ‘invalid’. This in turn also means that the Smart Cleanup button will also remove these unresolvable bookmarks.

These unresolvable bookmarks are typically paths that belong to External Storage Devices or Network Shares on your NAS that you currently don’t have access to (eg.: when away from home) – the main difference under the hood, is that the resolution of these bookmarks fail with a timeout set by macOS as opposed to simply being ‘inaccessible’.

Sandboxing differentiates between paths existing but not being allowed to access (inaccessible) and not existing – and now Sandbox Manager also shows these entries as invalid. Removing these entries should restore the startup speed of Colibri – as all saved Sandbox bookmarks have to be resolved when Colibri is started, having many of these inaccessible bookmarks will cause Colibri to be halted until the system process finally timeouts during trying to resolve the file/folder paths contained within the invalid bookmark, multiplied by the amount of said bookmarks…

It is far from convenient – but Colibri is a Mac App Store app and has to adhere to the rules imposed by the ecosystem, Sandbox support being one of them.

Happy listening!

Colibri 2.1.4 is now available

This update brings Genre metadata support and fixes a reported crash, namely when right-click context menu ‘Reveal in Finder’ was invoked on an empty part of the Playlist.

It turns out our little hummingbird gets quite grumpy if we ask it to play the song at index number -1 (as that is what gets reported as your choice when you click on an empty spot).

Happy listening!

Colibri 2.1.3 is now available!

This update contains FaceTime call fixes – unsurprisingly, the NowPlayable protocol also handles the commands sent from macOS to Colibri when a FaceTime call is inbound.

The logic behind Colibri’s implementation needed a bit of fixing as the commands for pause and resume clashed. Colibri now pauses when FaceTime rings and properly unpauses when the FaceTime call ends.

Colibri 2.1.1 is now available

Just a small update with the following fixes and adjustments:

Enhancements:

  • Added missing thousand separator space to ‘Processing Song X of Y’ status bar message

Fixes:

  • Preloaded songs wouldn’t play in a gapless manner if not being part of a Cue Sheet
  • ‘Clear Search phrase’ would not remove the ‘X’ clear button in Search view
  • Playlist header would disappear when no Songs were present in Playlist

If you have automatic updates enabled then macOS should update Colibri soon – if not, visit the Mac App Store page to trigger the update.

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!