Never miss an update – Subscribe to the Devblog RSS Feed via your RSS Reader of choice, such as NetNewsWire, Vienna RSS or Feedy.


Colibri 2.2.0 is now available

May 4, 2024

Thank you for using Colibri! This update fixes many reported issues and thoroughly cleans up the birdcage. Happy listening!

Fixes:

  • an audio hiccup that could occur during song transition in CoreAudio mode
  • DSD song change in PCM data sending mode doesn't apply EQ settings
  • DSD song change in PCM data sending mode lowers the system volume
  • playing a DSD song after a non-DSD song in DoP/DoPA data sending modes can cause noise to be played
  • seeking using the left/right arrow keys can sometimes fail when a DSD song is played in DoP/DoPA mode
  • multiple crashes during song loading while AirPlay mode is active
  • multiple crashes when adding many folders at once from different storage media
  • folders with multiple nested levels of Cue Sheets don't load recursively
  • when Cue sheet reading fails, the fallback folder reading isn't triggered
  • files without file extension are loaded when adding a folder
  • adding a Cue sheet after restarting Colibri can mess up previously added Cue sheet song processed metadata
  • when file metadata reading fails (or if it is empty), the filename is not shown
  • multiple Sandbox related issues

Updates:

  • FLAC module to 2.4.5.4
  • WavPack module to 2.4.7.4
  • Cue sheet processing now uses multi-pass file encoding detection
  • reduced memory usage during AirPlay loop 'current song' mode
  • removed deprecated CoreAudio calls
  • Sandbox bookmarks are now refreshed when becoming stale

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.

AppStore review time from upload to verified took around 1 hour 🎉





Colibri 2.1.9 is now available

November 16, 2023

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

November 14, 2023

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

September 28, 2023

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

August 24, 2023

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

August 17, 2023

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

August 15, 2023

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!

August 10, 2023

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.2 is now available

August 7, 2023

This update contains fixes related to song changes and AirPlay usage over slow network - happy listening!





Colibri 2.1.1 is now available

July 30, 2023

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

July 22, 2023

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 DAC DSD Test 2.1 is now available

July 17, 2022

Version 2.1 allows files with .DFF file extension to be loaded and it also brings the much requested ALAC / M4A format support. The update can be manually triggered through the Mac AppStore.





Colibri 2.0.5 is now available

June 16, 2022

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.4 is now available – Happy Holidays!

December 25, 2021

Happy Holidays! This update reduces device capability enumeration time and fixes the following:

  • Gapless playback would not work with some external DACs
  • Dropping songs on to the Playlist could become interleaved
  • Pre-cache would not work with songs shorter than 5 seconds

Thank you for all the support - enjoy the holidays and please look forward to the next update!





Update 2.0.3 is now available

June 24, 2021

This update fixes the following two issues:

  • Output selection wouldn't properly reflect what device is selected
  • Playlist show/hide state wouldn't properly restore on next startup

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.





Update 2.0.2 is now available

June 22, 2021

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

June 12, 2021

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!





Colibri DAC DSD Test is now on ‘Does it ARM?’

June 9, 2021

Following suit, the free Colibri DAC DSD Test app is also available as a Does it ARM? listing.





Colibri DAC DSD Test 2.0 is now available

June 8, 2021

Version 2.0 brings native Apple Silicon support and has adopted the new squircle app icon style. The update can be manually triggered through the Mac AppStore.





Colibri is now officially listed on ‘Does it ARM?’

June 8, 2021

Today, just a little bit after Apple's WWDC21 event, Colibri has been accepted to the ever-growing rooster of curated Apple Silicon compatible apps - 🦾 Does it ARM? - click here to see Colibri's listing.





Update 2.0.1 is now available

June 7, 2021

Well that was fast - not long after releasing the update two bugs have been found, which this update addresses:

  • in some cases output settings wouldn't properly load when not using the Default output
  • while stopped, Hog Mode could become selectable in Settings while the Default output is selected

The update is now available through the Mac AppStore!





Colibri 2.0 is now available

June 7, 2021

Hi there! The long wait is over, Colibri 2.0 is now available through the AppStore!

Woo hoo!




Colibri 2.0 is now Waiting for Review

June 6, 2021

Hello there! Thanks for checking in, I've just handed over the update to Apple for an extensive review, which could take anywhere from a few hours to a few days - although personally, I'm hoping for a few hours of turnaround time.

