Audio

Reference for the Audio class, which loads and controls playback of sound clips.

Audio

Audio(sound_file_name='', volume=1, pitch=1, balance=0, loop=False, loops=1, autoplay=True, auto_destroy=False, **kwargs)

Located in ursina/audio.py

Overview

Audio is an Entity subclass that loads a sound file and offers playback control, volume, pitch, looping, panning and fade effects. It can auto‑play on creation and optionally remove itself when finished.

Constructor Arguments

ArgumentTypeDefaultDescription
sound_file_namestr''Name or path of the audio file (omit extension to auto‑detect).
volumefloat1Initial volume multiplier.
pitchfloat1Playback pitch (speed).
balancefloat0Stereo pan (–0.5 left to +0.5 right).
loopboolFalseIf True, play repeatedly.
loopsint1Number of times to repeat when loop=False.
autoplayboolTrueIf True, start playback immediately.
auto_destroyboolFalseIf True, destroy the entity when playback ends.
**kwargsanyOther Entity attributes (position, parent, etc.).

Class Fields

NameTypeDefaultDescription
Audio.volume_multiplierfloat0.5Global volume scale applied to all Audio instances.
._clipanysound_file_nameLoaded sound clip object.
._volumefloatvolumeEffective playback volume.
._pitchfloatpitchEffective playback pitch.
._balancefloatbalanceEffective stereo pan.
._loopboolloopLoop flag.
._autoplayboolautoplayAutoplay flag.
._auto_destroyboolauto_destroyAuto‑destroy flag.

Properties

PropertyDescription
.volumeGet or set playback volume.
.pitchGet or set playback pitch.
.loopGet or set loop flag.
.loopsGet or set repeat count.
.clipGet or set the loaded sound clip.
.lengthDuration of the clip in seconds.
.statusPlayback status ('playing', 'paused', 'stopped').
.readyTrue when clip has loaded and is ready to play.
.playingTrue while audio is actively playing.
.timeCurrent playback time in seconds.
.balanceGet or set stereo pan.

Methods

MethodDescription
play(start=0)Start playback at start seconds into the clip.
pause()Pause playback, retaining current time.
resume()Resume from paused position.
stop(destroy=True)Stop playback. If destroy=True, destroy entity.
fade(value, duration=0.5, delay=0, curve=curve.in_expo, ...)Animate volume to value over duration seconds after delay.
fade_in(value=1, duration=0.5, delay=0, ...)Shortcut to fade from 0 to value.
fade_out(value=0, duration=0.5, delay=0, ...)Shortcut to fade from current volume to 0.

Example Usage

from ursina import Ursina, Audio
import random

app = Ursina()

# create a looping sine tone at half volume
a = Audio('sine', loop=True, autoplay=True)
a.volume = 0.5

def input(key):
    if key == 'space':
        # play a new tone with random pitch
        Audio('sine', pitch=random.uniform(0.5, 1), loop=True)

app.run()