# Mixxx

Mixxx ist eine freie, plattformübergreifend verfügbare DJing-Software mit Digital-Vinyl-Funktionen. Es wird seit 2002 als freie Software unter den Bedingungen der GNU General Public License (GPL) für alle verbreiteten (Desktop-)Betriebssysteme/Plattformen (Windows, macOS, Linux) veröffentlicht.

## Funktionalität

Mixxx bietet vier virtuelle Plattenspieler mit Tonhöhenregelung (Pitch-Shifting) und automatischem Beatmatching. Zum Vorhören ohne Störung des Hauptausgabekanals kann entweder ein zweiter Kanal der vorhandenen oder auch eine zweite Soundkarte verwendet werden. Die Software kann den BPM-Wert von Musikstücken automatisch ermitteln und ein Beatmatching zu einem anderen Stück vornehmen, das dazu auch unter Vermeidung von Veränderungen in der Tonhöhe (durch Streckung) in erhöhter oder verringerter Geschwindigkeit wiedergegeben werden kann. Schlägt die automatische BPM-Erkennung fehl, so kann durch Mitklopfen (Mitklicken) des Takts manuell nachgeholfen werden. Die Unterstützung für Audioformate umfasst zunächst MP3, Ogg Vorbis, WAV, AIFF und FLAC und kann durch Decodermodule um weitere Formate ergänzt werden.
Mixxx importiert ein beliebiges Verzeichnis, welches die Musikdateien enthält, in seine Musikbibliothek. Zusätzlich kann auch auf fremde Musikbibliotheken zugegriffen werden, unter Linux auf die Rhythmbox-Bibliothek, unter Windows und Mac auf die ITunes-Bibliothek. Musikstücke können sowohl mittels Wiedergabelisten als auch sogenannten Crates (englisch für „Kiste“) organisiert werden.
Ist eine Abwesenheit des DJs erforderlich, kann eine Auto-DJ-Funktionalität eingeschaltet werden, die vollautomatisch eine bestimmte Musikauswahl abspielt und auch das Überblenden selbstständig vornimmt.
Mixxx kann über die grafische Benutzeroberfläche oder externe Steuergeräte gesteuert werden. Dazu kennt es die Kommunikationsmuster für einige MIDI-Controller und bietet für weitere eine Lernfunktion. Mixxx kann auch über herkömmliche Plattenspieler in Verbindung mit verschiedenen Timecode-Platten gesteuert werden. Die graphische Benutzeroberfläche kann mit Skins angepasst werden.
Mixxx bietet einen Equalizer und Filter zur Nachbehandlung und kann Mix-Sitzungen mitschneiden.

## Technik

Die Software ist in C++ geschrieben und verwendet Qt für die graphische Benutzeroberfläche. Um eine Vielzahl an Timecode-Signalformaten zu unterstützen, wird die Software xwax als Programmbibliothek eingebunden. Zur Streckung des Audiosignals wird Code aus der Programmbibliothek SoundTouch verwendet. Für besonders niedrige Latenz und Reaktionszeiten kann unter Linux JACK bei der Tonausgabe eingesetzt werden, was allerdings die Ausgabe auf ein Gerät (Soundkarte) beschränkt. Weiterhin werden unter Windows ASIO, die Windows Audio Session API (WASAPI) und DirectSound, unter Linux OSS und ALSA sowie Core Audio unter Mac OS X unterstützt.

## Geschichte

Das Projekt begann Anfang 2001 im Rahmen einer Doktorarbeit. In den Jahren 2007, 2008, 2010 und 2012 wurden dem Projekt im Rahmen des Google Summer of Code jeweils mehrere Programmierstipendien zuteil. Nachdem sich Final Scratch von Linux verabschiedete gehört Mixxx – neben UltraMixer – zu den wenigen unter Linux lauffähigen DJ-Programmen; es gibt hier fertige Installationspakete für Debian-basierte Systeme, bei Debian und Ubuntu findet sie sich in den Software-Repositorien.