Sound Processing Kit
Software version 2
Technical documentation
Copying and licensing information
Release notes
Introduction
Sound Processing Kit is an object-oriented
class library for audio signal processing.
Sound Processing Kit (abbreviated as SPKit)
includes classes for various
signal processing tasks,
but most importantly,
it introduces a way
of implementing sound processing algorithms
in a simple object-oriented manner.
Sound Processing Kit
is implemented in C++.
SPKit is designed to be portable.
The current version
requires a bare-bones
C++ 2.0 compatible compiler
(templates and exceptions are not needed).
ANSI C standard libraries are required.
The source code should compile
with little or no modification
on most UNIX compatible platforms.
There are three versions of the SPKit class library:
a "generic" version, a libaudiofile version, and an SGI version.
The generic version is the most portable one and
does not require extra libraries audio file I/O.
On the other hand,
the number of supported sound file formats is very limited.
The libaudifile version requires the Audio File Library
system for file I/O.
Audio File Library is with many Linux distributions
and has been ported to other operating systems as well.
The home page of Audio File Library is at
http://www.68k.org/~michael/audiofile/.
The SGI version
is written specifically for the SGI/IRIX system.
For more information this and other updates, see the
release notes.
For a more thorough introduction,
see the ICMC 1999 paper
(in PDF format) on SPKit Version 2.
The first release of SPKit was introduced
in the ICMC 1995 paper.
How this manual is organized
This manual is comprised of HTML pages.
Each page is divided into two sections:
User's Guide
and
Programmer's Reference.
User's Guide is intended for
users of ready-made SPKit classes
and requires basic knowledge of C++
but little knowledge of digital signal processing.
Programmer's Reference is intended for
programmers designing new SPKit classes.
Programmers are advised
to read also the User's Guide sections
for an introduction to the individual classes.
A To Do List.
User's Guide
SPKit objects are easy to use.
Here is a simple example
of a UNIX-style command line program
that reads samples from a file,
adjusts gain given as a command line argument
and writes the result to another file.
The SPKit software package contains more examples.
To use SPKit objects
a program must follow three steps:
- Connect the objects
- Initialize sound processing parameters
- Run
The SPKit objects are connected
with the setInput() member function
by providing the object with an input,
which may be a sound file or another SPKit object.
The connected objects form a chain
where the first object is a reader
and the last object is a writer.
Typically the reader reads audio samples
from a sound file and the writer writes
the processed samples to another sound file.
On UNIX-compatible environments
SPKit is installed as a subroutine library named libsp.a.
A typical command line for compiling an SPKit program
and linking it with the SPKit library is as follows:
c++ test.cc -lsp -o test
where c++ is the name of the C++ compiler command
(may be named differently on your specific system)
and the option -lsp links the test file to
the SPKit library (libsp.a).
More detailed information and software installation instructions
are included in the SPKit software distribution.
The SPKit classes are divided into following categories:
- Sound input and output
- Basic signal processing
- Dynamics processing
- Filtering
- Delay and reverberation
- Distortion
- Signal routing
Programmer's reference
Class Hierarchy
The SPKit class hierarchy is based
on a single base class:
SPKitProcessor.
It implements the basic protocol
for
connecting objects,
passing initialization data
and
passing audio samples
between objects.
The inheritance hierarchy is as follows:
See also:
References
Contact information
University of Helsinki
or the authors
do not provide any kind of support for
Sound Processing Kit.
However, comments and bug reports are welcome and can be send to
Kai Lassfolk
Department of Musicology
P.O.Box 35
FIN-00014 University of Helsinki
Finland
or by E-mail to
lassfolk+spkit [AT] mappi.helsinki.fi.