Organizing and Preparing Music for Live Mixing: Framework and Process
!NOTE: this article assumes you own the legal rights to the music you are mixing!
Now that we got that out of the way, let's get started on the fun part.
Most modern professional Djs will organize their music according to micro genres, often being the case that even the order of the tracks considers tempo (BPM) and additively harmonious mixing (key signatures). It's no longer clear to me which is the egg and which is the chicken in the case of dance music audiences and selectors, but an increasing number of us nerds are experimenting with mashing different genres and taking creative freedoms massively bending the tempo.
If you want to have fun, mix different genres together.
The Playlist
Herein lies the first decision: if you can organize music by micro-genres, letting the industry and producers do most of the pairing work for you. If, however, you choose not to do this, I can offer the following criteria for your consideration:
- Energy content. You can think of this as a vague notion combining the tempo and the density content of the track.
- Mood content. Is it uplighting or melancholic? Is it light or dark? Popular culture likes to conflate this with major and minor keys, but as you practice, you will see that this is a false equivalence.
- Thematic content. Does it tell a story with words or sounds? Lyrics are the most pointed way to cognitive prime humans, but pay attention to what instruments are used, it will invariably paint a picture.
I like to combine the various permutations of these criteria to create set-and-setting specific playlists. I have one for poolside parties, one for sunsets in the desert, one for duststorms, one for sweaty basements and so on. I find that this process works best over the long haul.
Enter Stage Left: Spotify
We are all likely using Spotify already, so this makes for a natural place to bucket like with like. In the car, on a hike, at the gym, on the couch.
I don't want to use Spotify...
For you, my friend, there is TuneMyMusic. Now, back to Spotify, since now we have achieved Playlist Portability!
There is an intermediate step here about making sure you can legally use the music you are listening to on Spotify.
With that out of the way, I use (and donate to) Spytify. Spytify is a clever bit of Microsoft .NET in the form of a distributed desktop application that vendors LAME MP3 Encoder DLLs, along with the NAudio wrappers to record audio streams at the local audio interface loopback level while properly naming, supplying ID3 and organizing the music.
This means you can queue up the prepared playlists and let Spytify do its thing. This also means you have to wait. If you made it this far down, you probably recognize that other Spotify playlist downloaders just go out to YouTube and rip the first result from there, and like me you don't want that.
Hold Up, Why Are My 320 kbps Files 305kbps?!
Realistically, you probably failed to notice this but perhaps you had to deal with audio artifacts in the middle of your set. How embarassing! Well, I am you.
It turns out that all modern LAME presets use VBR/ABR(Variable/Average Bitrate) encoding. This means that the bitrate fluctuates around the average. This is great for streaming services and storage/quality density tradeoffs, but not so great for DJs. Mostly because the Prioneer XDJ series of standalone products hate VBR (I use the XDJ-RR for outdoor parties).
As generous as the original project author is with his time, he did not much care for providing the CBR option in the original Github issue circa 2021. This usually involved transcoding one more time into CBR, crude and lossy.
I finally rolled up my sleeves and found a workaround (as well as issuing a pull request if you are inclined to locally build the project in Visual Studio). Due to very clever forward compatibility jwallet built in, it's easy to simply refer to any existing Enum value in the list of LAME presets provided to us by the NAudio wrapper and the GUI will read out the name and include it in the dropdown by augmenting the dictionary.
Furthermore, for legacy compatibility purposes and luckily for us, one of the presets that still exist is the INSANE 320kbps preset (love me some late 90s nomenclature), which not only coincides with the Spotify Premium streaming rate, but also enforces CBR (constant bitrate) encoding.
This means you can simply modify your Spytify preferences on the filesystem and it will Just Magically Work as outlined in my inspection saga on Github. I also took the time to issue a pull request providing this in the GUI from the start. If you are inclined to build the project yourself, you can find the pull request here.

TL;DR: If you don't care for late night adventures of this nerd, just download the version I fixed and built for you, use the INSANE preset and Pioneer will love you. Link, this is based on v1.12 which potentially has some bugs according to the Github issues.
But I Don't Use Windows...
... I can hear the screams from the Bay Area technical community. Well then, my friend Cake invites you to take a look at Glomatico’s Apple Music Downloader which seems to be even more active than Spytify. My other friend Pablo still says there are ways to do this with Deezer as well.
Stage Right: Rekordbox
Once you have a playlist, start arranging the tracks. Are you playing before or after others? If you're opening, choose a lower tempo and build it up throughout the set. If you're the headliner, you might want to keep an elevated tempo throughout. If you're closing, you might want to go slower as you progeress. Try to make sure most transitions are in key!

Take a look at the harmonics wheel above. Notice the simple to understand Alphanumeric representation of signatures. You can confidently mix in adjacent slices, it jump rings in the existing slice. MixedinKey.com calls this the "Up, Down, Around" strategy and offers this graphic (if you are in 8A right now);

Meaning, this is good:
12A -> 11A (+1,A)
9B -> 8B (-1,B)
or
12A -> 12B (+0, A-B)
9B -> 9A (+0, B-A)
However, you cannot do both or skip indices:
12A -> 11B (+1, A-B)
9B -> 7B (-2, B)
Guess what, you don't have to do any of this legwork, Rekordbox will tell you if you're on the right track using the Traffic Light feature.
Rekordbox Traffic Light
Somehow I was not able to find a good knowledge base article or a marketing site feature on this, so I will show you what I mean.

I used a white pen to bring your attention to the specific parts of the GUI you need to be mindful of. Firstly, in the example above, our track is in 1M (top, next to tempo 134). This loaded into Player A, so for Rekordbox to know what it's referencing, make sure to click the button above your track browser that says 'PLAYER A' (middleo of screenshot). Bllue means engaged (what you want).
Once this is done, every track that's harmoinically compatible will glow up in the Key column. Ta-da! As you'd expect, for 1M this qualifies both 2M and 12M (shown) as well as 1D (not shown). I use A-B in the example above, Rekordbox uses M-D.
Conclusion
It took me months to figure some of this out, mostly because you never know what you don't know. Similarly, IYKYK. Happy mixing, friends, and don't forget to invite me to your set party.
Stand by for my writeup about my portable PA system used for OFFIS.work.