GitHub

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

Read the original on github.com ↗