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)