AudioClip - adventuregamestudio/ags-manual GitHub Wiki
AudioClip
functions and properties
AudioClips are created when you import files in the AGS Editor. The commands in this section allow to play them.
AudioClip.GetByName
static AudioClip* AudioClip.GetByName(string scriptName)
Returns a pointer to the AudioClip with the specified script name, or null if it does not exist.
Normally you do not need to use this, as there will be a automatically created global script variable for each AudioClip which got a script name. Where GetByName() function may come useful is situation in which you a) do not know exact name, b) had to store object's reference in a string for some reason. Good examples of this are saving object's name in a custom property, or a file, then reading it back.
Example:
function PlayDefaultSound(Object *obj) {
String soundName = obj.GetTextProperty("default-sound");
AudioClip *clip = AudioClip.GetByName(soundName);
if (clip != null) {
clip.Play();
}
}
Retrieves the audio clip with the script name stored in an object's custom property, and plays it.
Compatibility: Supported by AGS 3.6.1 and later versions.
See also: AudioClip.ScriptName
, AudioClip.Play
AudioClip.Play
(Formerly known as PlayAmbientSound
, which is now obsolete)
(Formerly known as PlayMP3File
, which is now obsolete)
(Formerly known as PlayMusic
, which is now obsolete)
(Formerly known as PlaySound
, which is now obsolete)
(Formerly known as PlaySoundEx
, which is now obsolete)
(Formerly known as SetMusicRepeat
, which is now obsolete)
AudioChannel* AudioClip.Play(optional AudioPriority, optional RepeatStyle)
Plays the audio clip.
Optionally you can supply a priority and Repeat setting; if you do not supply these, the defaults set for the audio clip in the editor will be used.
This command searches through all the available audio channels to find one that is available for this type of audio. If no spare channels are found, it will try to find one that is playing a clip with a lower or equal priority, and interrupt it to replace it with this new sound.
If all audio channels are busy playing higher priority sounds, then this new audio clip will not be played.
This command returns the AudioChannel instance that the new sound is playing on, or null if it did not play for any reason.
NOTE: AGS can only play one MIDI file at a time.
Example:
aExplosion.Play();
plays the aExplosion audio clip.
Compatibility: Supported by AGS 3.2.0 and later versions.
See also: AudioClip.PlayFrom
,
AudioClip.PlayQueued
,
AudioClip.Stop
,
ViewFrame.LinkedAudio
AudioClip.PlayFrom
AudioChannel* AudioClip.PlayFrom(int position, optional AudioPriority,
optional RepeatStyle)
Plays the audio clip, starting from position. For the meaning of the
position, see the AudioChannel.Seek
help
page.
Otherwise, this command behaves identically to
AudioClip.Play
. Please see that help page
for more information.
Example:
aExplosion.PlayFrom(1000);
plays the aExplosion audio clip, starting from a 1 second offset (if it is OGG/MP3).
Compatibility: Supported by AGS 3.2.0 and later versions.
See also: AudioClip.Play
AudioClip.PlayQueued
(Formerly known as PlayMusicQueued
, which is now obsolete)
AudioChannel* AudioClip.PlayQueued(optional AudioPriority, optional RepeatStyle)
Plays the audio clip, or queues it to be played later if it cannot be played now.
This command behaves identically to
AudioClip.Play
, except that if there are no
available audio channels, it will queue this audio clip to be played
when a channel becomes available.
Additionally, unlike the Play command, using PlayQueued will not interrupt an existing audio clip with an equal priority; it will only interrupt clips with a lower priority.
You can queue up to 10 tracks in the audio queue. Note that if you queue audio clips to be played after a repeating audio clip, they will never be played.
Example:
aExplosion.Play();
aAftermath.PlayQueued();
plays the aExplosion audio clip, and queues the aAftermath sound to be played afterwards.
Compatibility: Supported by AGS 3.2.0 and later versions.
See also: AudioClip.Play
AudioClip.PlayOnChannel
AudioChannel* AudioClip.PlayOnChannel(int channel, optional AudioPriority, optional RepeatStyle)
Plays this audio clip, explicitly putting it on the particular channel, starting with 1 (as channel 0 is reserved for Speech). The maximal number of channels may be found on a System limits page, or using System.AudioChannelCount
at runtime.
This function disregards any audio type rules, so you may script your own channel logic.
If the selected audio channel is busy playing higher priority sounds, then this new audio clip will not be played.
This command returns the AudioChannel instance that the new sound is playing on, or null if it did not play for any reason.
Example:
aBeep.PlayOnChannel(2, eAudioPriorityHigh, eOnce);
plays the aBeep audio clip on channel 2.
Compatibility: Supported by AGS 3.6.0 and later versions.
See also: AudioClip.Play
,
AudioClip.PlayFrom
,
AudioClip.PlayQueued
,
AudioClip.Stop
AudioClip.Stop
AudioClip.Stop()
Stops all currently playing instances of this audio clip.
Example:
aExplosion.Play();
Wait(40);
aExplosion.Stop();
plays the aExplosion audio clip, waits 1 second and then stops it again.
Compatibility: Supported by AGS 3.2.0 and later versions.
See also: AudioClip.Play
AudioClip.ID
readonly int AudioClip.ID
Gets the ID of this audio clip. This could be used for diagnostic purposes as well to find same clip in the Game.AudioClips[] array.
Example:
for (int i = 0; i < System.AudioChannelCount; i++) {
AudioClip *clip = System.AudioChannels[i].PlayingClip;
if (clip != null)
Display("Channel %d has clip %d playing", i, clip.ID);
else
Display("Channel %d has no clip on it at the moment", i);
}
will display information about clips playing on each audio channel.
Compatibility: Supported by AGS 3.5.0 and later versions.
See also: Game.AudioClips
AudioClip.FileType
readonly AudioFileType AudioClip.FileType;
Gets the file type of this audio clip. This is useful in conjunction with the PlayFrom and Seek commands to determine what the position offset represents.
Example:
if (aExplosion.FileType == eAudioFileMIDI)
{
Display("Explosion is a MIDI file!");
}
displays a message if aExplosion is a MIDI file
Compatibility: Supported by AGS 3.2.0 and later versions.
See also: AudioChannel.Seek
,
AudioChannel.Position
,
AudioClip.PlayFrom
AudioClip.IsAvailable
(Formerly known as IsMusicVoxAvailable
, which is now obsolete)
readonly bool AudioClip.IsAvailable;
Gets whether this audio clip is available on the player's system.
This will normally be true, unless the clip was bundled in the external AUDIO.VOX file and the player does not have the file on their system.
You do not normally need to check this property, since the Play command will silently fail if it cannot find the audio clip to play.
Example:
if (aExplosion.IsAvailable)
{
aExplosion.Play();
}
checks if the aExplosion audio clip is available, and if so plays it.
Compatibility: Supported by AGS 3.2.0 and later versions.
See also: AudioClip.Play
AudioClip.ScriptName
readonly String AudioClip.ScriptName
Gets the script name of the audio clip, which serves as a unique identifier, as set in the AGS Editor.
This may be useful if you have a pointer to some clip stored in your variable, and want to know what it actually is. Normally you don't need a script name, as you have an automatic global variable for each clip in the game, but sometimes you may want to save its script name as a text either to display it somewhere for testing purposes, or keep as a reference. You may later use AudioClip.GetByName function to retrieve the clip by the previously saved script name.
Example:
function CustomPlay(this AudioClip*)
{
this.Play();
System.Log(eLogInfo, "Playing audio clip: %s", this.ScriptName);
}
Playing a clip using the CustomPlay()
method, like aExampleClip.CustomPlay()
, will log it's script name for debugging purposes.
Compatibility: Supported by AGS 3.6.1 and later versions.
See also: AudioClip.GetByName
,
Game.AudioClips
AudioClip.Type
readonly AudioType AudioClip.Type;
Gets the type of this audio clip, as initially set in the editor.
The AudioType allows you to group audio clips into areas such as Sound and Music.
Example:
if (aExplosion.Type == eAudioTypeMusic)
{
Display("Explosion is music!");
}
displays a message if the aExplosion clip is music.
Compatibility: Supported by AGS 3.2.0 and later versions.
See also: AudioClip.Play
,
Game.IsAudioPlaying