Exciting times!

Once the review is done, it should take a few minutes for the update servers to notice the new version of Colibri - followed by your Mac installing the update (if auto-update is enabled) or just getting notified by macOS once the update is ready for download. I'll put up a post when the update gets verified - hang tight!





Mid-May Progress Report

May 17, 2021

Hi there and thanks for checking in!

As we are nearing the end of the update, Colibri had one area that desperately needed attention since the initial conception - loading multiple files at once would cause hiccups, even more so with large amount of nested directories: loading anything above a few gigabytes would cause Colibri to beachball for even up to many minutes, depending on the folder architecture and the files therein.

As of a few hours ago, Colibri just got a brand new, optimised folder crawler that improves upon the previous one in terms of error handling - such as guessing missing cue sheet contents based on initial content discovery -, but also does so at breakneck speeds (compared to the old version, to say the least). To put it into numbers, a mixed folder of cue sheets, tracker music and m3u playlists weighing just a bit above 69 GB is fully processed and loaded within approximately 30 seconds.

Now, as many of you may already know Colibri isn't yet suited to be a Library-based player and loading that many songs is not ideal - but it can certainly be done. The under-the-hood optimisations also greatly speed things up in the RAM Disk department as now flushing the whole playlist to the RAM can be done as fast as the storage can be read.

Despite the feature freeze I did manage to sneak one small, heavily requested feature in, which is to keep Colibri's main window floating above other apps! This is a switchable option available from Preferences > Playlist:

Always On Top is available in Colibri 2.0

More to come real soon, stay safe and please look forward to the update!





Colibri 2.0 has native Apple Silicon support

April 26, 2021

In the past few days I've searched high and low for a solution that would allow me to release the update with an Apple Silicon native binary - however, as noted in the previous post it was being held back by BASSZXTUNE not being available for M1 Macs. But I couldn't let it go, especially after making you wait for so long.

Since a few hours ago, the proof-of-concept has been implemented into the update and am happy to report that Colibri 2.0 will have native Apple Silicon support - which means that you'll be able to run Colibri natively on your shiny new M1 Macs! Here's a screenshot of Activity Monitor while the development version of Colibri is running:

There is a tradeoff in making all this happen though:
when running Colibri on Apple Silicon hardware, ZXTune will be unavailable. This means that the more exotic tracker formats (for which ZXTune via BASSZXTUNE provides decoding support) will not open and show an unsupported error message.

This change does not affect Intel-based Macs, ZXTune will continue to operate under the x86_64 architecture as expected.

Until a compatible version of ZXTune and BASSZXTUNE is available, Colibri won't be able to use this library on Apple Silicon machines. I am actively working on remedying this situation and will let you know if I have a viable solution.

In other news I'm still spending all my free time on the update and am getting there. More to follow shortly!





March and April-half time report

April 19, 2021

Hi there! Thanks for checking in and for your continued support!

Colibri has now entered a 'feature freeze' state of sorts, meaning that from today onwards I'm making sure to the best of my capabilities that the update delivers on all promises made in the previous posts.

Since the last post, I've been doing a considerable amount of work on the way Colibri works alongside and in coordination with CoreAudio to handle devices and am happy to report that the Default output with per-device profiles seem to be working rather nicely, here is a sneak peek of the new Output section in Preferences in action: the Default output is set in Colibri and when I change the default output in macOS, Colibri instantly loads the saved options for said device and updates the interface - it does this by 'subscribing' to relevant CoreAudio change events (and playback is resumed from the same spot during playback). As you can see, even though the output is reported as being "1: Default", Colibri knows which is the actual audio output that is being used:

Colibri instantly reacts to the default system audio output changes

I did plan on releasing Colibri 2.0 with native Apple Silicon support for the M1 Macs - but sadly, three libraries that Colibri uses are not compatible with Apple's ARM chip. I did manage to acquire the source code and build a compatible version of two of said libraries - but sadly, the third module (BASSZXTUNE) is not currently compatible and according to the author, it is currently at lowest priority to get it working. As I do not wish to stall the update any further I've decided to ship the update using the current x86_64 architecture and decide what to do with it in the near future.

In other news a long-standing bug has been fixed that caused the currently played track to not become highlighted in some cases along with some smaller fixes.

I do aim to release it as soon as I can, please bear with me!





February and March half-time Progress Report

March 16, 2021

Hi again and thanks for checking in!

