GL Mixer by Nick Lamb

1. Introduction

GL Mixer offers a 3D visualisation of stereo mixing. The spatial interface
isn't very space compact, but it looks cool and can sometimes be a more
intuitive way to mix audio. Because GL Mixer is a JACK client it allows
you to do all your mixing in one place, prior to final processor effects
and output, rather than using separate pan & level controls in other
applications.

Future versions of GL Mixer will probably include things like MIDI
integration and automation, which should make it more generally useful.
More eye candy will be introduced at the discretion of the author.

People who saw the Be Operating System demonstrated in the 1990s may find
GL Mixer very familiar. Of course GL Mixer shares no code with that demo
and hopefully as a JACK app it's rather more useful.


2. Controls

In GL Mixer, audio sources (sounds coming from other JACK applications or
from the hardware capture devices) are represented as coloured translucent
objects standing on a grid. The location of each object on the grid
determines the pan (left-right position) and volume level of that source
in GL Mixer's stereo output mix.

2.1  Moving the grid

Changing your view of the grid doesn't alter the sound at all, but it
can be helpful to see things from another perspective. You can click
and drag with the mouse to move the grid around in 3D space, and you
can use the scroll wheel (if your mouse has one) to zoom in and out.

2.2  Selecting a source

You can select a source by clicking on it with the mouse, by pressing
the appropriate number key on the keyboard (ie '2' for source two) or
by using the TAB key on the keyboard to flip through sources in order.
You can step backwards by holding SHIFT while pressing TAB.
The source which is currently selected has its name highlighted (if
names are being displayed).

2.3  Moving a source

Remember that a source's position on the grid directly controls the
sound. You can click and drag a source around on the grid, and hear
the effect immediately, and you can fine-tune its position by using
the cursor keys on the keyboard. Cursor up/down increases and decreases
volume level and left/right control panning. Holding down the SHIFT
key moves things around a little faster.

2.4  Menus

You can change the name and colour of each GL Mixer source from the
View->Inputs menu.

You can make the GL Mixer view rotate continuously as an eye-catching
display by selecting View->Spin or pressing the 'S' key.

You can quit GL Mixer by pressing the ESC key at any time, by simply closing
the GL Mixer window, or by choosing File->Quit.


3. Requirements

GL Mixer uses the JACK Audio Connection Kit. Some Linux distributions
include JACK, or offer it as an optional extra that can be trivially
installed later, otherwise you will need to download, build and install
the JACK source code.

GL Mixer uses the GTK+ 2.x widget toolkit, and GtkGLext for 3D graphics.
Modern Linux distributions include the former (but you may have to install
an extra "developer" package to build GL Mixer from source) and the latter
can be obtained from the Sourceforge site http://gtkglext.sourceforge.net/
though it might be included in your distribution by the time you read this.

Versions of GtkGLext prior to 1.0.6 have a bug which may cause the GL Mixer
to segfault when you're closing the 3D window. Upgrade if that bothers you.

At runtime GL Mixer needs to be able to connect to an existing JACK session.
It always has exactly two outputs, and uses the client name 'glmix'. You
will also need OpenGL support on the machine displaying the 3D graphics,
however see below.

GLX

It's commonly expected that hardware OpenGL acceleration by definition must
mean you sacrifice the remote display capability of X, but this is not so.
Modest applications like GL Mixer don't need the full potential of a fast
local graphics bus, and can be used on a remote machine via an ordinary
household network. Latency in the audio backend is unaffected.


4. The Future

There are lots of potential improvements, see TODO for a list already known
to the author.  The author is rather busy, so suggestions which include a
working patch are more likely to be incorporated into future versions.


5. Author


GL Mixer was created by Nick Lamb <njl+glmix@filter.tlrmx.org>
starting in the summer of 2003.
