Software Review: Mixxx Open Source DJ Software
Credit is due to CDMusic for introducing me to the Mixxx Open Source DJ Software last week. Yes, that's three X's in mixxx and I assume it would have been four X's had mixxx.org been registered already like mixx and mix were. My first impression to CDMusic's post was WOW; free software, no additional (proprietary) hardware and compatible with vinyl control. That's pretty much all I ever wanted. I quickly put together a plan to install and test out Mixxx.
It's key to point out that I remember when Final Scratch hit the buzz-bin in DJ circles. That was probably about 2000-2001. Hawtin was the unofficial spokesman for the Final Scratch project and following his performances at the time, the system seemed like it would revolutionize techno (maybe not hip-hop, but definitely techno & house). Additionally, the draw for me was that Final Scratch was built on Free BSD and utilized a dual-boot install to work around windows. That was completely exciting as I was already dual booting Red Hat (pre-Fedora). I was convinced that the open systems were heading in the right direction and I wouldn't have to depend on Win32 or Mac anymore for my audio work. Of course, I was (even back then) still the FOSS snob I am today and wouldn't think of buying Final Scratch (especially at $500).
Since then everyone else jumped on board. Native Instruments, Stanton, Serato (in coordination with Rane), M-Audio, etc all created their own version of vinyl control. They added midi controllers, effects and the whole nine to create the digital dj. The down side in my opinion, is that they moved away from open systems and duplicated their efforts confining their customers to Win32 or Mac OSX. And again, key to point out, I stayed away. I scoffed at the non-free solutions and I wouldn't adopt. So I kept buying vinyl.
Fast Forward to my new fascination with Mixxx. I read through the features of the software and the hardware compatibility notes making sure that my inventory at home would work for Mixxx. Fedora, nope. I could only get Ubuntu, Mac OSX and Windows. Of course, I could get the source so that should work. More on that later. M-Audio Delta 44, check. I verified in the MIxxx wiki that vinyl control would work with one sound card using multiple ins/outs. Yes, but with the caveat that it was only supported on v1.6. Ok, so that was fine as long as my plan to compile form source would work. Turntables, check. Analog Mixer, check. Cables, nope. I had to mish-mash some connectors, couplers and cables to get what I needed. Vinyl Control Records, nope. No problem though, the Mixxx wiki explained that I could grab any of the popular vinyl control records available on the market. Plug and Play.
So what's the total price so far? 2xSerato Scratch Vinyl Control Records, $8.99. 1x15' 1/4" to RCA Stereo Cable, $24.99. 1x12' RCA to RCA Stereo Cable, $12.99. 4xRCA Female to Female Couplers, $2.00. 2x1/4" Female to RCA Male Adapters, $2.50. Without adding it up, it's still quite affordable at a glance.
So I connected all the cables and setup my Fedora Core 8 workstation to accept the new audio config (Intel Core 2 Duo 2.2 GHz, 2GB 800MHz RAM). Simply put, I checked the alsa settings and made sure that the Delta 44 was ready for action. I checked atrpms to make sure Mixxx wasn't already compiled and available in RPM format. It wasn't. Then I checked Planet CCRMA to make there wasn't an RPM available there either. It was available, but after installing I realized that v1.5 wasn't up to par with v1.6 (which I admittedly installed on Win32 to get a glimpse of the application). Specifically, I couldn't use all 4 I/O ports on a single sound card to control Mixxx. Moving on to obtain source and compile.
I have compiled my share of software so I wasn't too worried about Mixxx. I would rather use a yum repo, but compiling does work. It's just a bit inconvenient. The Mixxx developers provided a useful README that spelled out all the dependencies and described the install process well enough to complete. I grabbed the *-devel packages and 'scons'. Ten minutes later, Mixxx was compiled and installed. Upon startup of the software, I had to manually copy the skins directory to /usr/local/mixxx/skins, but it seemed that was the only detail that the install missed. Mixxx launched just fine. Version 1.6 was worth the extra effort.
Configuration probably took longer than the compilation and install. I was fiddling with all the options to make sure I knew what each config setting was affecting. There were some glitches with options not 'sticking' as I applied the settings and moved between the config screens. Not too big of a deal, but workable and usually expected with early versions of FOSS. My main gripe was that the interface options wouldn't stay put. The knobs and sliders on the main interface reset to defaults everytime the software started. Gain, balance, faders and volumes should stay put across restarts of the software (in my opinion).
So the big question is, "Does it work"? It sort of worked. I'll give some detail, so I am clear about what I was trying to achieve. I don't have a mixer-type midi controller and I wasn't about to use a keyboard to control the Mixxx interface. Using a mouse to control the crossfader and channel levels while mixing records was going to be challenge too. So my solution was to create permanent passthrough for the software. Channel #1 in Mixxx would have the crossfader "all the way" to the left and would use the "Main Output". This would translate to the left channel on my hardware mixer. Channel #2 in Mixxx would only be heard through the "Headphone Ouptut" and would translate to the right channel on my hardware mixer. My logic proved successful in theory. I wanted to keep as much native mixing operation as possible, because you can't beat a hardware mixer. So at this point I'm ready to mix. I have direct output to my mixer from each channel. I can use cueing on the mixer to hear both channels and my only software interface is to pull new tracks on the vinyl emulation channels. Vinyl emulation seemed to work. I can pull-back, pitchbend and needle drop on the Serato Vinyl. Good.
It's just not the same. I couldn't quite tell the software exactly what I wanted. The vinyl emulation seemed to work at first, but as I moved from track to track, the needle drop cueing quickly disappeared. For some reason, Mixxx wasn't translating the Serato vinyl to the time point of the digital files. I tried switching between "scratch, absolute and relative" modes in the vinyl control options, but nothing helped. The waveform displays eventually stopped working as the software ran longer over time. That wasn't too big a problem because I still had audio, but losing visual confirmation of your channels quickly kills the software's experience. The "latency" setting is critical to operation of the vinyl control system. At it's default setting, 65ms, cueing was very blurry. Meaning that I could move the vinyl but it's actual cue point was not crisp and way too general to cue properly. A latency setting of 15ms helped tremendously while cueing, but brought the usual click/skip behavior with it. Cycling the app seemed to fix alot of these problems, but obviously it wasn't realistic to cylce the app while mixing.
There are definitely some things I could try to help the situation, but at this point I wasn't convinced by the overall experience. I'm sure a realtime kernel from Planet CCRMA would help. A dedicated, 'clean' workstation would probably also help, though my test setup is pretty clean and in good operating state. It may also be worth a demo on Mac OSX or windows to check on OS compatibility problems.
I still like the idea. On the flip side, I am not convinced that the vinyl control system, be it Mixxx or one of the other proprietary systems, is a total sham. There's been so many reviews of 'production stability' in the DJ booth, that I'm convinced I have to keep trying. I may have to dig deep and go closed for the full exposure. In the meantime though, I'll stick to my expensive, full-sounding vinyl. Let me know when v2.0 comes out.