OM-SoX: Digital Audio Signal Processing For OpenMusic

A Brief Introduction

In November 2013 I wrote a review of Marlon Schumacher's OM-SoX library for OpenMusic. Unfortunately, the review was based on my erroneous use of the master branch of the code's git sources. That branch is not representative of the complete OM-SoX, and that review must be considered as an incomplete and inaccurate essay. This review presents OM-SoX as it should have been presented, but I want to make it clear that Linux Weekly News published the original text essentially as I submitted it. The faults in the earlier review remain solely my responsibility. Now, on to the new and improved version.

Why SoX ?

OpenMusic is essentially an environment for music composition, it is not a synthesis environment. In its basic configuration it needs only enough audio/MIDI processing power as is required for the audition of the sound samples and MIDI files created by OpenMusic patches. In the Linux version that power is provided by a JACK-based audio/MIDI player.

Just as the OM2Csound and OMChroma libraries extend Csound into OpenMusic, binding the two environments into a powerful composition/synthesis system, SoX adds the dimension of audio signal processing. Given the view of sound as compositional material itself the addition merely expands OpenMusic's essential definitions. Other libraries are available that add synthesis capabilities to OpenMusic, but OM-SoX provides a large collection of easily accessible and ready-to-run processors in a single package.

Getting The Package

Open a terminal window, switch to your source directory (or anywhere you have write privileges), and run the following command :

	git clone -b release-1.0 git:// omsox-code

This clone will download the latest development branch. When the download is finished copy the contents of the omsox-code directory into a directory named OM-SoX, preferably in a location known to OpenMusic, e.g. the Extra Libraries directory. For example, mine is located at ~/omlibs/OM-SoX.

Loading The Library

Start OpenMusic and open the Package Library window (Figure 1). Click on the libraries 'suitcase' icon to view its tree node icons, among which you should find one named om-sox. You can load the library by double-clicking the red square in the icon's upper left corner or through the File/Load Library dialog. The red square will turn green and a splash panel will wait for your acknowledgement (Figure 2), after which OM-SoX is ready for use.

Figure 1. The OpenMusic Library window.

Figure 2. The OM-SoX splash screen.

What's Inside

Assuming a successful installation, let's look at what OM-SoX brings to the OpenMusic armory. SoX has been called "the Swiss Army knife of audio processing", and its capabilities are indeed impressive. SoX provides audio playback and recording, special effects processing, dynamics processing, mixing functions, file manipulation, sample rate conversion, LADSPA plugin hosting, and more. You can view the OM-SoX library's contents by double-clicking its suitcase in the lower half of the icon. Two panels will appear beside the Library tree, one listing the functions in OM-SoX (more than sixty), the other listing its classes. That helpful display should look like the screenshot in Figure 3. If it does not, then you've probably installed an incomplete package.

Figure 3. Classes and functions of OM-SoX.

Running The Examples

Now let's load and run some example patches. Select the Libraries item in the Help/Import Tutorials Patches menu on your workspace, load the OM-SoX examples, and the workspace will have a new folder named om-sox-tutorial-patches (Figure 4). Open it and double-click on the patch named 01-title. Figure 5 shows the result, along with the text file that appears when the readme patch is opened. The readme text provides configuration details and a summary of the tutorial examples.

Figure 4. The OM-SoX tutorials.

Figure 5. The 01-Title patch.

The configuration steps should be followed closely. The OpenMusic Preferences dialog will include new features after loading OM-SoX, some of which will require your attention. For example, the Externals tab will include an entry for the sox-player and its options, a set of user-definable conditions for optimizing performance.

The title and readme patches include objects that must be evaluated for their contents. The om-sox-page object opens the OM-SoX SourceForge site on your default browser, om-sox-mailing-list does the same for the list sign-up page, and sox-html-documentation opens the SoX on-line manual. The new user should evaluate all these objects and become familiar with their contents. The SoX manual is especially recommended if the user has no prior knowledge of SoX's capabilities.

When you're ready to move on open the folder named 1-basics, then open the 1-sox-player patch (Figure 6). Test your playback with the SOUND class objects and the maquette. Check the information regarding OpenMusic versions, and you're set to move to the next example. Things get more interesting when you've gone through the basics folders (see Figure 7), and I recommend stepping through the entire series of OM-SoX tutorial patches. The presentation is excellent and the information content is high-quality throughout.

Figure 6. The sox-player patch.

Figure 7. SoX and LADSPA in OpenMusic.


Props to Anders Vinjar for bringing OpenMusic to Linux, to Chris Bagwell for the great SoX, and to Marlon Schumacher for bringing the power of SoX into OpenMusic. Consider OM-SoX a highly recommended library.