I started doing more Mixxx development on Windows this week and I've been trying to fix lots of little bugs. I'm pretty embarrassed at how badly broken drag-and-drop on Windows was in 1.8.0 Beta 2 - Sorry about that guys, we really didn't do much testing of the library stuff on Windows before the release. It's fixed in our 1.8 code repository, but I have no idea when we're going to make our next release. I think that bug pretty crippling though, so if enough people complain, I'll try to talk our Windows packager into building a new version for you guys.
On Saturday, we woke up to a nice surprise from our downloads.mixxx.org hosting provider. They cut off downloads to Mixxx 1.7.2 for Win32 because we had too many requests to it! We had a couple thousand downloads in one day, and apparently they're unable to provide us with the 5 TB of monthly bandwidth we pay them for because of CPU usage. After scratching our heads for a while, we ended up redirecting users to a temporary download page with links to a mirror site and a torrent. Big thanks to Mark Glines for helping us out temporarily until we find a permanent hosting solution!
Our MIDI guru, Sean Pappalardo, has put a new video this week showcasing the SCS.3d and SCS.3m MIDI controllers in action:
Lastly, check out YouTube user Scratchtometry busting out his SCS.3d hot cueing and scratching skillz with Mixxx in two videos:
After many months of planning and development, we're finally approaching a beta release of Mixxx 1.8. Since our last release, several major new features have matured and are almost ready for public testing.
Our main focus for 1.8 has been improving the library, which is a direct result of continued feedback from our users. We're also excited to have been able to address several other major feature requests, and we think 1.8 is a big step in the right direction.
Library
The brand new database-powered library is not only faster, but much more flexible as well. The new library features include:
Keep your library organized by sorting your tracks into crates.
Need to take a break for a few minutes? Throw some tracks into the Auto DJ playlist and let Mixxx cover you.
The new Analyze view lets you peek at your recently added tracks and perform batch BPM detection.
A brand new intelligent library scanning algorithm is both quick and accurate at importing new tracks when you launch Mixxx. The library scanner is even smart enough to notice when you've moved tracks around inside your library and preserves any extra metadata you've added in Mixxx like comments and BPMs.
Crates in the new library
Looping and Ramping Pitch Bend
A major rework of our audio engine also brings looping to the next release of Mixxx. Running out of time to find that perfect next track for your mix? Lay down a loop and buy yourself more time. Unlike the competition, Mixxx has no limitations on the length of your loop, so you can be as creative as you want to be.
Additional work on our mixing engine has lead to a new feature we call ramping pitch bend. Ramping pitch bend helps you add extra smoothness to your mixes by making temporary pitch bends accelerate rather than jump suddenly.
MIDI Enhancements
A brand new MIDI backend completes the rewrite of Mixxx's MIDI code, the first part of which was included in 1.7 and enabled innovative new features like our MIDI scripting engine. The hot new addition for 1.8 is integrated multiple MIDI device support.
What do we mean by integrated? Check it out:
AAC and iTunes Support
Mixxx 1.8 can playback DRM-free AAC/M4A files on Windows, Mac OS X, and Linux. On Windows and OS X, Mixxx can also now see your iTunes library and let you play tracks from it without importing them.
In addition to a 1.8 beta, we're also preparing a 1.7.2 bug fix release. This release will fix MIDI on OS X and improve stability for certain hardware configurations.
2009 has been an exciting year for Mixxx, and 2010 is shaping up to be even better. As the year closes, we'd like to thank all of our generous contributors and supporters. We hope you're looking forward to next year as much as we are!
Sean Pappalardo's been busy again, this time working on support for the Stanton SCS.1m and improving our existing support for the SCS.3d. In this first video, Sean explains some of the neat features he's coded like fader-start, real-time feedback using the SCS.1m LED digit displays, and lots of other bells and whistles.
In this second video, Sean demonstrates some of the new features he's implemented since he made his original SCS.3d video, including the new vinyl platter mode and VU meters.
Our improved SCS.3d and SCS.1m support will be available for everyone to play with in our next beta. In the meantime, current hardware owners can still use their controllers with Mixxx 1.7.0 Beta1, but they'll have some extra to look forward to in our next release.
Speaking of which - Since our recent beta, your bug reports have provided us with important feedback that's helped us discover, fix, and prevent several problems. We've now identified a handful of remaining issues that we want to tackle, and once they're fixed, we'll either release another beta or a "release candidate". We've also completed a preliminary round of planning for Mixxx 1.8, but we'll save that for another blog post. Stay tuned!
One of Mixxx's newer developers, Sean Pappalardo (DJ Pegasus), has been hacking away at MIDI scripting for the past few months so that we can fully support more advanced MIDI controllers. One of the new controllers scripting will allow us to support is Stanton's SCS.3d (aka "DaScratch").
The StantonSCS.3d replaces conventional knobs, buttons and sliders found on other MIDI controllers with touch-sensitive surfaces laid out in a DJ-friendly format. It's compact, rugged, light-weight, and best of all, reliable, since there are almost no moving parts to break. The large central circular area is where all the magic happens as it can be configured to serve multiple purposes (jog dial/vinyl emulation, three sliders, or 9 buttons) depending on the control needs of the software.
Sean demonstrating the SCS.3d with Mixxx 1.6.2
Mixxx's previous MIDI system only allowed you to map one MIDI control to one property and provided no means of feedback or otherwise sending commands to the device. However, controllers like the SCS.3d are of limited use without being able to illuminate LEDs and toggle various modes, since there would be no physical indicators.
Stanton gets around this by offering a free middleware solution called "DaRouter" which essentially acts as a MIDI translation bridge between your DJ software and the SCS.3d. However, it is difficult to get feedback to the controller from your DJ software, and your ability to customize the device's behaviour is limited. Additionally, this middleware solution is not available for Linux.
Enter Mixxx's new MIDI Scripting Engine.
After scratching our heads for some time, we conjured up and coded a system that allows DJs to link hardware MIDI controls with custom script functions. These scripts are written in QtScript, which is an easy language that's almost identical to JavaScript. Scripts can contain functions that can affect any number of Mixxx controls and also send feedback to a hardware MIDI device, freeing Mixxx from a one-to-one mapping ideology. These user-created scripts can then do anything desired with the MIDI event data such as have a single controller button simultaneously affect two or more Mixxx properties, adjust incoming control values to work better with Mixxx (scratching,) display a complex LED sequence, or even send messages to text displays on the controller.
This approach provides a number of key benefits:
Script functions are evaluated at run time and and can access or modify Mixxx's internal properties.
QtScript brings all of the advantages of a full scripting language. For example, functions can use variables, allowing a single piece of code to be used for multiple cases and to remember states between invocations (this is how we implement mode and deck switching).
Functions can send any MIDI messages they like including SYStem EXclusive messages, needed for advanced controllers like the SCS series for mode changes and text displays.
Functions can be connected to Mixxx properties so that when the property changes, the function is called with the new value, allowing automatic controller response.
DJs can customize the script functions to suit their particular work flow and desires without compiling anything.
Support for complex controllers can be added to Mixxx at any time between releases by anyone since no compilation is needed!
No middleware is needed to use advanced controllers like the SCS.3d with Mixxx
Our MIDI scripting system is platform-independent, which makes it available to Windows, Mac OS X, and Linux users!
Our new MIDI scripting engine is going to be the biggest new feature in Mixxx 1.6.2, and we're currently polishing it up along with some of our other MIDI code. We hope to have a beta release out within the next month or two for our DJs to play with.
Lastly, we'd like to thank Stanton for their gracious support and cooperation. We think the SCS.3d is going to be a great device for Mixxx users in the future!
This latest video of Mixxx 1.6.0 in action demonstrates what scratching sounds like with vinyl control. In the video, I'm scratching with a Serato record on my Stanton T.80 turntable, and using my M-Audio X-Session Pro MIDI controller as a virtual mixer. I changed Mixxx's crossfader curve setting in the preferences to "fast cut", which is what you'd set the curve control on a real mixer to when you're scratching.
The turntable is plugged directly into my laptop using the turntable's line-out and my laptop's onboard soundcard.
I recently did some work on our "vinyl emulation" code that mimics the way the pitch changes when you're using a turntable. I managed to improve the sound quality enough that scratching with Mixxx + vinyl control sounds convincingly similar to scratching with real vinyl. These improvements will be included with our next beta release.
There's been some cool new Mixxx videos posted on YouTube this month. First up is Trinity's Indamixx handheld again, this time demonstrating a beatmix on the device:
For more information on the device, check out the official site.
Next up is a video from one of our developers, Jan Jockush, demonstrating all the hard work he put into the Mixman DM2 on Linux:
A few nights ago I captured a video while doing a quick test mix using Mixxx's vinyl control.
Not my best transition ever, but it works. :)
I've been trying to do some tweaking to get the latency down and one of the biggest improvements came from compiling Mixxx with SSE and MMX optimizations. The tricky part with turning on these optimizations is that they'll only work on post-Pentium III CPUs. That's fine for our Windows and OS X builds, but it's a problem for our Ubuntu package because we can't assume any specific CPU architecture. One possible solution for this is to disable SSE/MMX optimizations in the package that lives in the Ubuntu repositories and host a different (SSE/MMX optimized) Ubuntu package on our website.
In the meantime, I still have lots of work to do on fixing up the library. Busy, busy!