February has been a busy month that saw a lot of progress on Colibri 2.0 - this was the time when most of the things mentioned in the previous report have been implemented and polished.

Along with those, there were some notable changes that I feel like pointing out:

  • Preload trigger logic has been redone to fire under all known conditions (for gapless playback)
  • Title bar should properly re-align itself to be in center at all times, without any jitter
  • Drastically reduced draw calls to the Title Bar update methods which should save anywhere between 1-1,5% CPU on slower Macs
  • UI elements such as buttons are now properly vector-based and draw themselves accordingly
  • Fixed two crashes that belonged to FLAC embedded album art reading and playlist row drawing
  • There is now a giant "emphasised" clickable play/pause button that reflects the playback state and is essentially showing the reverse as to what the usual play/pause button shows: the idea is that pro and theatre environments need clear and distinctive state feedback even from further away. This has been asked of me multiple times and it is now coming with the update. It is switchable with the default option being 'off'. Check it out at the Playlist settings!
  • Network streams will now properly show the bitrate of the stream being played
  • The playlist grid color bug that was reported a few weeks back has now also been resolved
  • ...and just a few minutes ago I've finished adding Default System Output support! You can now have Colibri use and follow the audio output device set in System Preferences > Sound > Output or using the Speaker icon in the Menu Bar of macOS at the top of the screen. This has been long time coming and was quite a challenge: as you know, Colibri does automatic sample rate switching and while the 'Default' audio output has been available for some time, the moment you select it as the desired output most of Colibri's internal logic simply goes off the rails. Why? It is really simple: the 'Default' audio output device does not report supported sample rates (frequencies), which means Colibri is not able to switch the rate as the currently (and upcoming) song requires it to do so. It also has no 'driver' descriptor so essentially CoreAudio reports nothing about it. Ultimately, had to think a bit outside the box for this one but I'm happy to report that based on the tests I've been doing up until now, the 'Default' output works as expected with automatic sample rate switching! And yes, switching to your AirPods or other wireless headphones during playback does work without issues.
  • As an added benefit, the work that went into the 'Default' audio output demanded that I re-engineer the sample rate switching logic and thus for 'regular' users the sample rate switching should be near-instantaneous - as there are some 'slower' DACs that take almost a second to switch sampling rate with the older implementation. So whether you consider using the 'Default' output device or not, this is a win-win for everybody!

As for the dreaded question: when will I release the update? There is still a bit more work to be done on the Output section of Colibri's Preferences that involves mainly the per-device profile implementation. I'll be sure to post when I wrap that one up - please bear with me!





January Progress Report

February 4, 2021

I did hope to release the update at the end of January, but I still have a bit of work to do in order to not disappoint the lot of you who have been waiting for this for more than a year now. Highlights since the last report:

  • RAM Disk support with automatic playlist management
  • Loop Menu has been added to the main window, next to the EQ button
    it is also gone from the Preferences > Playlist section
  • New loop/repeat options have been added
  • Per device options that can be saved permanently:
    • DoP sending mode
    • DSD DoP treshold: if your DAC only supports DSD64 then you can tell Colibri to use PCM for anything above that
    • PCM Bypass
    • Separate volume controls for Device and Colibri's mixer output
    • DSD silence multiplexing: eliminate most of the annoying pops during DSD track change when using DoP/DoPA mode
  • Seek bar now has FPS controls: yes, it's ridiculous but it is a thing - you can now control how many times the playhead position is updated and animated. Why? To save system resources.
  • Redraw cycles have been reconstructed: Colibri uses even less CPU since the last post (same machine that saw 5-7% usage is now down to 2-3%)
  • Bit Rate column is now available in the Playlist: it is called 'kbps'
  • Volume and Seek Bar knobs can be turned off for a sleeker look

I need a bit more time to polish all the rough edges of the per-profile device feature - after that, a final test run and hopefully I can finally release the update. It will be marked as the 2.0 version - please bear with me!





Happy New Year

January 13, 2021

Hi everyone, thank you for checking in!

Work hasn't stopped on the update, I'm still aiming to release it as fast as I possibly can. Highlights on the progress since the last post:

  • EQ handling has been rewritten, all reported bugs/crashes are now fixed
  • BS2B handling has been rewritten and DSD-related issues are now gone
  • MIDI SoundFont handling has been rewritten
    • it is now possible to assign SoundFonts to multiple songs in the playlist via mass-selection
    • added a 'Use Default SoundFont' to the right-click menu
    • added a 'Show in Finder' button for the currently selected SoundFont
    • Set as Default button toggles availability based on necessity

