Hi.
Since I rely on accessibility and haven't found a "DJing tool" for Linux
which doesn't require a graphical interfaces...
I used to do offline mixes with a bunch of sox instances piped into each
other, orchestrated with a shell script...
Which is rather tedious, so...
I recently came back to this and decided it is a great opportunity
for having a tool vibe-coded.
For playing with vibe-coding, and actually solving a problem I always had.
So I had GPT-5(.1) scratch my itch.
And out came
https://github.com/mlang/clmix
It has a built-in player + metronome for working out bpm, offset
of the main beat grid and start/end cue points.
Seeking works with bars, so you dont have to fiddle with time.
Once you worked out a track by ear, you can do a "snap-to-grid"
using aubio as a beat/onset detector to refine the offset if necessary.
Once you are happy with the track timing, you save it to your DB.
If you have a number of tracks in your DB, you then can
generate a (shuffled) mix. Selection of tracks from the DB
uses a tag expression language, so you can do things like
clmix music.json --random "dnb | jungle" --export beats.wav
clmix will determine the mean bpm, bring all track to the same
tempo and align cue points for you.
Thats basically its main use case for me.
I use mpd with crossfade a lot for playing music at home,
and kind of wanted something that actually can generate good crossfades.
So when I want a "club mix" at home, I now simply
generate it from my favourites I added to the clmix db.
Nothing special, just a tool to get a particular job done,
for a particular user group (command-line junkies).
Vibe-coding was fun.
From idea to first executable code was just a few hours.
However, I have a particular taste when it comes to C++,
so after a while of being amazed that much apparently correct code
was written by the AI, I started to play the "let me fix this" game.
Ended up doing a lot of bikeshedding. OTOH, I still feel
that kind of ping-pong was necessary to keep the code half-way decent.
If you let the AI do its thing without supervision, the code
ends up pretty unreadable after a while.
In any case, I make the fact this is vibe coded clear because
I do definitely not claim the fame. While I love to play
with programming, this is neither my dayjob nor do I have a lot of
(recent) practice. So I likely wouldn't have written this
if I didn't have some help. So with all the war around AI use
on the net, I can say this was a nice outcome for me.
Nobodies job was taken away, and I got something nice for maybe $30 of
API costs.
I got what I wanted, and I didn't have to waste a lot of time on it.
In any case, if this is helpful to anyone, enjoy.
--
CYa,
⡍⠁⠗⠊⠕