uos
uos (United OpenLib of Sound) is a multi-platform package of audio handling routines that unifies the best open-source audio libraries.
Features
- play .mp3, .ogg, .wav, .flac, .m4a and cdrom audio files.
- 16, 32 or float 32 bit resolution
- record all types of input into file, in 16 or 32 bit resolution, mono or stereo.
- add DSP effects and filters, however many you want and record it.
- play multiple inputs and outputs simultaneously
- internet audio streaming
Uos can use the SoundTouch, PortAudio, SndFile, Mpg123, Faad and Mp4ff audio libraries.
Included in the package: Examples and binary libraries for Linux 32/64, Windows 32/64, Mac OSX 32 and FreeBSD 32/64.
Download
uoslib
uoslib is the Universal Library version of uos unit and is accessible from Pascal and all other languages (C, Java, ...)
Included in the package: Examples and binary libraries for Linux 32/64, Windows 32/64, Mac OSX 32 and FreeBSD 32/64.
Install
The best way to show how uos works is to look at the examples in uos/uoslib packages. All is included, you only have to compile the demos and run it...
Here some examples how to use uos :
- Copy all the files in /uos/src/ into the directory of your project.
- add uos_flat or uos in your uses section. (for uoslib add uoslib_h)
- uos_flat => All is done by the unit. The procedures are more "universal", same syntax as uoslib.
- uos => The application must declare uos class and variables. The procedures can be used as oop way.
- All the examples in uos packages uses uos_flat. There is a example using uos => SimplePlayer_noflat
- load libraries:
- uos:
- uos_LoadLib(PortAudioFileName, SndFileFileName, Mpg123FileName, Mp4ffFileName, FaadFileName); /// full path of libraries
- uoslib:
- uos_LoadLibs(uoslibFilename, PortAudioFileName, SndFileFileName, Mpg123FileName, Mp4ffFileName, FaadFileName); /// full path of libraries
- uos:
Play a file 'MySong.mp3'
// Create the player with uos
uos_CreatePlayer( 0 ); // you may create how many players you want, from 0 to to what you computer can do...
uos_AddIntoDevOut( 0 ); // Add Output with default parameters
uos_AddFromFile( 0, 'MySong.mp3' ); // Input from audio file
// And let's play it...
uos_Play(0); // Play the song...
Play a sound file with some dsp effects (only for uos, in future for uoslib too):
uos_CreatePlayer( 0 ); // First create the player:
uos_AddIntoDevOut( 0 ); // Add Output with default parameters
uos_AddFromFile( 0, 'MySong.mp3' ); // Input from audio file
uos_AddDSPIn( 0, 1 ); // Add as many dsp effects you want
uos_AddDSPIn( 0, 2 );
uos_Play( 0 ); // Play the song with DSP effect...
Listen to your mic into your loudspeakers (for uoslib too) :
uos_CreatePlayer( 0 );
uos_AddIntoDevOut( 0 );
uos_AddFromDevIn( 0 ); // Input from IN Device
uos_Play( 0 ); // Listen to your mic in your loudspeakers...
Now, ear your mic, listen to a mp3, apply some effects and record the mic into wav file at same time: </syntaxhighlight>
uos_CreatePlayer( 0 ); uos_AddIntoDevOut( 0 ) ; // Output into OUT Device uos_AddIntoFile( 0, 'Myrecord.wav' ); // Output into OUT Device uos_AddFromDevIn( 0 ); // Input from IN Device uos_AddDSPIn( 0, 1 ); // Add as many dsp's you want uos_AddDSPIn( 0, 2 ); uos_CreatePlayer( 1 ); uos_AddFromFile( 1, 'MySong.mp3' ); // the background audio file uos_AddIntoDevOut( 1 ) ; // Output into OUT1 Device;
uos_Play(0); // Listen your mic with DSP effects and record it ... uos_Play(1); // Listen to mp3 while recording
</syntaxhighlight>
Syntax
Here are the basic uos procedures. Each procedure has its equivalent with arguments for custom parameters.
Initialization Procedures:
uos_LoadLib; (uos_LoadLibs for uoslib) //// Load dynamic libraries uos_UnLoadLib;
Output
uos_AddIntoDevOut(); // Output into OUT Device uos_AddIntoFile(); // Output into Wav File
Input
uos_AddFromDevIn(); // Input from IN device uos_AddFromFile(); // Input from Audio File uos_InputLength(); // Lenght of Input in samples uos_InputPosition(); // Get position uos_Seek(); // Change position
Player
uos_Play(); // Start playing uos_RePlay(); // Resume playing after pause uos_Stop(); // Stop playing and free thread uos_Pause(); // Pause playing
DSP
uos_AddDSPIn() // DSP procedure for input uos_AddDSPOut() // DSP procedure for output uos_SetDSPin() // Set DSP In uos_SetDSPout() // Set DSP out uos_SetDSPVolumeIn(...) // Set Volume uos_AddFilterIn(...) // Add filer uos_AddPlugin(...) // Add pluggin
And much more other procedures/functions (see in uos.pas...)