[HN Gopher] Mixxx: GPL DJ Software
___________________________________________________________________
Mixxx: GPL DJ Software
Author : brudgers
Score : 345 points
Date : 2025-01-20 15:53 UTC (7 hours ago)
(HTM) web link (mixxx.org)
(TXT) w3m dump (mixxx.org)
| drdirk wrote:
| What does GPL stand for?
| frob wrote:
| 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.
| TeeMassive wrote:
| I like your "no bad questions" attitude and your
| straightforward answer!
| asimovfan wrote:
| Its like when Morpheus goes into the Matrix to free more
| people.
| BlueTemplar wrote:
| Matrixxx (and Trinity, of course, wears a GIMP suit)
| apt-get wrote:
| 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.
| noman-land wrote:
| 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?
| Mashimo wrote:
| 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/
| crtasm wrote:
| 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.o
| rg/2.5/en/chapters/controlling_mixxx#c...
| SamWhited wrote:
| 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!
| input_sh wrote:
| 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.
| shermantanktop wrote:
| Is it latency? Or granularity? MIDI has upper limits on
| both...or is it a more subtle quality like ballistics?
| cies wrote:
| 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.
| diggan wrote:
| > 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.
| quesomaster9000 wrote:
| 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.
| phntxx wrote:
| 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.
| diggan wrote:
| > 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 :)
| Mashimo wrote:
| 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.
| Mashimo wrote:
| 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
| )
| hlzhs wrote:
| 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...)
| copyleftdj wrote:
| 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.
| Mashimo wrote:
| 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.
| nzoschke wrote:
| Haven't tried it myself but CDJ-3000s have been rooted.
|
| https://github.com/connorworley/cdj3k-root
| fragmede wrote:
| > 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.
| nzoschke wrote:
| 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.
| fragmede wrote:
| 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
| quesomaster9000 wrote:
| 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_f
| ormat_li...
| helpfulContrib wrote:
| >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?
| bri3d wrote:
| 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.
| hlzhs wrote:
| 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.
| djaychela wrote:
| 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.
| jesprenj wrote:
| 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.
| djaychela wrote:
| 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.
| corint wrote:
| Wishing you well - sorry to hear that you're in ill health.
| djaychela wrote:
| 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!
| tomcam wrote:
| So sorry, brofus. My best to you and yours.
|
| Also, your channel is fantastic. You're a good teacher and
| your voice is excellent.
| Mashimo wrote:
| * https://github.com/erikrichardlarson/unbox
|
| * https://github.com/ViktorNova/mixxx-now-playing
| Sn0wCoder wrote:
| 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.
| raphman wrote:
| 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.
|
| [1] https://github.com/erikrichardlarson/unbox/blob/2182f227a
| 0fc...
| btown wrote:
| 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!
| djaychela wrote:
| 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...
| ustad wrote:
| 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.
| quesomaster9000 wrote:
| 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.
| starkparker wrote:
| 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.
| iammrpayments wrote:
| I thought this was Donald's Knuth Mix computer at first
| brudgers wrote:
| If only he had wanted to DJ organ music.
| treve wrote:
| 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
| sim7c00 wrote:
| thanks for commenting this. all i needed to know :D
| tmountain wrote:
| 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.
| ThatMedicIsASpy wrote:
| 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.
| radley wrote:
| How does the auto DJ compare to something like Pacemaker?
| bramgn wrote:
| What does GPL actually do?
| sho_hn wrote:
| 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.
| weinzierl wrote:
| 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.
| profsummergig wrote:
| 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?
| ericzawo wrote:
| 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.
| HelloUsername wrote:
| 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
| hlzhs wrote:
| Thanks, we wanted to honor our user's privacy when we
| redesigned the website.
| officeplant wrote:
| Been using Mixxx since 2015, I haven't liked every update they
| put out, but its always been solid software.
| msephton wrote:
| I currently use DJ.Studio so I'm interested how Mixxx compares.
| hlzhs wrote:
| 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.
| mjsir911 wrote:
| 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.
| kristopolous wrote:
| 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
| cpach wrote:
| What are good controllers for using together with Mixxx?
| suranyami wrote:
| 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.
| hlzhs wrote:
| 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_...
| poopsmithe wrote:
| 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.
| mixmastamyk wrote:
| 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.
| hlzhs wrote:
| 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.
| ghomem wrote:
| 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 :-)
| joemi wrote:
| 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.
| igor47 wrote:
| Love mixxx! I use it regular for DJing with an ancient ddj sb2
| controller
___________________________________________________________________
(page generated 2025-01-20 23:00 UTC)