Extract and/or delete parts of a wav file
qwavcut [option]...file
qwavcut allows to extract and/or delete a fragment of a wav file. some parameters must be supplied in order to define the start/size/end cut points and what to do then: either the fragment must be copied to another file or erased from the file (or both)
-d,--delete
deletes the fragment from the file. if option --output is used, deletion action is always done after fragment extraction.
-h,--help
show a brief help and exit.
-o <outfile>, --output=<outfile>
outfile is the file where the samples contained in the specified cut will be copied.
-V,--version
show version and exit.
cut options are used to specify at which sample the fragment begins (options -b or -B), ends (options -e and -E), or which size it has (option -s). at least, one cut option must be specified. neither the options -b and -B, and the options -e and -E can be used together; also, a begin, end and size option can be used at the same time.
by default, the fragment begins at the first sample and ends at the last sample; there's no default value for size.
all the values are treated as a sample number unless a format specifier is used. see the FORMATS section below for information. all values must be positive integer.
-b <begin>[<format>], --set-begin-from-eof=<begin>[<format>]
begin specifies the first sample of the file that belongs to the cut counting from the end of the file.
-B <begin>[<format>], --set-begin=<begin>[<format>]
begin specifies the first sample of the file that belongs to the cut counting from the beginning of the file.
-e <end>[<format>], --set-end-from-eof=<end>[<format>]
end specifies the last sample of the file that belongs to the cut counting from the end of the file.
-E <end>[<format>], --set-end=<end>[<format>]
end specifies the last sample of the file that belongs to the cut counting from the beginning of the file.
-s <size>[<format>], --set-size=<size>[<format>]
size specifies the number of samples contained in the cut.
-S <begin>-<end>, --slice <begin>-<end>
slice specifies the starting and ending points of the cut as a timeslice, which is to say, two time specifications ([[h:]m:]s[.ms]) joined by a hyphen.
cut options can have also an optional modifier. if this modifier is not used, then the value provided with the corresponding cut option will be interpreted as a number of samples. since most of the times will be difficult to specify a cut in terms of samples, the following modifiers are provided:
j
value is interpreted as milliseconds.
m
value is interpreted as minutes.
s
value is interpreted as seconds.
b
value is interpreted as bytes.
k
value is interpreted as kbytes (1024 bytes).
M
value is interpreted as megabytes (1024 kbytes).
in either case, the values specified will be rounded to get an integer number of samples.
here are some examples:
to get the last ten seconds of a file:
qwavcut -b 10s -o outfile.wav infile.wav
four ways of getting the first minute of a file:
qwavcut -S -1:0 -o outfile.wav infile.wav
qwavcut -S -60 -o outfile.wav infile.wav
qwavcut -E 1m -o outfile.wav infile.wav
qwavcut -s 1m -o outfile.wav infile.wav
four ways of getting the second quarter of a file:
qwavcut -S 15:0-30:0 -o outfile.wav infile.wav
qwavcut -B 15m -E 30m -o outfile.wav infile.wav
qwavcut -s 15m -E 30m -o outfile.wav infile.wav
qwavcut -B 15m -s 15m -o outfile.wav infile.wav
if neither the options --output nor --delete are specified, the program will do nothing.
when cutting at the end, a simple truncate call is needed. but when cutting in the middle or in the beginning, all the data behind the cut must be moved ahead and, depending on the amount of the data to be moved, this can be a time consuming operation.
tests has been done only with 44100 Hz 16 bit stereo files, though it may work with mono/stereo 8/16 bits files.
http://www.etse.urv.es/~dmanye/quelcom/quelcom.html