Osalp is a project designed to implement a world class set of classes in C++ that will handle all of the audio functions one would like. It is designed to be multi-platform with UNIX based platforms as the base.
This project is still in the beta code phase and a beta version that will illustrate the power and flexibility is now available. This version supports the Linux (OSS) audio device, Solaris Sparc audio device, FreeBSD (OSS) audio device, wav, au, aiff, aifc, mp3, and numerousother formats.
It is important to note that this is not an application but a C++ library that others can use to create an audio application or to easly add audio capabilities to an existing application. OSALP was originally designed and developed by Bruce Forsberg out of need to manage and edit large sound files in a simple manner. Currently the project is being maintained by Darrick Servis.
The library is built on a set of core classes that provide the basic functionality. New classes to operate on data are derived from these classes. These classes provide a powerful chaining process. This allows one to build an audio chain much like one would build with building blocks. Audio data is encapsulated into a single class. This allows one to handle data conversions in one place.
There is a file base class (aflibFile) that defines the API for any device or file classes that are to be developed. They are implemented as dynamically loaded shared objects so that new file types can be added without recompiling the base library or needing to link them to an application. This will allow third parties to support their proprietary formats as a binary "plugable modules".
Linux & FreeBSD Device (OSS) -- aflibDevFile
Solaris Sparc Device -- aflibSolarisSparcDevFile
WAV (linear, mu-law, a-law) -- aflibWavFile
AU (linear, mu-law, a-law) -- aflibAuFile
AIFC -- aflibAifcFile
AIFF -- aflibAiffFile
MP3 using Lame encoder -- aflibLameFile
MP3 using Blade encoder -- aflibBladeFile
MP3 reader using splay library -- aflibMpgFile
MP3 reader using mpg123 executable -- aflibMpg123File
Sox library interface (supports most formats supported by the sox sound tools library -- aflibSoxFile
Currently there are several worker classes. These are the classes that actually do the work. These classes are not tied to any GUI but are GUI neutral. This allows developers to write code using the GUI of their choice.
Audio Sample Rate Converter -- aflibAudioSampleRateCvt
Audio Pitch Change -- aflibAudioPitch
Audio Test Source -- aflibAudioConstantSrc
Audio Editing -- aflibAudioEdit
Audio Timer Recording -- aflibAudioRecorder
Audio VU Meter and Spectrum Display -- aflibAudioSpectrum
Audio Mixing -- aflibAudioMixer
Butterworth Filter -- aflibAudioBWFilter
Reading Audio Data from Memory -- aflibAudioMemoryInput
Reading and Writing Audio Data to Devices or Files -- aflibAudioFile
There are also utility classes. These are not part of the main audio chain but are probably needed by most audio applications or are used indirectly by the worker classes.
FFT -- aflibFFT
User Environment Storage and Retrieval -- aflibEnvFile
Audio sample data -- aflibSampleData
Sample rate conversion -- aflibConverter