Audio Software
Introduction
This software provides audio recording/playback using
GNU/
Linux's
OSS interface, basic audio utility
functions, and audio processing/analysis functions as command-line programs running in a
shell. Audio
processing/analysis functions are also provided as
GTK GUI-controlled programs and as
LADSPA
plugins.
Ossio
Ossio is a command-line program that connects to the computer stereo audio
ports using OSS and provides basic audio recording/playback, reading/writing
raw 16 bit binary files. The audio ports are opened in stereo and ossio
performs channel selections, mixing, mono/stereo conversions, and balanced
line noise cancelling for the Anarchian Audio Computer
Preamp.
Ossio uses command-line parameters and a config file. It can provide a platform for other applications such as the Anarchian Audio Plugin Modules, below.
Ossio and its platform apps can
pipe
audio using standard i/o in a
shell. See ossio.h and ossio -doc for details.
Utilities
Command-line utilities for processing raw binary audio data include:
siggen (a signal generator),
gplot (a gnuplot script),
rawmix (a one/two channel mixer),
zipper (a two channel interleaver/de-interleaver),
resample,
reverse,
crop,
fade, and
scale utilities, and
btoa,
atob (binary/ascii
converters). See their source files for details.
These are generally useable with standard i/o
pipes.
Anarchian Audio Plugin Modules:
Plugin modules listed below perform specific audio functions. In general, there are four versions of each module:
- OSS command-line version
- OSS/GTK GUI-controlled version
- LADSPA param-controlled plugin
- GTK GUI-controlled LADSPA plugin
Run the OSS versions with the -pdoc switch for full documentation. Also see
aadoc &
aahelp.
Roomsim
This is a room reverberation simulator allowing selection of room
dimensions, surface materials, source and listener positions.
Roomsim is single channel given the heavier cpu load.
Use -pdoc on the command-line, and also see roomsim.c for more details.
Reverb
This is a stereo reverb simulator. It has a
delay line with taps that approximate room reflections, and includes
control over initial delay, spacing of reflection delays, tail length,
reflection randomizer, lowpass filter, regeneration, stereo separation,
and dry mix. Initial delay can be modulated by the channel 2
audio input for chorus/flanger effects.
Use -pdoc on the command-line for more info.
IIRFilter
This IIR filter is configured as a parametric eq allowing multiple
bands configured in series, providing standard
filter types and parametric controls per band. Filter frequency
can be modulated by one of the audio inputs for wahwah type effects.
Use -pdoc on the command-line for more info.
Modulator
This modulator has stereo ins/outs, an envelope follower, a signal
generator, and a patch bay to provide various modulation,
panning and compression/expansion effects. The envelope follower
and signal generator may be sent to the audio output to drive
parameters of other apps, providing for classic effects such as flanging
and chorus, tube amp simulation, and a lot more. Use -pdoc on the command-line for more info.
Fuzzbox
Fuzzbox provides audio distortion with logarithmic amplitude limiting.
Use -pdoc on the command-line for more info.
Pitcher
This is a pitch shifter allowing for mixing multiple pitches, stereo mixing,
and modulation signal control of the shift and of output levels.
Use -pdoc on the command-line for more info.
Merge
This special module allows for merging the functions of the Anarchian Audio plugin modules
into one to minimize audio latency, simplify management, and increase sound
quality and routing options for combined effects. These combinations are
chained in series inside merge as they would be using standard i/o pipes in a shell
or as plugins in a LADSPA host. The modules, their presets, and anarch
parameters that control module parameters are defined in a config file called
an Anarch Definition File. Use -pdoc on the command-line for more info.
Switcher
This special module allows for playing audio through one in a specified set of Anarchian
Audio plugin modules, and easily toggling, bypassing, and switching among them with
crossfade transitions using computer keyboard hotkeys, GUI buttons, remote control,
or a file with a set of time offsets. Use -pdoc on the command-line for more info.
Balline
This special module performs subtraction of one stereo
channel from the other, halving the result, for use with the
Anarchian Audio Computer Audio
Preamp,
configured as a balanced line driver. Computer audio ports
tend to be noisy and this feature has been shown to cut noise by at
least 6dB in a powerbook5,3 line level input.
Oscope
Oscope is a special module built on
X11 providing simple oscilloscope and spectrum
analysis. Press h for a help screen. There's also a THD+N
analysis module that connects to the computer audio in/out ports for analyzing
those ports and things attached to them.
Config Files
Ossio accepts control parameters from a config file and from command-line
switches. The Anarchian Audio Plugin modules also use config files for their
unique parameters. A module's default config file, and its ossio
config and default record/play files, are written to its hidden
directory in the user's home directory. Additional config files are saved
in the presets directory below that. One of these presets may be selected on the command-line
with the -f switch to override the default.
GUIs for Plugins
The LADSPA plugin version of the modules uses a GTK GUI,
with the GUI program sending parameters to the plugin via Linux shared
memory FIFO files. The GUI program includes
fifosrv in its name
and reads the host session files for keeping track of
multiple instances. One GUI program instance handles all
instances of each plugin module, The plugin names provided to the host
include
Gui to distinguish them from the non-GUI plugin versions
in the host display. Reading the host file is an imperfect workaround
for LADSPA's limitations, requiring regular saving of the host session
file to keep the GTK GUIs in synch with the plugins.
Anarchian Audio Plugin Scripts (Anarchs)
The OSSIO and OSS GTK versions of the plugin modules may form series combinations using standard i/o pipes in a shell. These combinations are called
Anarchs and are listed in the aa text file in the Anarchian Audio Plugins bin directory. The Anarch names (and other things) are displayed in the shell by invoking
aalist. Anarchs may be saved as
command-line scripts and managed with the following commands issued with an Anarch name:
- aao to execute the OSS command-line version of an Anarch
- aag to execute the OSS/GTK GUI-controlled version
- aaf to execute the LADSP/GTK GUI-controlled version
- aat to generate a text listing of the OSS command-line version
- aam to generate an Anarch Definition File for the Merge module (see below).
Demo Recording
This audio file demonstrates the Anarchian Audio Plugin modules
in the Ogg-Vorbis format. If your software doesn't support this format, try
Mplayer.
The sequence of guitar riffs in the demo match the following list of Anarchs provided in the package distribution:
alien bend blaz chor cirpan2 comp del delwah efvr exp flan
pane2 panl2 pitch-2001 pitchrev res rev rmod1 rmod2 trem tubeexp
tubefrog tubemix tuberev wahchor wahdel wahpan2 wahtube wind
App note: Feedback in Merge
(This is the first of a number of application notes published here for using the audio sotware.)
Merge allows ganging modules with various advantages over standard i/o pipes and LADSPA plugin
chains. The anarchian audio plugins are two-channel so that one channel may be used as a
forward feed when needed in these chains of modules. But a new merge feature allows for
additional feeds, including feedback. To demonstrate feedback, we will create an anarch:
cat >~/.anarchian-audio-plugins/merge/anarchs/feedback
module rawmix 100 0 0 0 feed 0 1 70 0 delay 3
And run:
merge_ossio -n 1 -f feedback
Listen to the output and then change the feed param f->l from '80' to '0' and
then to '-80'. The value is in percent and a positive feedback gain should
sound brighter than no feedback, and negative feedback should sound metallic.
Note that high feedback gain causes oscillation.
Copyright (c)
2005-2020
Robert Drury
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts.
See "GNU
Free Documentation License".
Disclaimer: This information may contain inaccuracies and is
provided
without warranty. Safety first when working with high
temperatures,
pressures, potentials, speeds, energies, various
tools and materials.
that