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: 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:

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