Skip to content

Audio library for LAZARUS-FREE PASCAL to easily play sounds throught OpenAL. If OpenAL is not installed, application will run anyway but without sound. For Windows, Linux and Mac.

Lulu04/OALSoundManager

Repository files navigation

OALSoundManager

DEPRECATED: please consider to use the new ALSound repository.

Easy library for FreePascal - Lazarus to play sound throught OpenAL. If OpenAL is not installed, application will run anyway but without sound. Tested and work on Windows, Linux and Mac.

Limitations:

  • Play only WAV file with 8 or 16 bits per sample, mono or stereo.
  • Load the whole wav data in memory, no streaming process

written by Lulu - 2017

-- USAGE --

uses OALSoundManager, VelocityCurve; ... var MySound: TOALSound; ...

Loading wav file MySound := OALManager.Add( 'Path/MyMusic.wav' );

Audio are automatically deleted from memory when the application is closed. however, if you need to delete audio at run time, use OALManager.Delete( MySound );

-- FILE ERROR --

Loading file error can be retrieved with MySound.GetFileError It return: - oal_NOERROR : audio is loaded in memory and ready to play - oal_ERR_NOTWAVFILE : bad format, only wav file are played - oal_ERR_BADBITPERSAMPLE : audio file have bad bit per sample (only 8 and 16 bits per sample are allowed)

-- COMMON ACTIONS --

MySound.Play( AFromBegin: boolean ); MySound.Pause; MySound.Stop;

-- VOLUME -- Volume range is [0..1000]

Get/set current volume of the sound MySound.Volume.Value // return single type value between 0 and 1000

Slide the volume to new value in specified time, using velocity curve MySound.Volume.ChangeTo( ANewValue, ATimeSec: single; AVelocityCurve: word );

-- FADE IN/OUT --

You can also fade in and fade out the sound

Play the sound then increase volume to maximum Do it in specified time and with specified velocity curve MySound.FadeIn( ATimeSec: single; AVelocityCurve: word );

Play the sound then increase volume to specified value Do it in specified time and with specified velocity curve MySound.FadeIn( AVolume, ATimeSec: single; AVelocityCurve: word );

Slide the volume to zero then stop the sound Do it in specified time and with specified velocity curve MySound.FadeOut( ATimeSec: single; AVelocityCurve: word );

-- PITCH --

Like volume, you can set or slide value for pitch between 0.1 and 4.0 Default pitch value is 1.0.

MySound.Pitch.Value := 0.1; MySound.Pitch.ChangeTo( 4.0, 3.0, idcStartSlowEndFast );

-- VELOCITY CURVE --

Volume and Pitch are derived from TBoundedFParam class, so you can simply change their value throught time like below: MySound.Volume.ChangeTo( newValue, TimeInSeconds, VelocityCurveID );

To set a value: MySound.Volume.Value := 1000;

Available velocity curve for volume and pitch are (see VelocityCurve unit) idcLinear idcStartFastEndSlow idcStartSlowEndFast idcSinusoid idcSinusoid2 idc5Steps

About

Audio library for LAZARUS-FREE PASCAL to easily play sounds throught OpenAL. If OpenAL is not installed, application will run anyway but without sound. For Windows, Linux and Mac.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages