Used mixxx to do the djing for my wedding last year. Created a collaborative music voting site for the guests, then got all the music and made a mix which worked really well, even going between genres. Had a lot of fun playing with it getting everything ready and it worked with a couple of DJ controllers bought cheaply without any issue.
I even made a little program to read the now playing track from the sqlite database which then allowed the lights to follow the music (for complex reasons I don't have time to explain).
Most importantly it worked on the night without missing a beat.
Can you share the program that reads the now playing track? We use Mixxx at a student radio station and we could maybe try using something like this to show the now-playing track on the website.
Not sure whether that's the correct way but it seems to work.
AFAICT, there is no "now_playing" field in the sqlite db - but tracks that start playing are added to the `PlaylistTracks` table. That means that if you started two tracks and then pause one or the other and restart it, no row will be added. Only adding a track from the library and then playing it will add to the PlaylistTracks list.
(Is there a simpler solution I missed?)
import sqlite3
import time
from pathlib import Path
home = Path.home()
con = sqlite3.connect(f"{home}/.mixxx/mixxxdb.sqlite")
cur = con.cursor()
def get_track_name():
global cur
trackid = cur.execute("SELECT * FROM PlaylistTracks WHERE id=(SELECT max(id) FROM PlaylistTracks);").fetchall()[0][2]
trackname = cur.execute(f"SELECT * FROM library WHERE id={trackid};").fetchall()[0][2]
return trackname
now_playing = get_track_name()
print(now_playing)
while True:
if (np := get_track_name()) != now_playing:
now_playing = np
print(np)
time.sleep(1)
Edit: FWIW, unbox [1] uses the same approach.
Edit 2: yes, I should have cleaned up my SQL statements.
I will see... Not being evasive but I'm experiencing terminal illness at the moment so I'm all over the place. It wasn't a complex bit of code though, but I'll see what I can find.
Thank you. Sorry, I had a look but I didn't find the code (it's not in the github repo for the rest of the system I made, and I no longer own the laptop I wrote it on so it's my bad).
Someone has posted something similar, but it was literally just about 10 lines of python that read the right key in the dictionary and then posted that to a flask web page that another part of the system read to know what track was being played. I'm not a great programmer and it took me maybe 15 minutes to do, so it should be easy enough!
I have not used Mixxx nor do I have it installed, but might download to check it out.
But.....
If its always in a SQLite DB you should be able to use DB Browser for SQLite to inspect the DB Schema and then write a bash/python (whatever) script to pull the info out.
RESULTS=$(sqlite-utils "data.db" "
SELECT
song,
artist,
duration,
FROM my_table
WHERE song = 'CURRENT';")
RESULTS=$(sqlite3 data.db <<EOF
SELECT
song,
artist,
duration,
FROM my_table
WHERE song = 'CURRENT';
EOF
)
I have no idea what the schema looks like but those are just some examples of how straightforward it might be. Run it on CRON (whatever) update as needed.
https://cronitor.io/guides/python-cron-jobs
Once you have the Schema an LLM could most likely do the rest if you are not a programmer, but still need someone to get it added to the site.
What did you use for the collaborative music voting - or did you make something yourself? For different use cases, I've seen everything used from collaborative Spotify playlists to Google forms, to those "pay a dollar to bump your song request" kiosks in bars! The parallels to ranked-choice voting in politics are relevant too - as well as how you give people a feeling of agency, even if you as the DJ inevitably have veto powers.
I'm not surprised that startups haven't tackled this, as you inevitably run headfirst into licensing issues - but I'm curious what exists in the open-source world for this!
I made something custom. I can't share the code for it (see my other reply for why), but here's the general deal:
Wedding website was a django site, with accounts for everyone I invited. I had a separate part of it where the guests could choose an RGB colour, and then choose tracks by searching. I used a spotify API for this, so when they chose a track, if someone chose a similar one (say a specific mix) then they could see this and vote for that. Each guest could choose 10 tracks. I used some HTMX for this as well (first time) and it generally worked pretty well. Database stored the spotify ID/UUID/whatever for each track
Once everyone had voted, I then bought all the tracks which we were going to play - reason being that I couldn't rely on WiFi on the day, and wanted to be 100% sure it would work, plus I couldn't "DJ" from spotify tracks.
All of the tracks were then renamed including their spotify ID/UUID/whatever, so the system knew who had voted for a specific track.
I then made the playlist up in Mixxx, and trimmed tracks to fit better, and made it work musically (my wife is excellent at this, she made it really work, mix wise). Made sure it all played OK.
The other part of the system was a custom light setup, with sound-reactive LED bars I made up (using ESP8266 and WLED firmware with 150 LEDs per 'stick') with them all being controlled by a custom controller. This system read the track from the Mixxx system (via HTTP request to a flask app I wrote that read the sqlite dB from mixxx to know what track was playing), and then coloured the lights with the colours of the people who had voted for the tracks. Also if you went onto the dancefloor you could 'swipe in' via an RFID label which was in the wristbands, which also reacted to lights and were colour-controlled over DMX.
The light patterns were sometimes random, or if one was good for a specific track then I programmed that into the system.
It was all spaghetti code, and the first time I used FastAPI. The code is terrible, and I'm only making it public as I thought it might be useful to someone.
I've just had a terminal cancer diagnosis and am no longer doing anything other than trying to stay alive. So please, no grief about the code! I'm sharing this to try to help someone else if they ever want to do something like this...
Thanks for sharing this - it’s a really cool project! I love the creativity and thought you put into combining music, lights, and interactivity in such a unique way.
Wishing you all the best, and thank you for contributing to the community with this, especially under such difficult circumstances.
Best wishes on your fight. When I was facing a near death situation my now wife used Creative Visualization. She pictured us walking on our favorite walk in our local park with ducks, which I love to watch. https://en.wikipedia.org/wiki/Creative_visualization It can also be used to help focus your immune system. These suggestions are to be used combined with evidence based medicine not as an alternative.
Been using it for the past few years, nothing bad to say about it, lovely piece of software. Vendor lock-in is very present in this field, with different brands of controllers supported by a myriad of proprietary DJ applications all more interested in onboarding you to their music subscription services rather than implement useful features or support open protocols.
Meanwhile, Mixxx allows you to write your own adapter scripts for any controller you have (as long as it outputs MIDI), and there's a built-in library featuring scripts for the most common commercial controllers and MIDI devices out there.
In Rekordbox's case Pioneer have restricted the jogwheel mapping to Pioneer hardware only. So, you pretty much need Pioneer hardware to use Rekordbox. And seeing as Pioneer decks are almost industry standard in clubs and you need Rekordbox to organise your playlists, they have the DJ hardware market sewn up. Which is very frustrating because Rekordbox has to be the most resource intensive (& therefore inefficient) DJ software available.
Even if there's not a mapping Mixxx has a "MIDI Learning Wizard" (I forget what they call it) where, assuming it speaks MIDI, you can plug it up, choose an action, and then move the control for that action and it will figure out how to wire it up. For simple configurations that don't require scripting (ie. no setting LEDs on the controller or what not) you can get a fully functional setup for a controller Mixxx has no knowledge of without writing any JavaScript or XML at all!
I'm really happy that 2.5 added 'beats until next marker', which together with a USB controller from Numark I have pretty much feature complete DJ setup for under $500 (including cost of laptop & controller) without having to rely on Windows, Mac, subscription licenses or feature-crippled 'lite' versions.
And it's surprising how quickly people adapt to it when they're used to other setups, within an hour a few people have gone from 'oooh, can I have a go' to showing me their own tips, tricks and different styles.
Especially combined with a youtube & soundcloud downloader running on a different workspace, I can get pretty much any track into the library within a minute or two.
Mixx is sneaky good as a TTRPG soundscape mixer. You can queue layer multiple ambiance tracks over tempo-matched music, build soundboards, and hook it all to hardware controls.
It's overkill, but a lot of similar tools either lock you into a media ecosystem, lack some power-user functionality, have a subscription, or don't work at all on Linux or macOS.
Mix is absolutely awesome. One of the most carefully organized open source projects that I've seen.
Some years ago I made a Mixxx demo video with a DYI "integrated controller". It demos Linux boot to Mixxx, touch screen, beatmatching and some modest effects:
I've been using this to make mix tapes at home (bought a vintage tape player). It has awesome cross fading capabilities, and it does volume normalization out of the box, so it's a very nice piece of software for those features alone. Playlist and library management is also solid. My only complaint is that the UI isn't very intuitive for a non-DJ, and it took me some time to figure out how to do basic stuff, but it's all there in the docs, so you can certainly figure it out.
I've been setting up a few radio stations with playlists for azuracast for home use. The auto DJ with auto cue is amazing. Next stop is create a radio with a raspberry pi maybe with an amp hat as well.
I used mixxx to DJ my brother's wedding. I think it was 2013 or 2014. The moment I got the signal to switch to a specific track for the bride's first dance with her Father, mixxx locked up my laptop. Guests were staring at me, one offered a hushed, "they're waiting!" Completely unresponsive, I had to hard reboot my locked up computer and boot back into Ubuntu. Then I opened VLC where I played the tracks for the rest of the evening. Probably not mixxx's fault, but I will never forget that moment.
Yep, that can happen when computers are involved, and why one needs to practice with a new setup beforehand. Goes for performances or rocket launches.
During my DJ sessions (and while dabbling in digital audio files from a computer), I usually brought an old Sony Discman loaded with my best tracks on a burnt CD. Kept ready at moments notice in case disaster struck. Sadly crashes weren't uncommon at all in the bad old late 90s when consumer OSs were unstable crap.
I guess a smart phone could do that duty today, but you'll still need to have an adapter plugged into the mixer beforehand/ready to go to minimize disruption.
I use it simply as an audio player.
I like the way I can queue up songs and then let the Auto DJ play. I know other audio players can in principle do that but in Mixx it is very explicit. I also like to see key and BPM just to satisfy my curiosity.
Never thought of this, I use it mostly for live mixing but I probably never tried the Auto DJ feature. I need to give it a try, it would probably be a lot more inspiring to play my collection that way instead of in a traditional music player. Great tip!
I was a DJ for a good few years, and once I discovered Mixxx I used it exclusively. High quality software, compatible with basically every controller, Linux support, and an open-source license - what more could you ask for?
Music has fallen out of my life since then, but I am glad Mixxx is going strong.
I've had a lot of fun setting mixxx up for DJing on my steam deck, with fully scriptable (in javascript) USB hid bindings, I've been able to reverse engineer the steam deck's control schemes to be able to mix quite portably.
I used to use Mixxx a lot about a decade ago when I was DJing weekly in some bars and also had a weekly radio show. It was great. I'm glad to see it's still around and going strong.
RekordBox is a well known piece of s** and it's great to see someone try to enter the arena. Now we need a legit competitor to the DJM / CDJ's which cost, all told, >$10k for a standard, club-ready setup.
I didn't know it was well known but that's exactly how I felt when I recently tried to use it. My local bar bought an integrated 2 deck Pioneer DJ player, but turns out it doesn't store analyzed BPMs or waveforms and to get that you need to use RekordBox to analyze your tracks and export that to your USBs. When I tried to install the software it requires signing up for an account and a subscription and what not. I still couldn't get it to work and abandoned it. I won't be going back to it the experience isnt worth it. I'm instead having more fun just beatmatching by ear with the pitch fader :)
I've been using this for the few DJ sets I do per year. Very complete software, very stable also.
Sadly I have to use RekordBox now that I want to not bring the laptop + DJ controller, but just a USB stick. And RekordBox does not run well on Linux (tried VirtualBox and Wine, both failed attempts).
Sadly there's no RecordBox clone, or "export to RekordBox USB" feature on Mixxx.
RekordBox doesn't even run well on Windows, so hard to imagine what worse looks like.
But yeah, if Mixxx (or other FOSS software) could offer writing playlists into USB sticks, I'd get rid of RekordBox yesterday because few software out there works as bad as RekordBox.
I considered renting out some Pioneer equipment to add RekordBox playlist writing support, mainly because I'm in a similar situation. Mixxx does have support for reading USBs & SD cards, but not writing ;_;
Unfortunately it's far down my priority list given the cost, my unfamiliarity with Mixxx development and that I rarely do anything without Mixx.
But this is absolutely what ecosystem grants/bounties should be for.
Mixxx dev and main author of rekordcrate here. The issue is that the format is an ancient proprietary format that does not have been reverse-engineered to a degree that we can properly write Rekordbox DBs yet (Rekordcrate is based on the work done here: https://djl-analysis.deepsymmetry.org/rekordbox-export-analy...)
Would be cool if there is Foss firmware to install on pioneer cdj. It just feels better for a lot DJs. Any projects in this direction?
BTW, the DJ collective I'm with has Pioneer CDJ. If anyone need use the hardware let me know. I'm trying to get them to start using open FOSS software, but it is hard.
I'm a bit annoyed by the requirement of having to use rekordbox exports on some DJ devices and would probably chip in to this because I will definitely not try to install rekordbox again :D
Could not agree more. I recently made the switch to exclusively using Linux on Desktop machines, yet I now have to have a Windows PC laying around for the sole purpose of updating my USB using Rekordbox.
Without the Rekordbox beat analysis, you'd only be getting track names, and you can achieve similar functionality on the Pioneer side by just putting the files for a each playlist in a separate folder.
There's a kaitai bin format parser config file for the usb db file but kaitai isn't expressive enough to read it properly from that.
Pioneer (err Alphatheta)'s stranglehold on the industry is a shame due to lack of interoperability, among other issues with Rekordbox.
The Rekordbox.xml format [1] is quite simple. Note the `<TEMPO>` and `<POSITION_MARK>` tags.
But Pinoeer can be weird and there's a lot of old (even ancient) equipment out there, so sometimes it's a case of finding the lowest common denominator and sticking to that.
I dunno whether "good" really applies to this, but I've gotta say I've been loving the cost, portability and reliability of the Numark DJ2Go Touch ($AU120):
I've got a cute little portable setup using it, a Raspberry Pi 5 with a 1TB m.2 SSD, 15" portable USB-C monitor and a Keychron low-profile keyboard and bluetooth mouse. Works amazingly well.
I'm betting that just about any controller would be worth a shot.
Depending on how much space you have, I'm using a Numark MixTrack Platinum FX, with the mapping from the forum.
Everything works! Even the display in the middle of the jogwheels, that comes with the '4 deck' version, which shows BPM, time left, rotation indicator, shift amount/mode.
At this point almost all buttons & knobs on it are in regular use, although some of the deeper menu combos accessible via buttons aren't fully intuitive but don't seem to matter.
In this space, probably the biggest effect might be that HW vendors of DJ kit cannot fork this software to bundle with their HW and avoid sharing their improvements back, so people using other HW can still benefit.
Its kind of a nuisance that, as a requirement to build Mixxx on MacOS, ones has to use foreign binaries, disable Gatekeeper, run a 'first build', and from that point on .. can treat the project as a regular CMake project. Re-enable Gatekeeper after the 'first build'.
Hmm.
What are the custom binaries for? Surely not cmake. Not having - yet - done this myself (until I can put it in a VM), I'm nevertheless kind of curious about this necessity.
Any Mixxx/MacOs devs care to describe the contents?
The same binary-backed build process is present on Windows, too, presumably to keep people from needing to go through dependency hell to contribute to the project.
That is exactly the reason. Also, some libraries we are using are not on homebrew (and we cannot easily pin a specific version).
Another reason that we'd like to reduce the maintenance burden by using a similar setup for windows and macOS deps. Our dev team is small, and almost all of us use Linux. For macOS in particular we don't have anyone on the core team that uses it as their daily driver, which may also play a role when talking about the DX in macOS.
It's one of several options for software licenses a developer or team can use when distributing a piece of software to help ensure that it and its derivates stay free and open-source.
Not sure whether to be dismayed or excited at the fact that this is a question on Hacker News, but those who are new to it; definitely worth doing your homework.
It's the legal jiu-jitsu that has enabled Linux and countless other "Open Source" projects to remain free by preventing people from taking the code for free but then locking it back down.
Used mixxx to do the djing for my wedding last year. Created a collaborative music voting site for the guests, then got all the music and made a mix which worked really well, even going between genres. Had a lot of fun playing with it getting everything ready and it worked with a couple of DJ controllers bought cheaply without any issue.
I even made a little program to read the now playing track from the sqlite database which then allowed the lights to follow the music (for complex reasons I don't have time to explain).
Most importantly it worked on the night without missing a beat.
Can you share the program that reads the now playing track? We use Mixxx at a student radio station and we could maybe try using something like this to show the now-playing track on the website.
Not sure whether that's the correct way but it seems to work. AFAICT, there is no "now_playing" field in the sqlite db - but tracks that start playing are added to the `PlaylistTracks` table. That means that if you started two tracks and then pause one or the other and restart it, no row will be added. Only adding a track from the library and then playing it will add to the PlaylistTracks list.
(Is there a simpler solution I missed?)
Edit: FWIW, unbox [1] uses the same approach. Edit 2: yes, I should have cleaned up my SQL statements.[1] https://github.com/erikrichardlarson/unbox/blob/2182f227a0fc...
I will see... Not being evasive but I'm experiencing terminal illness at the moment so I'm all over the place. It wasn't a complex bit of code though, but I'll see what I can find.
So sorry, brofus. My best to you and yours.
Also, your channel is fantastic. You’re a good teacher and your voice is excellent.
Wishing you well - sorry to hear that you're in ill health.
Thank you. Sorry, I had a look but I didn't find the code (it's not in the github repo for the rest of the system I made, and I no longer own the laptop I wrote it on so it's my bad).
Someone has posted something similar, but it was literally just about 10 lines of python that read the right key in the dictionary and then posted that to a flask web page that another part of the system read to know what track was being played. I'm not a great programmer and it took me maybe 15 minutes to do, so it should be easy enough!
* https://github.com/erikrichardlarson/unbox
* https://github.com/ViktorNova/mixxx-now-playing
I have not used Mixxx nor do I have it installed, but might download to check it out.
But..... If its always in a SQLite DB you should be able to use DB Browser for SQLite to inspect the DB Schema and then write a bash/python (whatever) script to pull the info out.
RESULTS=$(sqlite-utils "data.db" " SELECT song, artist, duration, FROM my_table WHERE song = 'CURRENT';")
RESULTS=$(sqlite3 data.db <<EOF SELECT song, artist, duration, FROM my_table WHERE song = 'CURRENT'; EOF )
I have no idea what the schema looks like but those are just some examples of how straightforward it might be. Run it on CRON (whatever) update as needed. https://cronitor.io/guides/python-cron-jobs
Once you have the Schema an LLM could most likely do the rest if you are not a programmer, but still need someone to get it added to the site.
What did you use for the collaborative music voting - or did you make something yourself? For different use cases, I've seen everything used from collaborative Spotify playlists to Google forms, to those "pay a dollar to bump your song request" kiosks in bars! The parallels to ranked-choice voting in politics are relevant too - as well as how you give people a feeling of agency, even if you as the DJ inevitably have veto powers.
I'm not surprised that startups haven't tackled this, as you inevitably run headfirst into licensing issues - but I'm curious what exists in the open-source world for this!
I made something custom. I can't share the code for it (see my other reply for why), but here's the general deal:
Wedding website was a django site, with accounts for everyone I invited. I had a separate part of it where the guests could choose an RGB colour, and then choose tracks by searching. I used a spotify API for this, so when they chose a track, if someone chose a similar one (say a specific mix) then they could see this and vote for that. Each guest could choose 10 tracks. I used some HTMX for this as well (first time) and it generally worked pretty well. Database stored the spotify ID/UUID/whatever for each track
Once everyone had voted, I then bought all the tracks which we were going to play - reason being that I couldn't rely on WiFi on the day, and wanted to be 100% sure it would work, plus I couldn't "DJ" from spotify tracks.
All of the tracks were then renamed including their spotify ID/UUID/whatever, so the system knew who had voted for a specific track.
I then made the playlist up in Mixxx, and trimmed tracks to fit better, and made it work musically (my wife is excellent at this, she made it really work, mix wise). Made sure it all played OK.
The other part of the system was a custom light setup, with sound-reactive LED bars I made up (using ESP8266 and WLED firmware with 150 LEDs per 'stick') with them all being controlled by a custom controller. This system read the track from the Mixxx system (via HTTP request to a flask app I wrote that read the sqlite dB from mixxx to know what track was playing), and then coloured the lights with the colours of the people who had voted for the tracks. Also if you went onto the dancefloor you could 'swipe in' via an RFID label which was in the wristbands, which also reacted to lights and were colour-controlled over DMX.
The light patterns were sometimes random, or if one was good for a specific track then I programmed that into the system.
It was all spaghetti code, and the first time I used FastAPI. The code is terrible, and I'm only making it public as I thought it might be useful to someone.
https://github.com/djaychela/wedding_controller
I've just had a terminal cancer diagnosis and am no longer doing anything other than trying to stay alive. So please, no grief about the code! I'm sharing this to try to help someone else if they ever want to do something like this...
Thanks for sharing this - it’s a really cool project! I love the creativity and thought you put into combining music, lights, and interactivity in such a unique way.
Wishing you all the best, and thank you for contributing to the community with this, especially under such difficult circumstances.
Best wishes on your fight. When I was facing a near death situation my now wife used Creative Visualization. She pictured us walking on our favorite walk in our local park with ducks, which I love to watch. https://en.wikipedia.org/wiki/Creative_visualization It can also be used to help focus your immune system. These suggestions are to be used combined with evidence based medicine not as an alternative.
Been using it for the past few years, nothing bad to say about it, lovely piece of software. Vendor lock-in is very present in this field, with different brands of controllers supported by a myriad of proprietary DJ applications all more interested in onboarding you to their music subscription services rather than implement useful features or support open protocols.
Meanwhile, Mixxx allows you to write your own adapter scripts for any controller you have (as long as it outputs MIDI), and there's a built-in library featuring scripts for the most common commercial controllers and MIDI devices out there.
To be fair, every commercial competitor (like Rekordbox and Traktor) also supports mapping MIDI devices that are not officially supported.
But in my experience, you'll never be able to control the jogwheel as precisely as in officially-supported hardware-software combo.
In Rekordbox's case Pioneer have restricted the jogwheel mapping to Pioneer hardware only. So, you pretty much need Pioneer hardware to use Rekordbox. And seeing as Pioneer decks are almost industry standard in clubs and you need Rekordbox to organise your playlists, they have the DJ hardware market sewn up. Which is very frustrating because Rekordbox has to be the most resource intensive (& therefore inefficient) DJ software available.
Resource intensive, and it's been crashing on me far too regularly to be relied on at all.
Is it latency? Or granularity? MIDI has upper limits on both…or is it a more subtle quality like ballistics?
I tried it many years ago and this didn't work. Can Mixxx be used with the Rane mixers used with Serato back in the day?
Does the mixer speak midi? In that case probably.
Is there already a mapping for you device? Check the manual https://manual.mixxx.org/2.5/en/
Even if there's not a mapping Mixxx has a "MIDI Learning Wizard" (I forget what they call it) where, assuming it speaks MIDI, you can plug it up, choose an action, and then move the control for that action and it will figure out how to wire it up. For simple configurations that don't require scripting (ie. no setting LEDs on the controller or what not) you can get a fully functional setup for a controller Mixxx has no knowledge of without writing any JavaScript or XML at all!
specifically: https://manual.mixxx.org/2.5/en/hardware/manuals#hardware-ma...
and if not there, the forum might have one: https://mixxx.discourse.group/c/controller-mappings/10
I notice that HID is also supported: https://manual.mixxx.org/2.5/en/chapters/controlling_mixxx#c...
I'm really happy that 2.5 added 'beats until next marker', which together with a USB controller from Numark I have pretty much feature complete DJ setup for under $500 (including cost of laptop & controller) without having to rely on Windows, Mac, subscription licenses or feature-crippled 'lite' versions.
And it's surprising how quickly people adapt to it when they're used to other setups, within an hour a few people have gone from 'oooh, can I have a go' to showing me their own tips, tricks and different styles.
Especially combined with a youtube & soundcloud downloader running on a different workspace, I can get pretty much any track into the library within a minute or two.
Mixx is sneaky good as a TTRPG soundscape mixer. You can queue layer multiple ambiance tracks over tempo-matched music, build soundboards, and hook it all to hardware controls.
It's overkill, but a lot of similar tools either lock you into a media ecosystem, lack some power-user functionality, have a subscription, or don't work at all on Linux or macOS.
Mix is absolutely awesome. One of the most carefully organized open source projects that I've seen.
Some years ago I made a Mixxx demo video with a DYI "integrated controller". It demos Linux boot to Mixxx, touch screen, beatmatching and some modest effects:
https://www.youtube.com/watch?v=DjHvW4OsQ2Y
Mixxx devs: if you are reading this... cheers :-)
I've been using this to make mix tapes at home (bought a vintage tape player). It has awesome cross fading capabilities, and it does volume normalization out of the box, so it's a very nice piece of software for those features alone. Playlist and library management is also solid. My only complaint is that the UI isn't very intuitive for a non-DJ, and it took me some time to figure out how to do basic stuff, but it's all there in the docs, so you can certainly figure it out.
I've been setting up a few radio stations with playlists for azuracast for home use. The auto DJ with auto cue is amazing. Next stop is create a radio with a raspberry pi maybe with an amp hat as well.
How does the auto DJ compare to something like Pacemaker?
I used mixxx to DJ my brother's wedding. I think it was 2013 or 2014. The moment I got the signal to switch to a specific track for the bride's first dance with her Father, mixxx locked up my laptop. Guests were staring at me, one offered a hushed, "they're waiting!" Completely unresponsive, I had to hard reboot my locked up computer and boot back into Ubuntu. Then I opened VLC where I played the tracks for the rest of the evening. Probably not mixxx's fault, but I will never forget that moment.
Mixxx dev here. I'm sorry you had a bad experience. We are spending a lot of effort on making Mixxx rock stable.
Considering that this was more than a decade ago, I'm pretty sure that this bug has been fixed by now.
Yep, that can happen when computers are involved, and why one needs to practice with a new setup beforehand. Goes for performances or rocket launches.
During my DJ sessions (and while dabbling in digital audio files from a computer), I usually brought an old Sony Discman loaded with my best tracks on a burnt CD. Kept ready at moments notice in case disaster struck. Sadly crashes weren't uncommon at all in the bad old late 90s when consumer OSs were unstable crap.
I guess a smart phone could do that duty today, but you'll still need to have an adapter plugged into the mixer beforehand/ready to go to minimize disruption.
I use it simply as an audio player. I like the way I can queue up songs and then let the Auto DJ play. I know other audio players can in principle do that but in Mixx it is very explicit. I also like to see key and BPM just to satisfy my curiosity.
Never thought of this, I use it mostly for live mixing but I probably never tried the Auto DJ feature. I need to give it a try, it would probably be a lot more inspiring to play my collection that way instead of in a traditional music player. Great tip!
Also works great with my Traktor mixer. Traktor doesn't have linux support for their software, so I was glad my mixer didn't brick after the switch
thanks for commenting this. all i needed to know :D
Been using it since ~2006 ... it's pretty great software. Hooking it up to a cheap sub-$100 MIDI controller is amazing.
Just looked it up - I had no idea it's from 2001 - this puts it in a small group of long-active FLOSS
I was a DJ for a good few years, and once I discovered Mixxx I used it exclusively. High quality software, compatible with basically every controller, Linux support, and an open-source license - what more could you ask for?
Music has fallen out of my life since then, but I am glad Mixxx is going strong.
I've had a lot of fun setting mixxx up for DJing on my steam deck, with fully scriptable (in javascript) USB hid bindings, I've been able to reverse engineer the steam deck's control schemes to be able to mix quite portably.
I very much like the website itself, built to work without Javascript, and doesn't make any external calls as far as I can tell
Thanks, we wanted to honor our user's privacy when we redesigned the website.
I use it as my main software for my Traktor Kontrol S2.
Some Lights are buggy and the fix is not yet out.
Also Highlighting Tracks based on a fitting Key is only availible in the Alpha Branch of the software, which obivously has lots of other issues.
Besides that its an easy software which can handle all of my other feature requirements and it runs really nice.
So i would really recommend it ;)
I want to do scratching by pushing a button on my laptop keyboard (instead of dragging the spinning record with my mouse-cursor).
Can Mixxx do this?
Not sure if that's mappable, but I don't think that would provide enough control to get satisfying results.
The ideal interface of course would be to use an external turntable and use one's hand to rotate a physical plate or record.
I find the mouse-cursor drag very clunky.
Been using Mixxx since 2015, I haven't liked every update they put out, but its always been solid software.
I have also probably used it on and off for 10+ years, but don't recall any bad updates. What did you encounter that you didn't like if I may ask?
I used to use Mixxx a lot about a decade ago when I was DJing weekly in some bars and also had a weekly radio show. It was great. I'm glad to see it's still around and going strong.
RekordBox is a well known piece of s** and it's great to see someone try to enter the arena. Now we need a legit competitor to the DJM / CDJ's which cost, all told, >$10k for a standard, club-ready setup.
I didn't know it was well known but that's exactly how I felt when I recently tried to use it. My local bar bought an integrated 2 deck Pioneer DJ player, but turns out it doesn't store analyzed BPMs or waveforms and to get that you need to use RekordBox to analyze your tracks and export that to your USBs. When I tried to install the software it requires signing up for an account and a subscription and what not. I still couldn't get it to work and abandoned it. I won't be going back to it the experience isnt worth it. I'm instead having more fun just beatmatching by ear with the pitch fader :)
I thought this was Donald’s Knuth Mix computer at first
If only he had wanted to DJ organ music.
I currently use DJ.Studio so I'm interested how Mixxx compares.
Just try it, it's completely free: https://mixxx.org/download/#stable
Mixxx is entirely community driven: There is no company behind it, everything is done by unpaid volunteers.
I've been using this for the few DJ sets I do per year. Very complete software, very stable also.
Sadly I have to use RekordBox now that I want to not bring the laptop + DJ controller, but just a USB stick. And RekordBox does not run well on Linux (tried VirtualBox and Wine, both failed attempts).
Sadly there's no RecordBox clone, or "export to RekordBox USB" feature on Mixxx.
> And RekordBox does not run well on Linux
RekordBox doesn't even run well on Windows, so hard to imagine what worse looks like.
But yeah, if Mixxx (or other FOSS software) could offer writing playlists into USB sticks, I'd get rid of RekordBox yesterday because few software out there works as bad as RekordBox.
I considered renting out some Pioneer equipment to add RekordBox playlist writing support, mainly because I'm in a similar situation. Mixxx does have support for reading USBs & SD cards, but not writing ;_;
Unfortunately it's far down my priority list given the cost, my unfamiliarity with Mixxx development and that I rarely do anything without Mixx.
But this is absolutely what ecosystem grants/bounties should be for.
I think there are two projects who worked on it a bit:
* https://github.com/kimtore/rex
* https://github.com/Holzhaus/rekordcrate (Current status of export: https://github.com/Holzhaus/rekordcrate/pull/103 )
Mixxx dev and main author of rekordcrate here. The issue is that the format is an ancient proprietary format that does not have been reverse-engineered to a degree that we can properly write Rekordbox DBs yet (Rekordcrate is based on the work done here: https://djl-analysis.deepsymmetry.org/rekordbox-export-analy...)
Would be cool if there is Foss firmware to install on pioneer cdj. It just feels better for a lot DJs. Any projects in this direction?
BTW, the DJ collective I'm with has Pioneer CDJ. If anyone need use the hardware let me know. I'm trying to get them to start using open FOSS software, but it is hard.
You could put a lot of time and effort into getting your own firmware for CDJs .. or you could just connect them via USB to an pi running mixxx.
Haven’t tried it myself but CDJ-3000s have been rooted.
https://github.com/connorworley/cdj3k-root
> But this is absolutely what ecosystem grants/bounties should be for.
I'd be down to fund a bounty/grant for this (and I'm clearly not alone), if anyone is looking for booty :)
I'm a bit annoyed by the requirement of having to use rekordbox exports on some DJ devices and would probably chip in to this because I will definitely not try to install rekordbox again :D
See my other comment to parent, there are two libraries who started, but did not finish. Maybe they can be incentivized to start up again.
Could not agree more. I recently made the switch to exclusively using Linux on Desktop machines, yet I now have to have a Windows PC laying around for the sole purpose of updating my USB using Rekordbox.
> RekordBox playlist writing support
Without the Rekordbox beat analysis, you'd only be getting track names, and you can achieve similar functionality on the Pioneer side by just putting the files for a each playlist in a separate folder.
There's a kaitai bin format parser config file for the usb db file but kaitai isn't expressive enough to read it properly from that.
Pioneer (err Alphatheta)'s stranglehold on the industry is a shame due to lack of interoperability, among other issues with Rekordbox.
An export db with title, artist, album and rough BPM could be useful to interoperate with the native browse and search menus on a CDJ.
Without beat grids have to best match by ear but that’s par for the course for many DJ scenarios.
https://djl-analysis.deepsymmetry.org/rekordbox-export-analy... (and playlist entry rows) should have a complete enough description if someone wants to give it a try
The Rekordbox.xml format [1] is quite simple. Note the `<TEMPO>` and `<POSITION_MARK>` tags.
But Pinoeer can be weird and there's a lot of old (even ancient) equipment out there, so sometimes it's a case of finding the lowest common denominator and sticking to that.
[1]: https://cdn.rekordbox.com/files/20200410160904/xml_format_li...
I used Mixxx as a teenager to feel like a DJ. Great to see it here!
Love mixxx! I use it regular for DJing with an ancient ddj sb2 controller
What are good controllers for using together with Mixxx?
Check the https://manual.mixxx.org/2.5/de/hardware/manuals for a list of built-in mappings shipped with Mixxx. There are also additional user mappings on the discourse forum: https://mixxx.discourse.group/c/controller-mappings/10
Personally, I use the Roland DJ-505: https://manual.mixxx.org/2.5/de/hardware/controllers/roland_...
I dunno whether "good" really applies to this, but I've gotta say I've been loving the cost, portability and reliability of the Numark DJ2Go Touch ($AU120):
https://www.numark.com/product/dj2go2-touch
I've got a cute little portable setup using it, a Raspberry Pi 5 with a 1TB m.2 SSD, 15" portable USB-C monitor and a Keychron low-profile keyboard and bluetooth mouse. Works amazingly well.
I'm betting that just about any controller would be worth a shot.
Depending on how much space you have, I'm using a Numark MixTrack Platinum FX, with the mapping from the forum.
Everything works! Even the display in the middle of the jogwheels, that comes with the '4 deck' version, which shows BPM, time left, rotation indicator, shift amount/mode.
At this point almost all buttons & knobs on it are in regular use, although some of the deeper menu combos accessible via buttons aren't fully intuitive but don't seem to matter.
c++, GPL2
What does GPL actually do?
In this space, probably the biggest effect might be that HW vendors of DJ kit cannot fork this software to bundle with their HW and avoid sharing their improvements back, so people using other HW can still benefit.
>GPL DJ Software
Its kind of a nuisance that, as a requirement to build Mixxx on MacOS, ones has to use foreign binaries, disable Gatekeeper, run a 'first build', and from that point on .. can treat the project as a regular CMake project. Re-enable Gatekeeper after the 'first build'.
Hmm.
What are the custom binaries for? Surely not cmake. Not having - yet - done this myself (until I can put it in a VM), I'm nevertheless kind of curious about this necessity.
Any Mixxx/MacOs devs care to describe the contents?
You can just read the source? mixxx-deps come from a build process sourced from:
https://github.com/mixxxdj/vcpkg
The same binary-backed build process is present on Windows, too, presumably to keep people from needing to go through dependency hell to contribute to the project.
That is exactly the reason. Also, some libraries we are using are not on homebrew (and we cannot easily pin a specific version).
Another reason that we'd like to reduce the maintenance burden by using a similar setup for windows and macOS deps. Our dev team is small, and almost all of us use Linux. For macOS in particular we don't have anyone on the core team that uses it as their daily driver, which may also play a role when talking about the DX in macOS.
[dead]
Can you recompile Gatekeeper to allow compatibility with Mixxx?
[dead]
What does GPL stand for?
GNU General Public License: https://en.wikipedia.org/wiki/GNU_General_Public_License
It's one of several options for software licenses a developer or team can use when distributing a piece of software to help ensure that it and its derivates stay free and open-source.
I like your "no bad questions" attitude and your straightforward answer!
Its like when Morpheus goes into the Matrix to free more people.
Matrixxx (and Trinity, of course, wears a GIMP suit)
Not sure whether to be dismayed or excited at the fact that this is a question on Hacker News, but those who are new to it; definitely worth doing your homework.
It's the legal jiu-jitsu that has enabled Linux and countless other "Open Source" projects to remain free by preventing people from taking the code for free but then locking it back down.
[dead]