26 Apr

Xwax - An open source DVS

Some preamble

With the recent release of Ubuntu 9.04, I thought I’d take the “netbook remix” for a spin on my eeePC 901. I wasn’t really using the machine for much, so was happy to nuke it and start completely from scratch- for fun. Yeah, ok, spot the propellerhead, but we knew that.

It turns out that the whole installation process is a lot more polished than it used to be.. I just wrote an image file to a usb key, stuck it in the machine, booted and installed. There were a couple of post-install fixups needed to finish the job:

  • The current kernel.org driver for the on-board WLAN has an issue with WPA2 networks, so I installed the old one (quick and easy).
  • I also installed the “eeeasy” scripts to make the soft buttons map to useful stuff like toggling bluetooth/camera/cpu speed and so forth.

The point

So now I had this cute little machine all set up, had watched “Have I Got News For You” on iPlayer, and generally did the “woo, I’m living in the future” thing.. I started wondering about mixing with it…

There’s actually a very high-quality open-source DVS out there, called xwax. It’s quite a well-kept secret, people generally find another project, “mixxx”, which is flashy, works with MIDI controllers but which is horribly bugged. Oddly, it uses xwax’s timecode engine, which is about the most reliable part of it).

I’d tried xwax in the past on my desktop machine and it was great- silky smooth, and bombproof, and so minimal in its aims that I thought it could actually work nicely on the 901. Without further ado, I grabbed xwax,compiled it, and had a bit of an RTFM.

There’s a script called xwax_import supplied, which decodes audio in separate processes (so a dying audio decoder never kills xwax). It basically decodes audio files and outputs raw audio. Reading through the script made it clear how everything worked- it uses external decoder programs to do the donkey work, and is simple and customisable.

I needed to install mpg123 so it could decode mp3s. Being a debian variant, a quick

aptitude install mpg123

did the trick.

I like this approach.It means that if you store your tunes in a format that xwax doesn’t understand, you can easily extend it it to add support- assuming you have a command line decoder for for that sort of audio file to hand.

Xwax is very much a tinkerer’s DVS.. It’s probably not for people who can’t figure out why they hear “a funny noise” when they play a timecode disk, or why Serato isn’t showing BPMs.. The primary thrust is all about working reliably, not about hand holding.

Since the most logical place to put the machine was where my SSL machine normally sits, I thought I’d see if ALSA (the sound drivers) understood the Rane SL-1 that I have set up there. I’d run XWax using a couple of 2in/2out soundcards before, so I knew it would work with pretty much any soundcard setup, as long as Linux could understand it.

I found a slightly out of date guide for setting up xwax with an SL-1, which was pretty handy. It wasn’t entirely accurate in a few respects, but it saved some time. It claimed that you needed to patch sound drivers, but having plugged the device in, and seen it apparently recognised without any extra work, I did a quick

cat /proc/asound/cards

..and there it was! That saved a few minutes work.

Anyway, with some faffing and experimenting, it turned out that the command:

./xwax -t serato_cd -i xwax_import  -l /home/iluvtiesto/tunes -a serato_line1 -a serato_line2

..did the job.

So, I was up and running.. How did it run? Absolutely flawlessly! Seriously, smooth like a Ken doll. Never missed a beat once. The timecode decoding seemed to be snappy and latency seemed nice and low. I don’t scratch, so I didn’t push this aspect as hard as some might.

I didn’t need to do any performance tweaking- I even left wireless on. The only real bit of configuration I did was to edit /etc/security/limits.conf, adding an extra line:

iluvtiesto     -         rtprio        50

so that xwax could run itself at realtime priority. I had no stalls, nor audio drop-outs from it, everything was amazingly slick.

The other thing worth noting is that xwax actually supports three decks. However, since I only own two CDJs, I didn’t try this. I did consider plugging an extra sound card into the machine, and ripping the Serato timecode to WAV- so that I could control a third deck from my VCI-300 with Itch, but not only would that be ludicrous, people would probably misunderstand what this was demonstrating.

Sooo… that’s it really. I mixed for an hour or so on it, without any problems, and I have to say, it was so uncluttered and straightforward, it was impressive. It doesn’t offer any fancy extras like sync, key lock or anything else- it’s literally trying to give you the functions of a basic turntable- as faithfully as possible. I suspect that with vinyl control, the illusion is pretty convincing, as the whole thing is built to be ultra-low latency.

It’s worth noting that xwax will work with pretty much any sound cards that you can get your hands on, as long as they are supported by ALSA, you just need to add a linux box, some tunes and supported timecode disks (Serato timecodes are supposed to be the best supported). A geek looking to build a DVS on a budget could probably do quite well with two decent-quality stereo in/out USB cards, or something like the inevitable Maya44USB (assuming the support works nicely etc).

You’d need your head examining if you bought an SL-1 just to run xwax, though…

Pros: Rock solid, stable, low latency DVS with absolutely no software costs for OS or DVS. Runs well on quite low-end hardware, and you don’t need fancy sound hardware.

Cons: This one’s only for the geekcore. If you’re scared of the command line, it’s not for you. Also, the feature set is minimal- designed to give the turntables experience- if you’re looking for sync, tonnes of effects and fancy lolDJ automatic cue juggling, this isn’t for you.

Written by: Magichorsie
Discussion Link: Here


djforums.com - The Worldwide DJ Community is proudly powered by Wordpress