Audio#

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 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#

The 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)

my_audio_prim.GetAttribute("loopCount").Set(-1)

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)