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.
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.
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.)
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".
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)
A couple of notes may help:
reset function.play-2 is used to play two clips simultaneously.play and play-2, when called without a :for parameter, play until any of the clips ends.See Soundmix Framework Reference for details.