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
menu. Most of them need an active selection to operate on, and can be further controlled using envelopes.This module amplifies or attenuates the signal. The primary envelope determines by how much the signal is attenuated, from zero to twice as loud.
This module zeroes those parts of the signal that are below a certain treshold for a given duration. The
option toggles whether the relevant section in the signal should be zeroed or deleted. The option toggles whether each track should be processed separately, or whether the intersection from all selected tracks should be used. Finally the 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 GLADSPA plugins module.
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.
This module implements a simple digital delay. The
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 parameter controls the number of delays. The parameters controls the rate of decay. This parameter is controlled by the auxiliary envelope.This module implements support for the LADSPA plugin architecture.
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
and 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.
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.
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 maximizes the peak amplitude of the selected region. If the selection spans multiple tracks, then the global peak for the selected tracks is maximized.
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.
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.
From version 0.7 onwards, GNUsound uses a modular playback/record architecture. This makes it easier to support different audio APIs.
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.
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.
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.
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.
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.
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.
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/
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/
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.
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.