Announcing Seabass 1.0: Your DJ Toolbox

I’ve been DJing a lot lately, and as it happens, I like Denon DJ hardware. Most commonly, you will find gear made by Pioneer (AlphaTeta) though, and switching between mixers and their eco-systems is quite a pain. Pioneer has properly locked down the market, while Denon, in my opinion, offers way more value for money, and just nicer hardware. Out of frustration when moving from my home setup to mixers elsewhere, I figured, why not just write a small commandline tool that syncs the cue points that I’ve created on my Denon mixer to the Pioneer library on the same USB stick. Should be easy, right? Ow, sebas, you sweet summer child…

Now at work, we use AI tools to help us write code and it makes me quite a bit more productive as a programmer. While I understand (and even agree to) some of the criticisms that exist around the use of AI in the Free Software I think that AI is there to stay, and that, if used well, can make our lives as (Free) software developers a lot easier. KDE’s contributor guidelines allow the use of AI and give clear guidelines about what is OK and what is not. There have of course been discussions in the community around AI, but those are mostly about AI-aided contributions to existing software, not so much an existing KDE developer using AI tools to develop a new application. Nobody wants AI slop and we should be careful and thoughtful about how we use AI in our work and interactions. So far, my experience has been rather good. I have tried to be thoughtful at all times, and acknowledged that everything I do (with AI or not) is my responsibility. Being mindful about others is very important. Not just in this context, of course.

So in the past months I put together a new tool, called Seabass. I’ve shown an initial version to some of my DJ friends and got a lot of good input and direction, as well as support and of course testing, as well as a few suggestions for things that would make really valuable additions. There is a fair amount of frustration around, especially, but not limited to Rekordbox, the software created and sold by Pioneer/AlphaTeta alongside their hardware offerings, and frankly, there’s a lot to be improved as well. (Honestly, reading the rekordbox subreddit makes you think of Stockholm syndrome more often than “what a cool hobby!”.)
Seabass has already become a very valuable tool for me. I can now DJ at home all I want, prep my sets and then take my USB stick elsewhere, plug in and play. I have asked my friend Nuno Pinheiro to make an icon for Seabass, and not only did he agree, he blew me away with our very cool Seabass mascot. Thank you so much, dude!

Seabass allows me to explore, sync, back up and maintain my music collection more easily. Not at least, I can finally use my precious Linux for my DJ hobby! Seabass provides powerful tools that make your library more transparent and provide greater control over it. Next to its library management tools, it also provides a benchmarking tool, measures and tells you when your USB stick is dying, allows you to quickly transfer things, to either your harddisk or another stick. All incremental, all designed to be as bullet-proof and forgiving as possible.
The scope, as it happens, has shifted somewhat. I’ve slowly been adding creative features to Seabass as well, and the effect on my sets has been noticed.


So, today, we present Seabass 1.0. Your DJ Toolbox. I want this to be the creative and open space, as well as the tools that make many DJ’s lives easier, less frustrating, more fun and of course, more Free.

As it stands, youstill need rekordbox to import and analyze the music. The algorithms that analyze the music to produce the waveform and beatgrid data is not something I can emulate or replace, at least not at the expected quality (yet?), so for now, you still have to use rekordbox to import your music.
My living room now has 4 DJ mixers of different sorts (for testing), and it’s been quite some fun reverse-engineering the peculiarities of an XDJ-RX2 (running an embedded version of rekordbox, btw), making sure cue points land on the exact spot they should, taking into account mp3 encoders used for a given track, very interesting ways these machines use to read and save their user’s inputs. If you’re into rabbit holes, come and get some!

Seabass runs on Linux, Mac and Windows. For Mac, there are now universal binaries, which means: pretty much any computer made in the past ten years should be able to run Seabass. KDE’s cool Craft project alongside KDE’s pretty awesome CI infrastructure provides the legwork for this. A big thanks to the KDE team, and especially Ben Cooksley for helping me get this done!


Seabass itself is structured in layers, there’s a commandline tool called seabass-cli which makes it a lot more transparant to see what’s going on under the hood. Unittest coverage is at a decent 80+%, with the remainder taken care of by a suite of end to end tests that I run on all three target platforms., plus a ui test suite that exercises and checks most of the QtQuick code. There’s a feature for users to submit an anonymized version of their library, which can be added to the testing suite.
Seabass acts on, and keeps 3 database formats in sync. Pioneer’s DeviceLibrary, Pioneer’s OneLibrary format (yes, two…) and Denon’s Engine format. While developing Seabass, a fair amount of reverse engineering had to be done. I’ve upstreamed a bunch of patches to especially libdjinterop.

Since Seabass is about music, you can also use it to listen to your tracks and playlists. The beatgrid and waveform data that has been to the track actually makes a wonderful base for cool animations. Let’s just say I did have some fun with OpenGL shaders, manifested in the play animation (which can be made full screen).

I haven’t done a lot of Free Software work in my free time in a while, but with this, I’ve found back some of the energy and a new project to dig in to. And it’s good to be back!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.