Soundmix Framework

Bruce Sharpe and Malcolm Sharpe
(c) 2005 Singular Software

Overview

The audio engineering tasks required to create a podcast falls into two categories. The first ("the fun part") consists of things like tweaking levels, reducing noise, tightening the audio, eliminating indiscreet bodily noises, etc. The other ("the not so fun part") consists of more repetitive tasks like putting the sound clips together into a final mixdown, converting to MP3 and AAC, adding tags, uploading. But the very fact that these tasks are repetitive means they can be automated.

The sound mixing framework was developed to automate one of those tasks: the assembly of sound clips into a complete show. As long as you don't mind running a program from a command line, you can turn what was formerly a fairly tedious task using something like n-Track Studio into a fully automated process that can be accomplished in seconds and which gives consistently high quality.

The framework is based on Nyquist, a freely available, cross-platform sound synthesis and composition language written by Roger Dannenberg at Carnegie Mellon University. (Nyquist is also used as the programming language to create plug-in effects for Audacity, a free audio editor.) The framework is a set of Nyquist functions that makes it easy to write standalone programs for assembling sound clips.

The framework was designed to support the specific needs of podcast productions and derives its simplicity from focusing on the needs of that usage.

This distribution comprises the framework itself and a sample, usable script built on it to assemble podcasts for IT Conversations.

How to Install

  1. Install Nyquist.
  2. For beginners, we recommend that you unzip the framework installation files (in particular, the *.lsp files) into the same directory as your audio clips. When you learn more about how to customize the scripts, you can decide if you want to move them to a different location.

How to Use

The following walks you through the using the supplied script to create an IT Conversations podcast. It is written for an ITC audio engineer and will probably only make good sense if you have created an ITC show manually before. We assume that the podcast follows the standard format, with separate clips for:

The audio files made available for a podcast typically need to get chopped up a bit to match the above. Any silence at the beginning or end of each clip should be trimmed, because the assembly script takes care of adding appropriate gaps between the different segments.

Nyquist is cross-platform and the framework should work on Windows, Macs and Linux (for example) but it has only been tested on Windows, so there will be various Windows-centric assumptions in the following description (and maybe in the code). All feedback on how to make it work across platforms is welcome.

The Out of the Box Version

Put the installation files (*.lsp) and the audio files (*.wav) into the same directory. Use the following naming convention:

Audio File Name
ID id.wav
Introduction intro.wav
Music music.wav
Body body.wav
Outro (including sponsor message, but no credits) outro.wav
Series producer credit sp.wav
Editor credit ed.wav
Audio engineer credit ae.wav
Doug's farewell message ("This is Doug Kaye...") dk.wav

Start the Nyquist environment by opening a command window and typing the command line (this assumes you installed Nyquist into the default directory):

"C:\Program Files\ny.exe" assemble.lsp

There will be lot of informational data that flows by (sorry, haven't figured out how to turn that off). After a minute or so, the assembled audio will be stored in mixdown.wav, and you will be returned to the Nyquist prompt ('>'). It might exit Nyquist automatically, but if not, press Enter and that will cause it to exit.

If you have an error and end up at the Nyquist prompt, type in the command

(exit)

(including the parentheses) and hit return. You might have to hit return twice to get it to actually exit. (Don't know why.)

Light Customization

To change options like the names and locations of the audio clips, examine the file assemble.lsp, read the comments there, and modify the appropriate fields. Note that backslashes within strings need to be escaped. For example, "C:\MyAudio\id.wav" must be written as "C:\\MyAudio\\id.wav".

More Sophisticated Customization

To have even more control over the process, edit the defcompound structures in assemble.lsp. You might want to do this because, for example, you don't have a series producer for your podcast. In this case you would delete the lines

(space outro-sp-space)
(play sp)

Reference

A couple of notes may help:

  1. Each sound clip remembers its last-played time. To start a clip from the beginning again, use the reset function.
  2. play-2 is used to play two clips simultaneously.
  3. play and play-2, when called without a :for parameter, play until any of the clips ends.

See Soundmix Framework Reference for details.

Known Issues