Sound Processing Kit

Software version 2
Technical documentation

Copying and licensing information
Release notes


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 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:

  1. Connect the objects
  2. Initialize sound processing parameters
  3. 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++ -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:

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

or by E-mail to lassfolk+spkit [AT]

The SPKit index page

Author: Kai Lassfolk