SPORCH (Spectral Orchestrator) is an open source software package for composers wanting to base their music on the analyses and matching/combination of sound spectra. The program's simplest usage is to input sounds files and output “sporchestrations” of them (i.e., sets of pitches, instruments and dynamics that approximate the sound source when played together). SPORCH does this by searching through a database of FFT analyses of instruments playing notes at different pitches and dynamic levels and finding combinations that fit as closely as possible the spectrum of the original sound. The resulting harmony approximates the original sound in both pitch and timbre when played.
At the heart of the package is libsporch.so, a software library that executes the search process described above. The intention is for the user to load this into his/her language of choice (for example, Lisp) and run searches from there, modifying the program's behavior through user-defined callback functions and a number of different settings. Before using the library, a database of spectral data for all of the musical instruments the user is interested in must be configured and compiled. New instruments may be easily added, analyzed and compiled into the database. To do so, the user must provide sound samples of the instrument playing all (or most of) the pitches in its range at various dynamic levels. Data can be compiled for any equal-tempered tuning and different instrumental ensembles can be defined using a specification flexible enough to specify alternate instrument choices and different playing techniques (like pizzicato or or muted horn).
This is the basic operating procedure: the user must first assemble a collection of sound files containing samples of the musical instruments he/she's interested in. One sound sample is necessary for each pitch, dynamic level and instrument. SPORCH analyzes these according to the user's specifications and compiles everything into a database file, which is then loaded and used to do the searching the matching. The application itself may be called from the command line or loaded into another program as a shared library. Given a sound file, offset, and other optional parameters the program returns a printout or data structure listing the combination of instruments, pitches and dynamic levels that make up what it considers to be the best match.
The long-term goal of the project is to provide a package that is highly flexible and configurable so that the user can modify searches in any way he/she sees fit. Although a slick GUI interface with buttons and sliders might be added at some point, it is primarily intended as a tool for computer music composers who wish to incorporate its functionality into their own programs. In the future, the user will be able to choose between different models of spectra (at the moment, the program extracts amplitude peaks from FFT analyses), different search processes (the current one is the linear process described below–an API will be provided soon for user to plugin his/her own search engine), different methods of spectral addition and subtraction, and other important search elements.