Similar to Game Engines like Unity and Unreal, Audio in Omniverse, is location based. This means that in order to play an AudioClip, you need to first attach it to a prim. Once this clip is attached, attributes can be tweaked in order to achieve specific effects.
Play audio clips¶
Play an Audio Clip Once¶
Use a Prim to play an Audio Clip once.
import omni usd_context = omni.usd.get_context() stage = usd_context.get_stage() my_audio_prim = stage.GetPrimAtPath(my_audio_prim_path) my_audio_prim.GetAttribute("loopCount").Set(0) audio = omni.usd.audio.get_stage_audio_interface() audio.spawn_voice(my_audio_prim)
Play a Looping audio clip¶
Use a Prim to play a looping Audio Clip.
audio = omni.usd.audio.get_stage_audio_interface() my_audio_prim.GetAttribute("loopCount").Set(-1) audio.spawn_voice(prim)
Set the loop count¶
loopCount attribute tells the audio engine how many times to loop a sound. The value -1 is used to loop a sound indefinitely, 0 is used to play the audio clip just once, 1 and up plays it n+1 times (where n is the value of loopCount)
Modify Audio Attributes¶
You can programmatically change several attributes of an audio prim. The most common ones to adjust would be pitch (
timeScale) and volume (
gain) which can be dynamically changed as the sound is being played.
Set the Pitch¶
# double the pitch pitch_multiplier = 2.0 my_audio_prim.GetAttribute("timeScale").Set(pitch_multiplier)
Set the Volume¶
# set to half volume volume_multiplier = 0.5 my_audio_prim.GetAttribute("gain").Set(volume_multiplier)