I still have a handful of reported Finder-loading bugs from way back, have to make sure those are rectified as well. Please look forward to the update!





Big Sur update is nearing completion

December 28, 2020

I know I've been saying this for a long time, but finishing the update is really around the corner.

Just before the holiday season began I was able to dedicate all my waking hours to developing the update - this includes Christmas day as well. I couldn't be happier and my family is supportive of this as well. It has been more than a year since I've last updated Colibri. Since the beginning of November, I've started a Numbers spreadsheet (very professional) as an improptu ticketing system - I've just 'closed' the 100th bugfix/feature request/thing-that-needs-to-be-done item which leaves only a handful remaining before the development phase concludes. After that's done I'll do regression testing and prepare the new version for the AppStore submission.

There will be a very lengthy changelog for this update, but I'd really like to highlight a few changes that I've added during this holiday season, in no particular order:

  • the menu bar info will clear itself if playback is stopped
  • clicking/dragging-and-letting-go-of the seek bar now repositions the playhead instantly - so for the musicians who have been contacting me in regards to learning guitar licks and drum parts can now rest assured, it is fixed
  • pressing the previous/next button also instantly moves the playhead as expected
  • CPU usage has been lowered - a Dual Core MacBook Pro 13" sees anywhere from 3-5% CPU usage with the 'smooth' seek bar animation mode selected and 0,5-1% with the 'regular' option
  • colibriPlaylist files now properly show the times' of the containing songs
  • Cue Sheet and colibriPlaylist file loading issues have been rectified
  • multi-column sorting is now available with proper up/down arrows the signal sorting
  • it is now possible to reset the playlist sorting to the original queue order
  • AirPods and AirPods Pro should no longer lock themselves to 8 kHz frequency - apart from the case where the microphone is actively recording, but aside from that, frequency switching should work as expected - let me know if it doesn't!
  • fixed a bug where folders with a '%' sign would not load
  • added http/https link support for M3U/M3U8 files
  • it is now possible to right-click on a network stream and copy the stream URL to the clipboard
  • playlist show/hide can now be toggled with a keyboard shortcut

...and with that I'm back to working on the update, stay tuned and thank you so much for your understanding, support and patience!





PSA: Big Sur causes display issues

November 14, 2020

It has been brought to my attention that macOS Big Sur released yesterday causes display issues. I'm pouring all my waking hours into finishing the update as soon as I can - I'm aiming to release it within the following days.

Thank you for your patience!

Update 01/12/2020: Still working on it, please bear with me!





Upcoming update

August 24, 2020

Hi everyone, thanks for checking in!

As most of you are aware, Colibri is currently undergoing a really heavy rewrite: a new, modern architecture was made to better accommodate the new features and upcoming operating systems while greatly increasing the stability. These are grandiose words, but in reality it all means that since starting Colibri I've learned constantly and am putting in my best effort to reflect on these past experiences and knowledge with this update.

At first I constantly updated the FAQ section to let people know that I am still working on it and I haven't abandoned the project. It is understandable as the latest update happened many months in the past. I'd like to take the time and emphasise it once more: Colibri is a labour of love, a passion project and is done by solely me in my free time - although I'm devoting it way more energy and time than some would consider healthy, I firmly believe that the end result will most certainly justify this. At the end of the day, I also use it on a day to day basis and it also bothers me that the update is taking this long.

Why is it taking this long? Apart from it being nearly as much work as writing a completely new version of Colibri I also did the mistake of biting off more than I can chew in a feasible amount of time. I did identify a handful of bugs related to the architecture and the way I wrote Colibri back in the day and instead of hacking around (and possibly introducing new bugs) I thought to have a clean slate with more future-proofing in mind. This, as a kind fellow pointed out, is also a "siren's call" as more often than not it happens that one set of bugs are fixed and a new set is introduced instead. What can I do to prevent this? Doing my absolute best from start to finish and use all the tools available to me to ensure such scenario does not come to pass.

But enough with the words as writing this takes time away from developing the update, so without further ado, here are the status updates from oldest to newest, scroll to the bottom for the latest!

TL;DR: I'm still working on the update, see the latest status update below.

01/05/2020: it is a massive rewrite and needs lot of testing, adjustments and making sure that it will remain as compatible with your current settings as possible.

