gnusound - Multitrack sound editor
GNUsound is a multitrack sound editor.
Oi. GNUsound is a powerful sound editor for GNOME. GNUsound wants to be
reliable, fast, and uncomplicated and it’s using me as a tool to get it
there. GNUsound is always looking to expand it’s toolset, so if you
want to slave the night away for no pay under an unforgiving master,
drop me a note and I’ll hook you up.
I won’t claim that GNUsound will change the way you work because I am a
reactionary bastard who thinks most change is bunk. As far as I am
concerned software should bend over backwards to accomodate the way I
work, so in general, I don’t like software that promises to
revolutionize the way I work. Especially if that software then doesn’t
even compile or is so clumsy as to be practically useless.
With GNUsound I wanted to create a very practical program to address
some very immediate needs and wants. So rather than following a
strictly hierarchical software development approach where development
starts with a lot of plumbing and then proceeds upward until the
program is finished, GNUsound development has followed a more
vertically aligned, goal-oriented strategy. In this way I’ve tried to
avoid the danger -- especially present with volunteer-based projects
such as GNUsound -- that the project never leaves the plumbing stage or
that when it does, there is not enough energy left to tackle the upper
layers and to work on actual usability (let’s call it the Sourceforge
syndrome). I think that strategy has played out well.
GNUsound is not for everyone. It needs lots of memory to perform well.
In some cases, it may trade audio quality for speed (although it will
usually warn you when that is the case). And it’s not finished.
About this documentation
I don’t want to spend a lot of time writing documentation because I
have other things to do and nobody reads documentation anyways.
Besides, I am of the opinion that a program should not need a lot of
documentation. It should allow the user to explore and discover the
functionality without exploding whenever the user makes a mistake. So
there you go. But I’ll try and use this space to explain how things
work and why.
GNUsound can be installed with little pain on most GNOME 1 or GNOME 2
It is recommended/required that you install the following software
before compiling/installing GNUsound:
· Linux >= 2.4
· GNOME >= 1.4
· libglade >= 0.14
· libaudiofile >= 0.2.3
· libsamplerate >= 0.13
· OSS compatible sound driver
In addition, it is recommended that you use reasonably fast hardware
(say, a 500 MHz PIII) and install lots of RAM (really).
Installing from source
To install GNUsound from source try:
$ ./configure --enable-optimization
$ make install
Don’t forget that
$ ./configure --help
shows further configuration options. If you decide to uninstall
GNUsound, you can issue the command:
$ make uninstall
Considerable effort has been expended trying to make GNUsound compile
and install flawlessly on many different systems, but it is still
possible that something doesn’t work for you. In that case, please
Installing from binary packages
Several people provide binary packages of GNUsound for a number of
distributions. These are available from : the GNUsound
If installation has been successful, there should be a GNUsound icon in
your GNOME menus. Alternatively you can start GNUsound from the command
This latter method is actually recommended (at least for the time
being), because GNUsound spews copious output to the screen, including
some error messages that haven’t found a place in the GUI yet (such as
when GNUsound cannot open the audio device).
If you run into problems, e.g. GNUsound won’t start, or it crashes
immediately after startup, see the installation section and read the
$ ./configure --help
GNUsound uses libaudiofile, which is a part of GNOME, to provide
support for a number of popular audio file formats such as .AIFF and
You can create a selection on a track by dragging the mouse pointer
over the region that you wish to select, or by holding the SHIFT key
and giving one of the movement commands in the Select menu. You can
select multiple tracks by holding the CONTROL key while clicking on the
tracks that you want to select. If a track is already selected, then
this action deselects the given track. It is also possible to select
multiple tracks by issuing the Track Up and Track Down commands from
the Select menu.
Changes to the selection are undoable, thus, if you make a mistake
which causes you to lose an important selection, you can issue the Undo
command to get your selection back.
A handy trick to temporarily save a selection that you don’t want to
lose while you do some editing elsewhere is to turn the current
selection into a loop, then do your stuff, and then to select the loop
when you’re done. Alternatively, you can set cuepoints to demarcate the
selection that you want to save, then use Snap to Cuepoints and the
Move Left and Move Right commands to get your selection back.
Cuepoints are markers that you can attach to the soundfile. By double-
clicking on the little red triangle you can change the label for a
You can create cuepoints by pressing M or by selecting the
corresponding option from the Marker menu. If there is no selection,
this command creates a single marker at the cursor position. If there
is a selection, then this command creates 2 markers, at the left and
right positions of the selection.
GNUsound is either in selection editing mode or in envelope editing
mode. You can switch between these modes by toggling the Envelope Edit
setting under the Edit menu.
Once in envelope mode, you can click on a track to create envelope
handles. Clicking on the envelope handles themselves allows you to move
them around. GNUsound provides two different envelopes for controlling
two different parameters: the primary and the auxiliary envelope.
Holding CONTROL while clicking on a track allows you to edit the
Envelopes modify the behavior of the tools that you apply to the
selection. For example if you create a selection, then draw an envelope
across the selection that slopes downward from the center, and then
apply the Amplify tool (from the Tools menu), it will make the sound
softer. Thus, the envelope controls the gain parameter of the Amplify
The exact effect of an envelope depends on the selected tool; some
tools don’t have any parameters to change, and the envelopes will have
no effect. For other tools, the primary envelope usually controls the
first parameter, and the auxiliary envelope controls the second
parameter. For yet other tools, it may be possible to explicitly assign
a parameter to one of the two envelopes.
It is possible to temporarily disable envelopes by issuing the Show
Envelopes command. The envelopes will then become invisible and they
will no longer affect any tools that you use.
GNUsound can playback as many tracks as your hardware can handle. Every
track can be mixed onto as many output channels as desired, using the
mixer level controls (the rainbow colored things).
GNUsound does not perform any implicit transformations of the audio
file on playbackit just tries to open the audio device with the same
parameters as the audio file (number of bits, sample rate) and starts
playback. You should check GNUsound’s output for any warnings (e.g.
when the device could not be openend, or when the audio device can’t
support the requested sample rate -- these warnings do not appear in
the GUI yet).
GNUsound does not perform any checking on output clipping: it is your
responsibility to make sure you don’t mix two channels too loudly.
GNUsound can record as many tracks simultaneously as your hardware will
bear. You do this by selecting the tracks you wish to record on and
issuing the Record command.
There is no relation between which tracks are selected and which input
channels are actually recorded except for the number of channels: that
is, if you select tracks 1 and 3 and then start to record, track 1 will
receive the first input channel, and track 3 will receive the second
There is currently no way to explicitly control which input channels
GNUsound records from. GNUsound will always incrementally assign the
available input channels to the selected tracks. If there is one
selected track, GNUsound records from the first available input
channel, if there are two selected tracks, GNUsound records from the
first two input channels, etcetera.
You can issue the Save command at almost any time. Files are saved in
the background and it is possible to perform almost any operation
during a file save, including playback (although playback may stutter
depending on your system configuration). Files are always saved in the
.WAV format. Envelopes, cuepoints and other data are saved in a
filename.usx file, in a fairly self-explanatory text format.
GNUsound currently stores all its data, including clipboard and undo
buffers, in memory. Ultimately some logic will be implemented to
offload portions of that to disk, but for the time being you have to be
a little considerate to prevent GNUsound from swallowing all available
memory. One tool to help with that is under the Debug menu, where you
can find the option Destroy Undo. This destroys all undo’s, thus
releasing all memory in use by the undo buffers. Of course you should
only use this option when you don’t need those undo’s.
If GNUsound crashes it will attempt to save data in open and modified
buffers. It tries to save that data to the file filename.crash. No
guarantees though -- if GNUsound crashes, it’s because something is
seriously broken, and basically all bets are off.
This section briefly describes the various modules that come with
GNUsound. These modules are available via the Tools menu. They all need
an active selection to operate on.
This module amplifies or attenuates the signal. The primary envelope
determines by how much the signal is attenuates.
This module zeroes those parts of the signal that are below a certain
treshold for a given duration. The Delete option toggles whether the
relevant section in the signal should be zeroed or deleted. The Gang
tracks option toggles whether each track should be processed
separately, or whether the intersection from all selected tracks should
be used. Finally the Invert option inverts the meaning of the
operation, selecting noise rather than silence.
This module shrinks the selection to the nearest zero points. This is
mostly useful to prevent clicks in a looped sample.
This module implements a very simple bandpass filter. It was lifted
from the sox audio tool distribution mostly as a curiosity. Much better
and more versatile filters are available through the LADSPA plugins
This module removes some digital clipping artifacts from material that
was recorded too loud. It is very stupid and does not have any tricks
up its sleeve whatsoever (not even interpolation) but still I find it
works rather well.
This module implements a simple digital delay. The Duration parameter
controls the duration of each delay in the time units as given by the
time control bar. This parameter is controlled by the primary envelope.
The Times parameter controls the number of delays. The Decay parameters
controls the rate of decay. This parameter is controlled by the
This module fades in the signal. The primary envelope controls the
This module fades out the signal. The primary envelope controls the
This module implements support for the Linux Audio Developers Simple
Plugin Architecture. You must install some LADSPA plugins to use this
module, these can be obtained from :
http://www.ladspa.orghttp://www.ladspa.org. Before starting GNUsound
make sure the LADSPA_PATH environment variable points to the location
where your plugins are installed. If the LADSPA_PATH is not defined
then GNUsound will search /usr/local/lib/ladspa for plugins.
The interface for this module consists of a window that is split in two
halves: the left half contains the available plugins, and the right
half contains the parameters for the selected plugin.
When the list of plugins is active, you can press a key to jump to the
first plugin whose name starts with that letter.
The right half of the window has sliders to set the parameters for the
plugin. You can use the Env1 and Env2 buttons to assign a parameter to
the corresponding envelope. The envelope modifies the parameter value
in the following way: if the envelope value is 0, then the parameter
value is the parameter value set by the user. If the envelope value is
between 0 and 1, then the parameter value is between the user selected
parameter value and the maximum parameter value. Finally if the
envelope value is between 0 and -1, then the parameter value is between
the user selected parameter value and the minimum parameter value.
An envelope assigned to a LADSPA parameter does not change that
parameter every sample; rather the signal is processed in blocks and
the envelope value applies to an entire block. The size of these blocks
can be changed in the configuration file (the ladspa_segment_time
parameter). The default value for this parameter is 0.1 seconds.
This module implements a very simple lowpass filter. It was lifted from
the web and is included mostly as a curiosity. Much better and more
versatile filters are available through the LADSPA plugins module.
This module mixes the signal from the second selected track into the
first. The primary envelopes on the selected tracks specify the
contribution of each track to the final signal.
This module determines the peak amplitude of the selected track(s) and
proceeds to amplify the tracks so that the signal amplitude is maximal.
If you select a multiple tracks, then the global peak for the selected
tracks is used as a reference point.
This module changes the sampling rate of the selected audio. Depending
on whether you have : libsampleratehttp://www.mega-nerd.com/SRC/
installed it offers one or more methods of doing so, with varying
quality/speed tradeoffs. The primary envelope controls the rate.
This module reverses the selected data.
This module implements a simple tone generator which can also be used
to generate silence. The primary envelope controls the amplitude while
the auxiliary envelope controls the frequency.
GNUsound stores its configuration information in a text file in the
location ~/.gnome/gnusound. Although some of the most important
properties that are stored in this file can be edited from within
GNUsound itself, this file also contains other options that might be of
interest. For example, it contains the colors that GNUsound uses to
draw various parts of the interface. You can change these here if your
aesthetic sensibilities differ from those of the author. Some of the
more obscure options there may be documented in the pref.c file.
It should be understood that editing the configuration file in this
fashion may yield unexpected results. Also there is always a chance
that the format of the file will change in the future, as well as the
meaning of the properties and their values.
.USX document settings file
GNUsound saves all it’s files as standard .WAV files. However not all
of GNUsound’s document settings can be preserved in the .WAV file
format. Rather than inventing yet another sound file format, GNUsound
saves the extra data alongside the sound file in a text file with the
extension .USX. This file keeps track of the selection settings,
markers, envelopes and mixer settings. This file is fairly self-
explanatory and it doesn’t hurt to edit it by hand.
Please address questions, bug reports, and suggestions to the GNUsound
mailing list: <firstname.lastname@example.org>
For inquiries related to donations or other forms of sponsoring please