Never miss an update – Subscribe to the Devblog RSS Feed via your RSS Reader of choice, such as NetNewsWire, Vienna RSS or Feedy.
Colibri DAC DSD Test 2.1 is now available
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
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.
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!
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
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
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!
Colibri DAC DSD Test is now on ‘Does it ARM?’
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
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?’
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
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
Hi there! The long wait is over, Colibri 2.0 is now available through the AppStore!
Colibri 2.0 is now Waiting for Review
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.
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
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:
More to come real soon, stay safe and please look forward to the update!
Colibri 2.0 has native Apple Silicon support
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
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:
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
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
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
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
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
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
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
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:
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
Colibri 1.8.8 – BS2B and Equalizer
Colibri 1.8.6 is now live!
Array
Winter update is just around the corner
Array