In this post, I will attempt to give you an idea how I use Mixxx. This isn’t a detailed manual of all usage cases, but a howto or tutorial explaining how I use the program. Please post comments!
What is Mixxx?
Mixxx is an open source digital DJ’ing program developed by Tue Haste Anderson and those who submit patches. It allows an inspired individual to mix tunes together just like a DJ does with a pair of real turntables. It provides support for a headphone cue1 to allow the DJ to preview and beatmatch the incoming track before it is mixed in. Mixxx also has the ability to apply an LFO filter to a track, with more filters forthcoming. Mixxx can interface with OSS, Alsa, or Jack to output the audio. It can play OGG, MP3, and WAV files, and it can do your homework2.
Getting Started with Mixxx
With version 1.4.2, if you have the headphone switch on for a channel, it will not output itself to the mix when the crossfader says it should. This is nasty and makes the preview mostly useless, so use CVS if you want this feature and the stable is still 1.4.2. BUT I should also mention here that CVS has some pretty nasty bugs right now, so be warned.
When using mixxx, I highly recommend that you use the Jack Audio Connection Kit in realtime priority mode. This should minimize (hopefully to 0) the amount of glitches in the audio playback. It will also allow you to wire the outputs easily however you like using qjackctl. I also like to use TimeMachine to record what comes out of Mixxx through Jack.
Qjackctl makes working with Jack easy
If your sound card is a Sound Blaster Live! or another card with two outputs, you’re probably already using them for front and rear speakers. What I’ve done is used a 1=>2 minijack splitter to split the front speakers’ output into two outputs—one for my front, and one for my rear. So, I’ve lost my true 4.1 sound, but I don’t play games that demand it (nor do I even have the rear speakers set up properly in the rear). The rear output from your sound card is now freed for your headphones.
Another important thing to consider when trying to get the headphone cue to work is that the ALSA kernel driver (that is being used not by Mixxx, but by Jack in this case) does not support the ability for an application to properly distinguish the front and rear outputs. I believe Linux 2.6.12 has this fix merged in, but I’m not 100% sure as I’m still using the alsa drivers built from the package rather than from the kernel. See this thread for more information about this issue.
Mixxx busy at work
So, you have everything set up properly, and you’re ready to get mixing. A wise DJ once boiled the art down to the following bullet points:
- Most songs have a major change every 16 measures.
- Beatmatching is important.
- Practice makes perfect.
Here’s how I beatmatch: While playing track A, toggle on the headphone cue for track B. Find a spot in B where the beat flow is easy to pick out, that is, the measures are dead easy to feel as you line them up with A. Stop B just before beat 1 of the next measure. Right before beat 1 of A, unpause B so they are aligned. You now are hearing B in your headphones while A continues to play on the master out. This is where you must make a judgement as to whether the previewing track (B) is faster or slower than the currently playing one (A), and adjust the rate sliders appropriately. You will then either need to grip the waveform and nudge it (difficult!3) or use the rate sliders back in sync. Another option is to stop B at beat 1, and repeat the process.
With some practice, you will find that you can make the adjustments quickly, and even be fairly accurate as to how much to tweak. If you find yourself making large adjustments, remember that you can adjust the rate of A as well, but not too much! This is the song everyone’s listening to, so a large adjustment may be noticable.
Using the mouse on the sliders affords you very little in the way of accuracy. This is okay for finding the right ballpark, but once you’re mixing the track in, the best way to make rate adjustments is with the keyboard. F1/F2 are down/up 0.1% for Channel A, and F5/F6 operate for channel B. Holding shift in combination with these keys gets you an even finer 0.01% control over the rate, but I rarely use this feature.
Anyway, that’s the technical stuff. To actually make it work, you need some idea of the flow of your songs to know how and when to fade where. One good method is to beatmatch the songs, then roll B back to the start, hit play when A begins the next measure after a good transition (16 bar rule), and mix at your leisure.
Using an External Mixer or MIDI Device
If you have a real DJ mixer, it is possible to use it with Mixxx. Slide the crossfader all the way to the left (channel A) and enable the headphone preview for channel B. By doing this, you have a perfect workaround to route each channel out separate outputs of your soundcard which can then be routed to your real hardware mixer.
Mixxx also supports midi devices such as the FaderMaster and Mixman DM2, although I haven’t tried it with either. I’m curious about how the Mixman DM2 works with mixxx (like what you can control and how) so if you have any experience, please drop a comment. It should also be noted that by using a program like Pd to capture the signals coming through the midi bus, one can write their own config file to bind the controls of just about any midi device to any of the Mixxx controls.
Set Up a Private Internet Radio Station
I’ve just recently began to experiment with this. By properly configuring Icecast2 and Darkice, you can stream your live performance out to whoever will listen. Darkice captures and encodes the audio, and passes it to Icecast2 which actually streams it out to the clients. Once configured, simply launch Icecast, launch Darkice, and connect the Darkice inputs to the Mixxx (master) outputs in qjackctl.
I hope you’ve found this tutorial to be useful. Surely I haven’t covered everything there is to cover regarding Mixxx, but hopefully somebody learned something. Please give me some feedback so I may perhaps adapt this further and add additional info.
- This feature is broken in 1.4.2, but works fine in CVS.
- That is, provided you have to produce a studio mix for the assignment.
- I’ve asked Tue to do something about it, but it seems that dragging the mouse on the waveform is very sensitive, so your click/drag/release must be very quick. This is almost never a good idea when the song you’re nudging is playing to your audience as it will produce a rather unappealing sound.