154 lines
5 KiB
Text
154 lines
5 KiB
Text
README file for resample-1.x.tgz from the
|
|
Digital Audio Resampling Home Page located at
|
|
http://ccrma.stanford.edu/~jos/resample/.
|
|
|
|
SOFTWARE FOR SAMPLING-RATE CONVERSION AND FIR DIGITAL FILTER DESIGN
|
|
|
|
For installation instructions, read the INSTALL file in this directory.
|
|
|
|
The resample program "resamples" a soundfile to change its sampling
|
|
rate. For example, it can be used to convert the sampling rate from
|
|
48 kHz (used by DAT machines) to 44.1 kHz (the standard sampling rate
|
|
for Compact Discs). The command line for this operation would look
|
|
something like
|
|
|
|
resample -by 0.91875 dat.snd cd.snd
|
|
|
|
or, more simply,
|
|
|
|
resample -to 44100 dat.snd cd.snd
|
|
|
|
Any reasonable sampling rate can be converted to any other.
|
|
|
|
The windowfilter program designs Finite-Impulse-Response (FIR) digital
|
|
filters by the so-called "window method." In this method, the ideal
|
|
impulse response (a sinc function) is "windowed" by a Kaiser window (a
|
|
popular window used in spectrum analysis).
|
|
|
|
The resample program uses 32-bit fixed-point arithmetic: 16-bits data
|
|
and 16-bits coefficients. The input soundfile must be 16-bit mono or
|
|
stereo (interleaved) audio data.
|
|
|
|
SNDLIB
|
|
|
|
The program uses elements of Bill Schottstaedt's sndlib sound file
|
|
library. This means resample can read many different kinds of sound
|
|
file header (AIFF, WAV, NeXT, IRCAM, etc.).
|
|
|
|
The sndlib files used by resample are included in this directory to
|
|
ensure stability. The latest version of sndlib should be available as
|
|
|
|
ftp://ccrma-ftp.stanford.edu/pub/Lisp/sndlib.tar.gz
|
|
|
|
See sndlib.html in the sndlib distribution for documentation of SNDLIB.
|
|
|
|
CONTENTS of ./src directory
|
|
|
|
resample.c Sampling-rate conversion program.
|
|
resample.1 Manual page for resample. Try "nroff -man resample.1".
|
|
resamplesubs.c Subroutines used by resample.
|
|
resample.h Configuration constants for the sampling rate converter.
|
|
stdefs.h Machine-dependent definitions, useful constants and macros.
|
|
|
|
windowfilter.c Program for designing FIR digital filters used by resample.
|
|
windowfilter.1 Manual page for windowfilter.
|
|
filterkit.c Library for filter design, application, and file management.
|
|
filterkit.h Declarations (procedure prototypes) for the filterkit library.
|
|
|
|
README This file.
|
|
README.deemph A word about deemphasis filtering.
|
|
LGPL GNU Lesser General Public License (LGPL)
|
|
|
|
SNDLIB files:
|
|
io.c
|
|
audio.c
|
|
headers.c
|
|
sound.c
|
|
sndlib.h
|
|
sndlib-strings.h
|
|
|
|
COPYING
|
|
|
|
SNDLIB files are Copyright 2000 by Bill Schottstaedt <bil@ccrma.stanford.edu>.
|
|
|
|
The remaining files in this package, unless otherwise noted, are
|
|
Copyright 1994-2006 by Julius O. Smith III <jos@ccrma.stanford.edu>,
|
|
all rights reserved. Permission to use and copy is granted subject to
|
|
the terms of the "GNU Lesser General Public License" (LGPL) as
|
|
published by the Free Software Foundation; either version 2.1 of the
|
|
License, or any later version. In addition, we request that a copy of
|
|
any modified files be sent by email to jos@ccrma.stanford.edu so that
|
|
we may incorporate them into the CCRMA version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
FILTERKIT CONTENTS
|
|
|
|
LpFilter() - Calculates the filter coeffs for a Kaiser-windowed
|
|
low-pass filter with a given roll-off frequency. These
|
|
coeffs are stored into a array of doubles.
|
|
|
|
writeFilter() - Writes a filter to a file.
|
|
|
|
makeFilter() - A section of the original SAIL program. Calls
|
|
LpFilter() to create a filter, then scales the double
|
|
coeffs into a array of half words.
|
|
|
|
readFilter() - Reads a filter from a file.
|
|
|
|
FilterUp() - Applies a filter to a given sample when up-converting.
|
|
|
|
FilterUD() - Applies a filter to a given sample when up- or down-
|
|
converting. Both are repoductions of the original SAIL
|
|
program.
|
|
|
|
initZerox() - Initialization routine for the zerox() function. Must
|
|
be called before zerox() is called. This routine loads
|
|
the correct filter so zerox() can use it.
|
|
|
|
zerox() - Given a pointer into a sample, finds a zero-crossing on the
|
|
interval [pointer-1:pointer+2] by iteration.
|
|
|
|
Query() - Ask the user for a yes/no question with prompt, default,
|
|
and optional help.
|
|
|
|
GetUShort() - Ask the user for a unsigned short with prompt, default,
|
|
and optional help.
|
|
|
|
GetDouble() - Ask the user for a double with prompt, default, and
|
|
optional help.
|
|
|
|
GetString() - Ask the user for a string with prompt, default, and
|
|
optional help.
|
|
|
|
|
|
FILTER FILE FORMAT
|
|
|
|
File Name: "F" Nmult "T" Nhc ".filter"
|
|
example: "F13T8.filter" and "F27T8.filter"
|
|
|
|
Structure of File:
|
|
"ScaleFactor" LpScl
|
|
"Length" Nwing
|
|
"Coeffs:"
|
|
Imp[0]
|
|
Imp[1]
|
|
:
|
|
Imp[Nwing-1]
|
|
"Differences:"
|
|
ImpD[0]
|
|
ImpD[1]
|
|
:
|
|
ImpD[Nwing-1]
|
|
EOF
|
|
|
|
where: Something enclosed in "" indicates specific characters in the file.
|
|
Nmult, Nwing, Imp[], and ImpD[] are variables (HWORD)
|
|
Npc is a conversion constant.
|
|
EOF is the end of the file.
|
|
|
|
See writeFilter() and readFilter() in "filterkit.c" for more details.
|
|
|