Modules

This section briefly describes the various modules that come with GNUsound. Some of these modules (such as some of the file and audio driver modules) are "faceless", in that they extend GNUsound's functionality without providing a means to interact with them.

Those modules that can be interacted with are available via the Tools menu. Most of them need an active selection to operate on, and can be further controlled using envelopes.

Amplify

This module amplifies or attenuates the signal. The primary envelope determines by how much the signal is attenuated, from zero to twice as loud.

Amplitude Treshold

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.

Auto Zero

This module shrinks the selection to the nearest zero points. This is mostly useful to prevent clicks in a looped sample.

Bandpass

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 GLADSPA plugins module.

Declip

This module removes some digital clipping artifacts from material that was recorded too loud. It is very naive but still I find it works rather well.

Delay

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 auxiliary envelope.

Fade In

This module fades in the signal. The primary envelope controls the attenuation factor.

Fade Out

This module fades out the signal. The primary envelope controls the attenuation factor.

GLADSPA Plugins

This module implements support for the LADSPA plugin architecture.

Note

LADSPA stands for Linux Audio Developers Simple Plugin Architecture. This name is inaccurate, since neither is the functionality of LADSPA exclusively tied to the Linux kernel, nor are the developers of LADSPA related to Linux kernel development. The name LADSPA therefore furthers the confusion between the Linux kernel and the GNU/Linux system. As part of the GNU Project's effort to clear up this confusion, we refer to it as GLADSPA instead. For more information on why the name Linux does not fairly describe the GNU/Linux system, see http://www.gnu.org/gnu/gnu-linux-faq.html

You must install some GLADSPA plugins to use this module, these can be obtained from http://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 GLADSPA 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.01 seconds.

Lowpass

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 GLADSPA plugins module.

Mix

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.

Normalize

This module maximizes the peak amplitude of the selected region. If the selection spans multiple tracks, then the global peak for the selected tracks is maximized.

Resample

This module changes the sampling rate of the selected audio. Depending on whether you have libsamplerate installed it offers one or more methods of doing so, with varying quality/speed tradeoffs. The primary envelope controls the rate.

Reverse

This module reverses the selected data.

Tone generator

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.

Playback and recording support

From version 0.7 onwards, GNUsound uses a modular playback/record architecture. This makes it easier to support different audio APIs.

player_oss: OSS support

The Open Sound System is an obsolescent audio API for Unix. It comes in a Free variant, which is a part of the Linux kernel, and a commercial variant marketed by 4Front Technologies. The commercial variant is better in some respects than the Free version and supports some very high quality audio cards. OSS/Free has been deprecated since Linux kernel version 2.6 in favor of ALSA (Advanced Linux Sound Architecture).

The OSS API is rather sparse. Trying to do anything beyond simple playback and record with OSS/Free is basically impossible due to the varying quality of drivers and hardware and the poorly specced API. On the other hand, OSS is widely available and easy to use for both developers and users.

The OSS driver has undergone a lot of testing. So this is a good choice if you don't need any of the advanced facilities offered by ALSA.

player_alsa: ALSA support

The Advanced Linux Sound Architecture provides free (GPL'd) drivers for a wide variety of sound cards, low end as well as high end. In addition it provides a very flexible API which allows the creation of virtual devices and filter chains and much more. ALSA can also detect recording overruns and playback underruns when they occur.

ALSA provides a powerful architecture, but the documentation is rather sparse, making it difficult to get the most out of the system. It takes effort to get acquainted with ALSA's advanced capabilities.

The ALSA driver was reasonably well tested, but it could probably be better. If you run into trouble, please report it.

ALSA is a part of the Linux kernel 2.6 and up, and is also available from: http://www.alsa-project.org.

player_jack: JACK support

The JACK Audio Connection Kit provides a virtual audio bus that JACK-aware applications can use to transport audio between eachother. It's reminiscent of software like ReWire on other platforms.

JACK has rather stringent timing requirements. In order to get satisfactory performance it may be necessary to upgrade your kernel or to apply patches to minimize latency.

The JACK driver was not very well tested at all. This, in combination with JACK's demanding requirements, means that it might work only if you carefully tune your setup, or that it works only intermittently, or that it doesn't work at all. Problem reports are welcomed but given low priority if they don't include at least a suggestion for a remedy.

JACK is available from: http://jackit.sourceforge.net.

File format support

From version 0.7 onwards, GNUsound uses a modular file load/save architecture. This makes it much easier to add support for new file formats.

Which file drivers are available depends on your system configuration at build time. If you want to take advantage of the improved file format support you will need to install the software mentioned below prior to building and installing GNUsound.

When loading a file, GNUsound tries to autodetect the file type by having each driver probe the file in turn, until one of the drivers recognizes it.

This is not a waterproof strategy: it's not always possible to determine the file type with 100% certainty. In particular the LAME and FFmpeg drivers can sometimes misidentify files. This can lead to garbage being read or even crashes.

To minimize the chances of this happening, the order in which the file is probed by the drivers is important. They need to be ordered in such a way that the driver with the highest probability of getting confused gets to probe last.

The default probe order was determined through some experimentation to give the best results, but if necessary it can be changed through the file.drivers.probe_order preference.

file_af: AudioFile support

The AudioFile module uses libaudiofile to load and save files. It is strongly recommended you use version 0.2.3 or higher of libaudiofile. Earlier versions exhibited some bugs which could lead to crashes. AudioFile is a part of GNOME. If you run into trouble compiling this module, make sure you have installed the audiofile-devel package.

AudioFile is available from: http://www.68k.org/~michael/audiofile/

See the AudioFile home page for a list of supported file formats.

file_ffmpeg: FFmpeg support

This module uses FFmpeg (specifically libavformat and libavcodec) to load files. FFmpeg is a system of audio/video recording/conversion/streaming tools. It includes libavcodec and libavformat which can read/write a huge number formats.

If you would like to be able to use GNUsound to extract the audio from video files such as .AVI or .MPG, then install FFmpeg. For GNUsound to be able to use FFmpeg it is necessary to do make installlib in the FFmpeg source tree.

FFmpeg is available from: http://ffmpeg.sourceforge.net/

For supported file formats see the FFmpeg documentation.

GNUsound only supports file loading through FFmpeg.

file_flac: FLAC support

This module provides support for loading and saving of FLAC format files through libFLAC. FLAC is a free lossless audio codec which can reduce the size of files by as much as 50% without loss of quality. A great format for archival and storage purposes.

FLAC is available from: http://flac.sourceforge.net/

file_lame: LAME MP3 support

This module provides support for loading and saving of MP3 format files through libmp3lame. LAME is a very high quality MP3 encoder released under the GNU GPL.

LAME is available from: http://mp3dev.org/

file_sndfile: libsndfile support

This module provides support for loading and saving of a variety of audio formats through libsndfile. libsndfile is somewhat similar to AudioFile but it supports more formats.

libsndfile is available from: http://www.mega-nerd.com/libsndfile

For supported file formats see the libsndfile documentation.

file_gmerlin_avdec: gmerlin support

This module provides support for loading a variety of audio formats through gmerlin. Most notably gmerlin can read AAC and Musepack formats.

gmerlin is available from: http://gmerlin.sourceforge.net

For supported file formats see the gmerlin documentation.