Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24. Editing Sound Files

All kinds of tools and applications exist to edit sound files. This chapter shows some of those tools, giving methods for for cutting and pasting sound files, applying effects and filters, and converting sound files between formats.

24.1 Working with Selections from Sound Files  Working with selections from sound files.
24.2 Sound Effects  Applying some command-line sound effects.
24.3 Converting Sound Files  Converting sound files.
24.4 Other Tools for Sound Editing  Different audio editing environments and tools.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.1 Working with Selections from Sound Files

@sf{Debian}: `snd'
@sf{WWW}: http://ccrma-www.stanford.edu/CCRMA/Software/snd/

Snd is a sound-file editing environment for X, and aims to be for sound what Emacs is to text. (And it uses Emacs-style key bindings.)

You'll find a complete manual for it in the `/usr/doc/snd' directory; this section explains how to use Snd to work with selections from sound files.

To open a sound file in Snd, give the name of the file to be opened as an argument to snd.

  • To open the sound file `mixdown.wav' in Snd, type:

     
    $ snd mixdown.wav RET
    

This command starts Snd with a WAV file called `mixdown.wav':

editing-sound-snd-01

Making a selection of a sound file in snd is similar to selecting text in Emacs; you can mark a section of a sound file or recording you've made in Snd by left-clicking and dragging across the area with the mouse. The area you drag across becomes shaded and is called the selection. Once you select a portion of the sound, any effect you choose works on that selection. You can also cut and paste selections of the sound you are editing into other sound buffers.

The xwave tool (and many others, no doubt) have similar capabilities and functions (see section Other Tools for Sound Editing).

24.1.1 Cutting Out Part of a Sound File  Cutting out a selection of sound.
24.1.2 Pasting a Selection of Sound  Pasting in a selection of sound.
24.1.3 Mixing Sound Files Together  Mixing two sound files together.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.1.1 Cutting Out Part of a Sound File

To cut out a portion of a sound file you are editing in Snd, first make it the selection by left-clicking and dragging, and then choose Cut from the Edit menu, somewhat like cropping an image file.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.1.2 Pasting a Selection of Sound

Paste a cut sound selection into a different sound buffer in Snd by opening the new buffer, left-clicking in the target buffer, and then choosing Paste from the Edit menu. Your most recent selection will be pasted at the point where you clicked in the sound buffer.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.1.3 Mixing Sound Files Together

To mix different audio files together as multiple tracks in Snd, choose Mix from the File menu and specify the files to use as the individual tracks.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2 Sound Effects

@sf{Debian}: `sox'
@sf{WWW}: http://home.sprynet.com/~cbagwell/sox.html

The "Sound eXchange" tool, sox, is a sound sample translator. It reads sound as files or standard input and outputs the sound either to a file or standard output, while translating in between. You can use sox to convert sound files between formats or process sounds with special effects. This section describes some of the special effects you can apply to sound files with sox.

When applying an effect, the original file is never altered. You must specify an output file, or use `-' to indicate the standard output, specifying the output format with `-t'. You can only apply one effect with each sox command; thus, to add both echo and reverb to a sound file, you would need to issue two sox commands.

The amount and levels applied for each effect will vary with every situation. As such, consider the following recipes guidelines only for using the options; you will probably end up experimenting a bit to get your intended effect for any particular sound file.

