Difference between revisions of "uos"
Line 122: | Line 122: | ||
uos_AddFromDevIn(); // Input from IN device | uos_AddFromDevIn(); // Input from IN device | ||
uos_AddFromFile(); // Input from Audio File | uos_AddFromFile(); // Input from Audio File | ||
+ | uos_AddFromMemoryBuffer(); // Input from decoded pcm buffer | ||
+ | uos_AddFromMemoryStream(); // Input from a TMemoryStream of Audio File | ||
+ | uos_AddFromFileIntoMemory(); // Input from audio file and stored into memory buffer | ||
uos_AddFromURL(); // Input from internet URL mp3/opus files | uos_AddFromURL(); // Input from internet URL mp3/opus files | ||
uos_AddFromSynth(; // Input form built-in Synthetizer | uos_AddFromSynth(; // Input form built-in Synthetizer |
Revision as of 01:19, 11 March 2017
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, .opus 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 of mp3 and opus files.
Uos can use the SoundTouch, PortAudio, SndFile, Mpg123, Faad, OpusFile and Mp4ff audio libraries.
Included in the package: Examples and binary libraries for Linux 32/64, arm-Rapsberry Pi, Windows 32/64, Mac OSX 32 and FreeBSD 32/64.
Download
Forum
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
Those libraries can be used by uos:
- PortAudio for dealing with audio devices of sound card,
- SndFile for decoding wav, flac, org audio files,
- Mpg123 for decoding mp3 audio files,
- Faad and Mp4ff for decoding m4a audio files,
- OpusFile for decoding opus audio files,
- SoundTouch plugin for changing tempo of any type of audio files,
- bs2b plugin to apply stereo to binaural effect.
You may load those libraries with:
uos_LoadLib( pchar(PortAudioFileName), pchar(SndFileFileName), pchar(Mpg123FileName), pchar(Mp4ffFileName), pchar(FaadFileName), pchar(OpusFileFileName) );
If some libraries are not needed, just replace the filename with "nil".
Play a file 'MySong.mp3'
begin
uos_LoadLib( PortAudioFileName, nil, Mpg123FileName, nil, nil, nil); // only PortAudio and Mpg123 are needed.
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...
end;
Play a sound file with some dsp effects (only for uos, in future for uoslib too):
begin
uos_LoadLib( pchar(PortAudioFileName), nil, pchar(Mpg123FileName), nil, nil, nil); // only PortAudio and Mpg123 are needed.
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_InputAddDSP( 0, 1 ); // Add as many dsp effects you want
uos_InputAddDSP( 0, 2 );
uos_Play( 0 ); // Play the song with DSP effect...
end;
Listen to your mic into your loudspeakers (for uoslib too) :
begin
uos_LoadLib( pchar(PortAudioFileName), nil, nil, nil, nil, nil); // only PortAudio is needed.
uos_CreatePlayer( 0 );
uos_AddIntoDevOut( 0 );
uos_AddFromDevIn( 0 ); // Input from IN Device
uos_Play( 0 ); // Listen to your mic in your loudspeakers...
end;
Now, ear your mic, listen to a mp3, apply some effects and record the mic into wav file at same time:
begin
uos_LoadLib( pchar(PortAudioFileName), pchar(SndFileFileName), pchar(Mpg123FileName), nil, nil, nil);
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_InputAddDSP( 0, 1 ); // Add as many dsp's you want
uos_InputAddDSP( 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
end;
Syntax
Here are the basic uos procedures. Each procedure has its equivalent with arguments for custom parameters.
Initialization Procedures:
uos_LoadLib( ); // Load dynamic libraries for uos uos_LoadLibs( ); // Load dynamic libraries for uoslibs uos_UnLoadLib(); // To unload libraries. uos_Free; // To use when application terminate.
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_AddFromMemoryBuffer(); // Input from decoded pcm buffer uos_AddFromMemoryStream(); // Input from a TMemoryStream of Audio File uos_AddFromFileIntoMemory(); // Input from audio file and stored into memory buffer uos_AddFromURL(); // Input from internet URL mp3/opus files uos_AddFromSynth(; // Input form built-in Synthetizer uos_InputLength(); // Lenght of Input in samples uos_InputPosition(); // Get position uos_InputSeek(); // Change position in byte uos_InputSeekTime(); // Change position in time uos_InputSeekSeconds(); // Change position in second
Player
uos_Play(); // Start playing uos_Stop(); // Stop playing and free thread uos_Pause(); // Pause playing uos_RePlay(); // Resume playing after pause uos_PlayNoFree(); // Start playing but do not free the player after stop. uos_FreePlayer(); // Free the player. Works only when PlayNoFree() was used.
DSP
uos_InputAddDSP() // DSP procedure for input uos_OutputAddDSP() // DSP procedure for output uos_InputSetDSP() // Set DSP In uos_OutputSetDSP() // Set DSP out uos_InputSetDSPVolume(...) // Set Volume uos_InputAddFilter(...) // Add filer uos_AddPlugin(...) // Add pluggin
And much more other procedures/functions (see in uos.pas...)