Developing and Using Snd: Editing Sound Under Linux, Part Two
Pages: 1, 2, 3, 4, 5

Documentation

Bill Schottstaedt has provided extensive and well-written documentation for Snd in the snd.html file (or snd1.html if your browser supports frames). The HTML documentation is quite complete and should be considered the definitive reference. I advise all users to read at least the "Getting Started" section. As mentioned earlier there is also a man page, but it is very brief, containing only a description of the program and a list of some of the command-line flags. I'll cover some of the material found in the HTML documentation, but in a more tutorial fashion.

The heart of the matter

In his Computer Music Tutorial, Curtis Roads lists these basic functions of sound file editors:

Cut/copy/paste

Splice/insert/replace

Move samples

Mix tracks

Synchronize files/tracks

Compress/expand time scale

Pitch shifting

Equalization/filtering

Sample rate conversion

Transfer sounds to external sampler

Displays in different time formats

Display multiple views of file

Display multiple files simultaneously

Independent X/Y axis control

Find maximum sample value

Display amplitude envelope in various representations (db, peak, RMS)

Edit pitch and amplitude envelopes

Varispeed playback

Print out display of samples

Spectrum analysis

Segment and label musical notes in sample stream

Snd meets nearly all the baseline criteria in that list. Direct I/O with external samplers is perhaps better considered as a function of hardware support, although Snd does support the MIDI Sample File Dump standard as well as a variety of sampler-specific file formats. The identification of a sound sample's musical note values is still technically very problematic and is not commonly found in the popular sound file editors for Windows, Mac OS, or Linux. All the other operations are present and accounted for in Snd.

Beyond the baseline criteria, I've culled a set of common operations from the results of an informal poll of Cool Edit users on the mail lists for Csound, LAD (Linux Audio Developers), and Common Music. Those users most frequently employed the following functions and operations in Cool Edit:

Recording and editing large files

Trimming files

Accurate edits at the single-sample level

Noise reduction and click removal

Varispeed play

Amplitude editing (gain, normalization, fade in/out, crossfade)

Zoom view and play zoomed view

Unlimited undo/redo

Spectral view

FFT filtering

Adding reverb and other effects

Play 32-bit files

File format conversion

DirectX plugins

Compression/limiting dynamic range

With only a few exceptions Snd again meets the criteria. Noise reduction and compression/limiting are still in development, and of course DirectX plug-in support is absent. However, Snd does support the LADSPA plug-ins, and there are a few other ways of plugging into Snd that we'll look at later.

However, it is one thing to say that Snd has this or that specific function available, and it is another thing to access the function or operation. In classic Snd, many of the baseline functions and Cool Edit-style edits are invoked from the Listener via the Guile/Scheme language. However, the most recent releases of Snd have added a number of widgets and menu items to graphically access its editing tools and signal processors. Power users still have the Listener, but new users can now more easily make their way into Snd's considerable toolkit.

Before we start using that toolkit, let's see how to determine an editing area in Snd.

Basic editing areas of Snd

Edit areas in Snd include the whole file or files, the area between marks, and the selection (highlighted) area. The assumed edit area is the whole file. At this time, most of the effects are applied only to whole files, but work is underway to add options to restrict processing to the highlighted selection or to a marked area.

Marked areas

Marks can be placed into a file in three different forms. Type Ctrl-M or select "Add mark" from the graph display pop-up menu to add a normal mark into your file. Named marks are created with the Ctrl-X-M keyboard combination, and synch marks are added with the Ctrl-M command. In each case, the cursor position defines the mark insert point in the graph display. Delete marks via the channel graph pop-up: Set the cursor near the mark you want to delete, select "Delete mark" from the pop-up, and it's gone.

Any mark can be moved by left-clicking and holding on the handle at the top of the mark and carrying it with the mouse to a new location. You can toggle playback from any mark position by clicking on the triangular tab at the bottom of the mark, or you can drag the mark tab to "scrub" through the sound data. Marks can be used to move sections of a file forward or backward in time: Just hold down the Control key and left-click on the mark handle, then drag the mark forward to replace the existing data (if any) with the dragged material, or drag the mark backward to shift the sound file back and to add silence for the space of the drag. Marks can be used to define sample-accurate boundaries for processing a selection area: Place your marks at single-sample resolution, then select "Define selection by marks" from the Marks menu, and voilà, the marked area will become a sample-accurate highlighted selection area.

Named marks are simply normal marks with names added for display and identification. If Snd's marks.scm package is loaded, the report-mark-names function will display mark names in the minibuffer during playback.

Synch marks are marks whose actions are synchronized. Whatever is done with one mark will be done for all others synchronized with it: move one mark and the others will follow, even across different channels and files. Click on any synchronization mark's tab and multichannel playback will begin from the position of each synch mark.

You can synch previously-placed normal and named marks with the Start/Stop mark synch items in the Marks menu provided by the customization package. That menu includes many other mark-related editing functions, such as crop and trim operations, loop-play between marks, and a "fit selection to marks" function that time-scales a selected (highlighted) area and fits it between two marks, mixing it with any pre-existing material in the same marked area.