Almost all of the sound effects are applied by specifying the input and output file arguments, followed by the name of the effect to use and any options the effect takes (with notable exceptions, like the `-v' option for changing the amplitude of a file).

NOTE: For more information on the effects Sox can do, see the various files in `/usr/doc/sox/', and read the sox man page (see section Reading a Page from the System Manual).

24.2.1 Changing the Amplitude of a Sound File  Changing the amplitude of a sound file.
24.2.2 Changing the Sampling Rate of a Sound File  Changing a sound file's sampling rate.
24.2.3 Adding Reverb to a Sound File  Adding reverb to a sound file.
24.2.4 Adding Echo to a Sound File  Adding echo to a sound file.
24.2.5 Adding Flange to a Sound File  Adding flange to a sound file.
24.2.6 Adding Phase to a Sound File  Adding phase to a sound file.
24.2.7 Adding Chorus to a Sound File  Adding chorus to a sound file.
24.2.8 Adding Vibro-Champ Effects to a Sound File  Adding Vibro-Champ effects to a sound file.
24.2.9 Reversing a Sound File  Reversing a sound file.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2.1 Changing the Amplitude of a Sound File

To change the volume or amplitude of a sound file, use sox with the `-v' option, giving the volume level as an argument. Levels below 1.0 lower the amplitude, and higher numbers raise it.

  • To raise the volume of file `old.wav' twofold and write the output to `new.wav', type:
     
    $ sox -v3 old.wav new.wav RET
    

  • To lower the volume of file `old.wav' by half and write the output to `new.wav', type:

     
    $ sox -v.5 old.wav new.wav RET
    

Use sox with the `stat' option and `-v' to determine the largest possible value that can be used before distortion or clipping occurs (it performs a statistical analysis on the file and outputs a numeric value). This value comes in handy when you want to raise a file's volume as high as possible without ruining its fidelity.

  • To raise the volume of the file `quit.cdr' as high as possible without distortion, type:

     
    $ sox quiet.cdr loud.cdr stat -v RET
    3.125
    $ sox -v 3.125 quiet.cdr loud.cdr RET
    $
    

The preceding example writes a new file, `loud.cdr'.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2.2 Changing the Sampling Rate of a Sound File

To change the sampling rate of a sound file, use the `-r' option followed by the sample rate to use, in Hertz. Like the `-v' option, specify this option before giving the name of the output file.

  • To change the sampling rate of file `old.wav' to 7,000 Hz, and write the output to `new.wav', type:

     
    $ sox old.wav -r 7000 new.wav RET
    


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2.3 Adding Reverb to a Sound File

To add reverb to a sound file, use the `reverb' effect. `reverb' takes three arguments: the volume of the output (its "gain-out"), the time (in milliseconds) of reverb, and the length (in milliseconds) of delay. You can specify more than one delay; the more you specify, the more of an overlapping echo the reverb will have.

  • To add a basic reverb to file `old.wav' and write the output to file `new.wav', type:
     
    $ sox old.wav new.wav .5 1000 100 RET
    

  • To add a spacey, echoing reverb to file `old.wav' and write the output to `new.wav', type:

     
    $ sox old.wav new.wav reverb 1 1000 333 333 333 333 RET
    

NOTE: This last example makes a sound similar to some of the recordings of the band Flying Saucer Attack. You know who they are, don't you?)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2.4 Adding Echo to a Sound File

To add echo to a sound file, use the `echo' effect. It takes as arguments the "gain-in" and "gain-out" volume levels, as well as the delay and decay, both in milliseconds.

  • To add a 100 millisecond echo to the sound file `old.wav' and write output to `new.wav', type:
     
    $ sox old.wav new.wav echo .5 .5 100 .5 RET
    

  • To add a one-second echo to the sound file `old.wav' and write output to `new.wav', type:
     
    $ sox old.wav new.wav echo .5 .5 1000 .5 RET
    

  • To add a "tin-can" echo effect to `old.wav' and write the output to `new.wav', type:

     
    $ sox old.wav new.wav echo 1 .5 5 .5 RET
    

NOTE: The `echos' effect works like `echo', but adds a sequence of echos to the sound file.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2.5 Adding Flange to a Sound File

The `flanger' effect adds flange to a sound file. It takes as arguments the "gain-in" and "gain-out" volume levels, as well as the delay and decay in milliseconds, and the speed of the flange, in Hertz. Specify the type of modulation with either `-s' (for sinodial) or `-t' (for triangular).

  • To add an "underwater" flange to the file `old.wav' and write the output to `new.wav', type:
     
    $ sox old.wav new.wav flanger .5 .5 4 .5 1 -t RET
    

  • To add flange that sounds somewhat like a "wah-wah" effects pedal to the file `old.wav' and write the output to `new.wav', type:

     
    $ sox old.wav new.wav flanger .5 .5 .5 1 2 -t RET
    


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2.6 Adding Phase to a Sound File

The `phaser' effect adds phase to a sound file. It takes the same arguments as the `flanger' effect.

  • To add a heavy phase to the file `old.wav' and write the output to `new.wav', type:
     
    $ sox old.wav new.wav phaser 1 .5 4 .5 1 -s RET
    

  • To add a phased "breathing" effect to the file `old.wav' and write the output to `new.wav', type:

     
    $ sox old.wav new.wav phaser .5 .5 .5 .9 .5 -t RET
    

NOTE: Using a decay greater than .5 may result in feedback.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2.7 Adding Chorus to a Sound File

To add a chorus effect to a sound file, use `chorus'. Its options are the "gain-in" and "gain-out" of the volume, the delay and decay in milliseconds, the speed in Hertz, and the depth of the chorus in milliseconds. Specify either `-s' or `-t' for sinodial or triangular modulation.

  • To add a 100 millisecond chorus to the file `old.wav' and write the output to `new.wav', type:
     
    $ sox old.wav new.wav chorus 1 .5 100 1 1 1 -t RET
    

  • To add a deep, "alien-sounding" chorus to the file `old.wav' and write the output to `new.wav', type:

     
    $ sox old.wav new.wav chorus 1 .5 100 1 5 9 -t RET
    


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2.8 Adding Vibro-Champ Effects to a Sound File

The `vibro' effect imitates the effect of the Fender Vibro-Champ amplifier. Give the speed in Hertz (30 maximum) as an option, and specify an optional depth value between 0 and 1 (the default is .5).

  • To add a subtle Vibro-Champ effect to the file `old.wav' and write the output to `new.wav', type:
     
    $ sox old.wav new.wav vibro 1 RET
    

  • To add an effect of a maxed-out Vibro-Champ to the file `old.wav' and write the output to `new.wav', type:

     
    $ sox old.wav new.wav vibro 30 1 RET
    


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2.9 Reversing a Sound File

Use the `reverse' effect to reverse the sound in a sound file.

  • To reverse the sound in the file `old.wav' and write the output to `new.wav', type:

     
    $ sox old.wav new.wav reverse RET
    


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.3 Converting Sound Files

@sf{Debian}: `sox'
@sf{WWW}: http://home.sprynet.com/~cbagwell/sox.html

Use sox for most sound-file conversions. Give as arguments the name of the input file and the name of the output file to write to; use a file name extension specifying the sound format for the output file (see section Sound File Formats).

  • To convert the file `new.wav' to an audio CD format file, type:

     
    $ sox new.wav new.cdr RET
    

This command writes a new file, `new.cdr', in the audio CD format; the original file, `new.wav', is not altered.

You may sometimes need to specify additional options, such as with raw audio files where the sampling rate and other properties must be specified.

  • To convert all of the raw audio files in the current directory to audio CD format files, type:

     
    $ for i in *.raw RET
    { RET
    sox -s -w -c2 -r 44100 $i -x $i.cdr RET
    } RET
    

This command writes all of the `.raw' files to new files of the same name but with a `.cdr' extension. You could then use cdrecord to burn an audio CD with the `.cdr' files (see section Writing an Audio CD-R).

To convert a file to a particular format without using the standard extension, specify the format to write to with the `-t' option.

  • To convert the file `new.wav' to the audio CD format and write output to a file named `cd-single', type:

     
    $ sox new.wav -t cdr cd-single RET
    

24.3.1 Making an MP3 File  Encoding an MP3 file.
24.3.2 Converting MP3 to Another Format  Converting an MP3 file to something else.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.3.1 Making an MP3 File

@sf{WWW}: http://www.sulaco.org/mp3/

The process of making an MP3 file from a raw audio or WAV format audio file is called "encoding" an MP3 file; programs that do this are MP3 encoders. This is not so much a recording process as it is a conversion process: existing audio is converted to an MP3 file. (To make MP3 files from your own recordings, make the recording as a CD-quality WAV file, and then convert that.)

Unfortunately, the algorithm for encoding MP3 is patented, and all software which uses it must pay a license fee--including free software. This restriction makes it difficult for people to create a free software MP3 encoder, and it is the reason why some free software and open source groups advocate the development of a high-quality compressed audio format to replace MP3.(32) A workaround is presented in the form of LAME ("LAME Ain't an MP3 Encoder"). LAME isn't an MP3 encoder, but it is a free software patch file (see section Patching a File with a Difference Report) designed to work with the sample source code distributed by the patent holders of the MP3 encoding process.

This means that you can download both separately and combine them to get a working MP3 encoder called notlame, perhaps the fastest (yes, encoding MP3s is a slow process) encoder currently available for Linux. When you visit the LAME Project at http://www.sulaco.org/mp3/, you'll find a link to download a pre-assembled notlame binary from a site in Australia, where the patent laws do not apply.

The notlame encoder takes two arguments: the name of the input file and the name of the output file.

  • To encode an MP3 file from a WAV file called `september-wind.wav', type:

     
    $ notlame september-wind.wav september-wind.mp3 RET
    

It usually takes some time to encode an MP3 file; when notlame is encoding a file, it continually outputs the current percentage of completion.

NOTE: Scripts on the download site show how to encode multiple WAV files and how to decode all of the tracks on an audio CD.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.3.2 Converting MP3 to Another Format

@sf{Debian}: `sox'
@sf{Debian}: `mpg321'
@sf{WWW}: http://home.sprynet.com/~cbagwell/sox.html
@sf{WWW}: http://freshmeat.net/projects/mpg321/

To convert an MP3 file to another format, use mpg321 (or another command-line MP3 player) to play the file to the standard output, and then use sox to read the resultant raw audio and write it to another file with a specified input format.

  • To convert the MP3 file `remix.mp3' to a WAV file `remix.wav', type:

     
    $ mpg321 -b 10000 -s remix.mp3 | sox -t raw -r 44100 -s -w 
    -c 2 - remix.wav RET 
    


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.4 Other Tools for Sound Editing

Sound software in Linux is a fast-moving target, and it is impossible for a printed volume to keep up with it; you can stay abreast of the latest developments by checking out Dave Phillips's "Sound & MIDI Software for Linux" page at http://www.bright.net/~dlphilp/linuxsound/. This page is the most comprehensive and up-to-date list of Linux-related sound software available.

As with text editors, there are all manner of sound editors, ranging from simple editors to advanced environments. The following table lists a few of the most popular ones.

SOUND EDITOR DESCRIPTION
dap Richard Kent's Digital Audio Processor, DAP, is a graphical tool for editing sound files. {@sf{WWW}}: http://www.cee.hw.ac.uk/~richardk/
festival Festival is a speech-synthesis system. It reads English (British and American), Spanish, and Welsh plain text input and outputs speech as sound. {@sf{Debian}}: `festival' {@sf{WWW}}: http://www.cstr.ed.ac.uk/projects/festival/
gramofile Use GramoFile for sampling sound from vinyl records. It can remove ticks and pops from the sound using filters and signal processing, and is frequently used to copy records onto CD-Rs. {@sf{Debian}}: `gramofile' {@sf{WWW}}: http://panic.et.tudelft.nl/~costar/gramofile/
mxv MiXViews is an advanced sound editor. Its features include cross-fades, filters, and various powerful data analysis tools. {@sf{Debian}}: `mixviews' {@sf{WWW}}: http://www.create.ucsb.edu/~doug/htmls/MiXViews.html
xwave XWave is a simple sound editor that contains the basic functions you would expect in a WAV file editor. {@sf{WWW}}: http://www.ibiblio.org/pub/Linux/apps/sound/editors/


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]