20/05/2020: still heavily working on it, have uncovered some additional sample rate switching issues, mostly affecting pre-load. Fixed a handful of bugs relating to Sandbox and Network Stream support. I still estimate a good few weeks as I would like to release an update that is stable. Currently, I'm at around 9,000 lines of code changes and counting.

04/06/2020: going strong with the rewrite, uncovered a latency issue with external DACs - have an experimental solution to it, just need to stabilize it. Also had to write a wrapper for CoreAudio.

25/06/2020: one major issue Colibri had with audio clicking on some DACs during song switching and pause is now fixed, the CoreAudio wrapper seems to eliminate the hickup frequency switching caused under a lot of circumstances.

05/07/2020: fixing smaller user-reported issues and doing a bit of an overhaul for the Settings view. I aim to release it as fast as possible but at the same time I'd also like to be sure that it was worth the wait, so please bear with me!

31/07/2020: I'm not on vacation and am actively working on the update. I've finally found why some of you experienced the inability of your Mac to sleep while Colibri is running, even if music isn't playing. I've ended up writing a tool to help test my theory and it might end up in the AppStore after a bit of polish. So yes, work is being made - your patience is much appreciated!

13/08/2020: Checking the reported crashes so far and making sure they do not come up after the new update - so far so good. Rest assured, I'm working on it as much as I can.

24/08/2020: Volume changes are now properly shown in the title bar - it supersedes the "gray capsule-looking notification bar" that appears at the bottom of Colibri's window. Right now I'm putting on the finishing touches to some RAM-related new features - a fresh take on a somewhat usual and heavy-requested feature. I really hope you'll like it!

27/09/2020: Still working on the update, had a somewhat new idea regarding the feature I'm working on. I think I now also know why I haven't seen this implemented in a lot of players. Stay tuned, I'm not quitting any time soon!

02/11/2020: Now Colibri can properly extract cover images from DSF files and other exotic formats, before resorting to supplied images in the songs' folder. Fixed permanent pause and output switching bugs as well and the annoying Sandbox window for album art loading is now officially gone. There are still a great amount of work left to be done so bear with me, I'm sinking all my available free time into it to make your wait worthwhile.

01/12/2020: Still working on the update! I've got a two bug reports which are now also fixed. Also to the best I can test, the popping sound during pause/unpause of DSD streams is now fixed along with other clicks that could be heard while using an external DAC. I've also added extra methods to better accomodate AirPods and AirPods Pro compatibility - sadly, the automatic mic switching can still cause an initial quality drop when starting playback (as a result of the Bluetooth standard).

05/12/2020: The OS X 10.10.5 display bug has been fixed and will be part of this update, hang tight!





Upcoming update – DSD / DAC / Sample Rate Switching fix

August 29, 2018

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.





Upcoming update

June 9, 2018

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. Happy Listening!




Colibri 1.8.8 – BS2B and Equalizer

March 16, 2018

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. [caption id="attachment_674" align="aligncenter" width="1102"]BS2B Settings for Colibri BS2B Options - per song, per device![/caption] 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. [caption id="attachment_659" align="aligncenter" width="1448"]Playlist Settings for Colibri Colibri plays better with Finder[/caption] 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! [caption id="attachment_660" align="aligncenter" width="1475"]Album Cover Art popover image display for Colibri Album Art popover on double-click[/caption] 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. [caption id="attachment_661" align="aligncenter" width="604"]Colibri Mac Audio Player Settings Behavior Added RAM cache, ReplayGain and Pre-cache trigger time[/caption] 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. [caption id="attachment_670" align="aligncenter" width="1125"]Colibri Mac Lossless Audio Player Settings Output DSD signal output options (Auto/DoP/RAW)[/caption] The changelog has more details on the bugfixes and the Frequently Asked Questions section has been updated to reflect the changes as well! 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!

December 5, 2017

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. [caption id="attachment_360" align="alignnone" width="1440"] MOD sample mixing and MIDI SoundFont assignment in Colibri - per song![/caption] 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: [caption id="attachment_364" align="alignnone" width="941"] Right/Alt-click on the Dock to bring up an improved menu (vaporwave/future funk music is not included)[/caption] 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!

Array


Winter update is just around the corner

November 4, 2017

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. [caption id="attachment_351" align="alignnone" width="867"] MIDI SoundFont selection[/caption] 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!

Array