oolaboola -- an opensource dj tool
version 0.3.1
oolaboola is an opensource system for mixing sound files in real-time, while varying their rate of play amplitude level etc. In other words, it's a digital DJ rig.
It's written in C++ and Python using POSIX system calls (including pthreads and real-time features) the OSS (Open Sound System) interface and the GTK graphical toolkit. It's being developed by Eric S. Tiedemann (est@hyperreal.org).
oolaboola is distributed under the terms of the GNU Public License (parts are under the GNU Library Public License as well). See the files COPYING and COPYING.LIB for license and lack of warranty details.
This is a bugfix release while development on 0.4.0 continues at a furious and sloppy pace. :) Feedback is greatly desired (est@hyperreal.org).
LATEST VERSION
You can retrieve the latest versions of oolaboola at http://www.hyperreal.org/~est/oolaboola/download
NEW FEATURES WITH VERSION 0.3.1!
- A memory leak during file output and a communications gaffe when closing output files have been fixed.
- Numerous build and linkage problems have been fixed.
- A couple of stylistic infelicities have been repaired.
NEW FEATURES WITH VERSION 0.3.0!
- pretty level/hold lights added
- 3-band EQ..you can turn it off with --no-eq if you don't like it or it takes too much cpu (see EQ section below for more)
- optional quadratic interpolation (--quadratic) (modest performance hit, does it improve quality?)
- Interface improvments..more intuitive widgets.
- substantial performance improvements (critical gui elements moved to C)
- Your actions are recorded in a time-stamped log now.
- options!
- environment variables override rc file and options override environment
- --profile option (for developers)
- automake/autoconf-based build (i.e., gnu style `configure' script)
- Numerous bug fixes
OLDER FEATURES
- Cross-fader with center button
- MIDI input!
- Communications from the gui to the mixer daemon are logged.
- Reads .wav files of varying formats.
- Fine `pitch' (i.e., rate of play) control..from 0 to 2 X in increments of .001.
- Can output to an additional `cue' channel if available.
- Setting of marks which you can then goto.
- Creation of loops.
- Output to a raw digital file.
- See the TODO file for ideas about the future of oolaboola.
INSTALLATION
See INSTALL for building and installation instructions.
USAGE
See the documentation in the doc subdirectory or the man page.
EQ
My choices for eq parameters could definitely use improvement. You can play with the low-range cut-off frequency, the high-range cut-off frequency, the mid-range center frequency and the mid-range band-width with the following options respectively:
--mixd --lf=<hz>
--mixd --hf=<hz>
--mixd --mf=<hz>
--mixd --mbw=<hz>
In each case, <hz> is a frequency in hertz. The --mixd option is a special option that causes the GUI to pass the following option to the actual mixer.
R2WAV
The included `r2wav' script can translate the raw digital output of oolaboola into a .wav file. For example:
./r2wav foo
would create `foo.wav'. r2wav requires that sox be installed and in your path.
DESIGN POINTS
Why are there two players in one window rather than having players in separate windows? This is to make some keyboard acceleration paradigms we're working on intuitive (they will apply to a `current pair' of players).
Another point of interest: the gui communicates with mixd via a pair of pipes. The messages it uses have the lexical structure of Scheme symbolic expressions. This is the nascent Symbolic Control Protocol (SCP) here at the Eric Conspiracy Secret Laboratories.
HELPING
Please let Eric know of your experiences with and wishes for oolaboola at est@hyperreal.org. Also, please contact him if you'd like to help with development. There's a list of some things the program might want in the TODO file. Some of these may have already been implemented in experimental versions; so please make contact if you want to work on oolaboola.
