Frequently Asked Questions
1) General questions
1.1) Why another software mixer? We already have enough of them...
This one is different. Most other mixers (Traktor, Mixxx, DJBPM, ...) try to reproduce a typical mixing console and, while they do that pretty well, they end up limiting the users. They usually allow only two files to be played at the same time and they don't interact well (or at all) with other audio programs. With FreeMix you can use as many file players as you need (better, as many as your hardware allows) and put the output of other audio applications (sample players, sequencers, DAWs, ...) directly into your mix, synched to the beat. And you can route the output of FreeMix into other applications, for example a virtual effect rack like Jack-Rack...
1.2) I've heard someone say that every software mixer sucks. It this true?
In a sense, yes. A software audio player (and mixer) works and "feels" differently from any hardware system. It's not a limitation of software engines, but a user interface one - the typical computer input devices (keyboard and mouse) aren't designed for the kind of interaction needed between a DJ and his console.
But a software mixer can do much more, as a virtually unlimited number of effects and playback tricks which aren't possible with an analog system. To bridge the gap between the two, you can connect an external MIDI interface (or more than one) and use it to control most of the parameters of FreeMix. ( This one looks nice, if you have too much money on your hands :)) Or you can put FreeMix into two-channels-output mode (disabling the internal mixer engine) and hook it up to a real DJ mixer.
1.3) A mixer for Linux? Only geeks and nerds use it! Why don't you develop it on the best operating system in the world, Microsoft Windows Apple OS X?
FreeMix works on all the operating system you've mentioned. It's based on open technologies (JACK, GStreamer, GTK+, ...) which don't tie it to a single platform. It's developed primarily on Linux, as it's a reliable platform for this and many others uses, and the one the authors are more knowledable about. See the next question.
1.4) A serious audio application for Linux? Are you joking? It just isn't designed for this kind of things.
Just visit the Sound & MIDI Software For Linux page. Check out applications like Ardour, which are used everyday in production studios. And if you're more a DJ than a producer, don't forget that the first version of Stanton's FinalScratch was only available for Linux (at the time, Windows XP was considered "too unstable" by Stanton itself).
1.5) Freeware? Another crappy program? You will force us to pay for it, sooner or later'''
FreeMix it's not freeware. It's released under a Free Software license, the GNU General Public License, version 2 or later. That means that you can read, use, customize to your needs and distribute this program (provided you allow the recipients the same rights, basically). It's not about the price, but about Free as in Free speech. This license allows us to reuse the excellent work of other independent groups (such as the JACK project, input/output codecs and other DSP libraries) without having to rewrite the code ourselves, which shortens up development time and effort significantly.
2) Technical questions
2.1) Is Linux able to work at the low latency needed for this kind of things?
A recent Linux distribution (based on Linux 2.6.12 or later) will perform well (measurably better than the non-designed-for-audio Windows NT kernel people use for audio applications) in the soft-realtime low-latency environment we need for an audio application like FreeMix. If you really need to reach the lowest latency possible, you can extensively tweak a Linux machine (like installing a kernel with Ingo Molnar's realtime-preemption patch) for it. Closed systems (like Microsoft Windows or Apple OS X) don't (and can't) offer the user the same grade of flexibility.
2.2) A lot of free audio programs use libsndfile for input. Why doesn't FreeMix do the same?
While libsndfile supports a wide range of wave and sample-based formats, it doesn't support many common compressed codecs (there are third-party patches to add Ogg/Vorbis? support, but the author has repedeatly stated that he won't support patent-encubered formats, such as MP3).
We could have written an universal input element which supported libsndfile, libogg, libvorbis, libflac and libmad (to be able to decode Vorbis, FLAC and MP3) but it would have been a significant work and a source of subtle bugs. And it wouldn't solve the biggest problem - free distributions (like Debian and Fedora) wouldn't compile FreeMix against the patent-encoumbered libmad, leaving the user with the only choice to use a third-party repository or compiling by source.
2.3) Why GStreamer?
GStreamer is a generic media framework which supports a wide range of formats and codecs. It's based around plugins, which can be built and installed separately from the main package. This allows FreeMix to be able to read a new format just after the corresponding plugin is installed without the need to recompile from source. GStreamer is shipped and installed by default on many common distribution, as is a dependency of the GNOME 2 Desktop and the default media engine of the upcoming KDE 4.
2.4) GStreamer just isn't designed to do low-latency audio processing. Why are you using it then?
Right, GStreamer isn't designed for hard realtime operation, but for common desktop usage. But we only use GStreamer as an input layer - our FmInputGst element does dynamic buffering to ensure that our realtime thread (the one which needs audio data within deadline) will get it - this also allows us to do nearby seeks with the lowest latency possible.
2.5) There are a lot of audio frameworks around. Why another one?
FreeMix doesn't implement a complete audio framework - its only task is to move audio data between elements and handle connection and disconnection between them. It's what someone could call meta-framework, as it leverages existing well-developed frameworks (such as JACK and GStreamer) integrating them in a coherent application.
2.6) Client/server separation is useless in audio applications, it will only add latency.
Most modern audio applications use an engine/GUI separation. This allows for much more flexibility - you can use (and develop) different GUI interfaces designed torward a specific usage pattern, or control the same audio engine from different computers allowing for interesting multi-user mixing sessions. It also better isolates bugs and eases debugging of each component.
To allow interprocess communication, we use the purpose-built RGC object-oriented IPC library, which guarantees low owerhead and fast request processing, while using the best communication mechanism availabe (unix sockets and shared memory for local connections and TCP transport for use on LANs). As for latency, modern hardware and operating systems have an extremely high context-switch speed which shouldn't affect latencty in a human measurable way. At least, that's what many serious audio application developers think.
2.7) JACK? Normal users doesn't use it and don't want to spend time configuring it. Why don't you use ALSA, DirectSound or CoreAudio?
FreeMix is structured around elements. This allows the audio engine to output to different audio subsystems (changing the output forces FreeMix to restart, though). The JACK output plugin is loaded by default as it's the only one that works on every single platform we support, gives the best performance, allows FreeMix to use multichannel output devices and connect to other applications. About the need to "configure" it, on modern distributions it should start automatically when needed, with reasonable defaults. On Linux, the ALSA output plugin will be loaded automatically if JACK is not available. If you're interested in writing a plugin to directly support
DirectSound or CoreAudio, feel free to do so and send it to us - if it works, it will probably be included in the next release.
3) Random questions
3.1) I just want to flame the author. Where can I email it?
See the Authors page. The useful ideas might be implemented in a future release (remember that as FreeMix is Free Software, you can modify the code yourself (or pay someone to do it for you) if you need to). If you really need to flame, don't forget that the most artistic/entertaining flames might be added to the author's collection of quotes, (sometimes) available at http://athproject.dyndns.org.
3.2) What is The Answer to Life, the Universe and Everything?
42.
