engine.sound Functions
Controls the general sound settings, such as volume, speed of sound, the Doppler factor, sound adaptation and sound mixer channels. Settings can be loaded from a *.sound file or changed by the corresponding functions below.
In the *.sound file, the sound settings are stored in the <sound> section, for example:
<?xml version="1.0" encoding="utf-8"?>
<settings version="2.5.0.1">
<sound>
<scale>1</scale>
<volume>0.8458</volume>
<doppler>1</doppler>
<velocity>340.3</velocity>
<adaptation>0.01</adaptation>
<attenuation>3</attenuation>
<hrtf>0</hrtf>
<source source="0" limit="2"/>
<source source="1" limit="4"/>
<source source="2" limit="4"/>
<source source="4" volume="0.4"/>
</sound>
</settings>
Usage Example
The following example shows how to load sound settings from the *.sound file, change them and then save back to the sound settings file.
#include <core/unigine.h>
AmbientSource source;
int init() {
// load sound settings from a file
engine.sound.loadSettings("sound_settings.sound");
// create a sound source that plays a sample
source = new AmbientSource("ambient_source.oga",1);
source.setLoop(1);
source.play();
return 1;
}
int update() {
// enable/disable sounds in the scene
if (engine.app.clearKeyState('z')) {
engine.sound.setEnabled(!engine.sound.isEnabled());
log.message("The enabled flag is %d\n", engine.sound.isEnabled());
}
// print the current speed of sound
if (engine.app.clearKeyState('c')) {
log.message("Sound velocity: %f\n", engine.sound.getVelocity());
}
// make the sound louder
if (engine.app.clearKeyState('n')) {
if (engine.sound.getVolume() != 1.0f) engine.sound.setVolume(engine.sound.getVolume() + 0.1f);
log.message("The sound is louder %f\n", engine.sound.getVolume());
}
// make the sound quieter
if (engine.app.getKeyState('m')) {
if (engine.sound.getVolume() > 0.0f) engine.sound.setVolume(engine.sound.getVolume() - 0.1f);
log.message("The sound is quieter %f\n", engine.sound.getVolume());
}
return 1;
}
int shutdown() {
// save the sound settings into the file
engine.sound.saveSettings("sound_settings.sound",1);
source.clearPtr();
return 1;
}
Sound Class
Members
void engine.sound.setAdaptation(float adaptation)
Sets sound occlusion with the specified adaptation time.Arguments
- float adaptation - Time for sound adaptation to a filter, used when the sound source becomes occluded or other way round.
float engine.sound.getAdaptation()
Returns the current time set for sound adaptation, that is used when the sound source becomes occluded or other way round.Return value
Time for sound adaptation to a filter.void engine.sound.setAttenuation(int attenuation)
Sets the specified sound attenuation mode. Attenuation is the ability of a sound to lower in volume as the player moves away from it.Arguments
- int attenuation - One of the SOUND_ATTENUATION_* variables. The default value is SOUND_ATTENUATION_LINEAR_CLAMPED.
int engine.sound.getAttenuation()
Returns the current sound attenuation mode.Return value
One of the SOUND_ATTENUATION_* variables.void engine.sound.setData(string data)
Sets user data associated with the world. This string is written directly into a *.world file, into the data child tag of the sound tag, for example:<world version="1.21">
<sound>
<data>User data</data>
</sound>
</world>
Arguments
- string data - New user data. Data can contain an XML formatted string
string engine.sound.getData()
Returns user string data associated with the world. This string is written directly into the data tag of the *.world file, into the data child tag of the sound tag, for example:<world version="1.21">
<sound>
<data>User data</data>
</sound>
</world>
Return value
User data. Data can contain an XML formatted string.void engine.sound.setDoppler(float doppler)
Sets the Doppler factor. By default, it is set to 1.0f.Arguments
- float doppler - Doppler factor.
float engine.sound.getDoppler()
Returns the current Doppler factor. The default value is 1.0f.Return value
Doppler factor.void engine.sound.setEnabled(int enabled)
Enables or disables all sounds in the scene.Arguments
- int enabled - 1 to enable all sounds, 0 to disable them.
int engine.sound.isEnabled()
Returns a value indicating if sounds in the scene are enabled.Return value
1 if sounds are enabled; otherwise, 0.void engine.sound.setHRTF(int hrtf)
Enables or disables the HRTF (Head Related Transfer Function) mode. This mode provides imitation of the surround sound for the stereo wired headset.Arguments
- int hrtf - 1 to enable binaural sound; 0 to disable it.
int engine.sound.isHRTF()
Returns a value indicating if the binaural HRTF (Head Related Transfer Function) sound is enabled. An HRTF provides imitation of the surround sound for the stereo wired headset.Return value
1 if the binaural sound is enabled; otherwise, 0.void engine.sound.setScale(float scale)
Set the time scale for the sound playing.Arguments
- float scale - Sound time scale. The provided value is clamped in the range [0; 2].
float engine.sound.getScale()
Returns the current time scale for the sound playing.Return value
Sound time scale.void engine.sound.setSourceLimit(int mixer, int limit)
Limits the number of simultaneously played sound sources per one mixer channel.Arguments
- int mixer - Number of the mixer channel (from 0 to 31).
- int limit - The maximum number of sound sources that can be played simultaneously.
int engine.sound.getSourceLimit(int mixer)
Returns the current number of simultaneously played sound sources per one mixer channel.Arguments
- int mixer - Number of the mixer channel (from 0 to 31).
Return value
The maximum number of sound sources that can be played simultaneously.void engine.sound.setSourceVolume(int mixer, float volume)
Sets the volume of the specified mixer channel.Arguments
- int mixer - Number of the mixer channel (from 0 to 31).
- float volume - Channel volume. The provided value is clamped within [0;1] range, where 0 means muted sound and 1 is the maximum volume.
float engine.sound.getSourceVolume(int source)
Returns the current volume of the specified mixer channel.Arguments
- int source - Number of the mixer channel (from 0 to 31).
Return value
Volume of the specified mixer channel. The returning value is in range [0;1], where 0 means muted sound and 1 is the maximum volume.float engine.sound.getTotalTime()
Returns the total time of asynchronous loading sounds.Return value
The total time value, milliseconds.void engine.sound.setVelocity(float velocity)
Sets the sound velocity (the speed of sound). By default, it is set to 343.3f.Arguments
- float velocity - Sound velocity.
float engine.sound.getVelocity()
Returns the current sound velocity (the speed of sound). The default velocity is 343.3f.Return value
Sound velocity.void engine.sound.setVolume(float volume)
Sets the sound volume. By default, it is set to 1.0f.Arguments
- float volume - Sound volume. 0 means the muted sound, 1 means the maximum volume.
float engine.sound.getVolume()
Returns the current sound volume. The default value is 1.0f.Return value
Sound volume. 0 means the muted sound, 1 means the maximum volume.int engine.sound.loadSettings(string name)
Loads the sound settings from the given file.Arguments
- string name - Path to a sound settings file (*.sound).
Return value
1 if the sound settings are loaded successfully; otherwise, 0.int engine.sound.loadWorld(Xml xml)
Loads a sound state from the Xml. The sound state includes such settings as the volume, velocity, adaptation, Doppler factor, time scale and number of sound sources and their volumes.Arguments
- Xml xml - Xml node.
Return value
1 if the sound state is loaded successfully; otherwise, 0.void engine.sound.renderWorld(int force)
Forces update of the sound system: all sound settings will be applied at once (such as play, stop events and change of parameters). A sound system has its own fixed frame rate (30 fps), while a script update rate can be much higher, which sometimes cause commands being skipped, unless a forced update is used. For example, if you have a sound sample playing and you want to update the time, from which the sample should be played, you need to perform as follows:AmbientSource sound = new AmbientSource("ambient_sample.oga");;
// ...
// check if the sound sample is playing
if(sound.isPlaying()) {
// stop playing the sample
sound.stop();
// force updating of the sound thread
engine.sound.renderWorld(1);
// update time
sound.setTime(45.0f);
// continue playing the sample
sound.play();
}
Arguments
- int force - 1 to force update of the sound system; otherwise, 0.
int engine.sound.restoreState(Stream stream)
Restores a sound state from the stream. The sound state includes such settings as the volume, velocity, adaptation, Doppler factor, time scale and number of sound sources and their volumes.This function is deprecated and will be removed in the next release.
Arguments
- Stream stream - Stream to restore the state from.
Return value
1 if the sound state is restored successfully; otherwise, 0.int engine.sound.saveSettings(string name, int force = 0)
Saves the current sound settings to the given file.Arguments
- string name - Path to a sound settings file (*.sound).
- int force - Force flag indcating if forced saving of sound settings is enabled.
Return value
1 if the sound settings are saved successfully; otherwise, 0.int engine.sound.saveState(Stream stream)
Saves a sound state into the stream. The sound state includes such settings as the volume, velocity, adaptation, Doppler factor, time scale and number of sound sources and their volumes.This function is deprecated and will be removed in the next release.
Arguments
- Stream stream - Stream to save the state into.
Return value
1 if the sound state is saved successfully; otherwise, 0.int engine.sound.saveWorld(Xml xml, int force = 0)
Saves a sound state into the given Xml node. The sound state includes such settings as the volume, velocity, adaptation, Doppler factor, time scale and number of sound sources and their volumes.Arguments
- Xml xml - Xml node.
- int force - Force flag indicating if forced saving of the sound state is enabled.
Return value
1 if the sound state is saved successfully; otherwise, 0.int SOUND_ATTENUATION_EXPONENT
Description
Exponential distance rolloff model, modeling an exponential dropoff in gain as distance increases between the source and listener.int SOUND_ATTENUATION_EXPONENT_CLAMPED
Description
Exponential Distance clamped model.int SOUND_ATTENUATION_INVERSE
Description
Inverse distance rolloff model.int SOUND_ATTENUATION_INVERSE_CLAMPED
Description
Inverse distance clamped model.int SOUND_ATTENUATION_LINEAR
Description
Linear distance rolloff model.int SOUND_ATTENUATION_LINEAR_CLAMPED
Description
Linear distance clamped model.int SOUND_NUM_SOURCES
Description
Number of sound sources.int SOUND_REVERB_DISABLED
Description
Reverberation is disabled.int SOUND_REVERB_MULTIPLE
Description
Multiple-environment reverberation.int SOUND_REVERB_SINGLE
Description
Single-environment reverberation.Last update: 2018-08-10
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)