RANDOM USER PROJECTS
Code3D is a tool for creating virtual training scenarios.
Flight Simulator, created by Carnegie Mellon students
Disney Pinball: real physics and cool settings

Panda3D Manual: Loading and Playing Sounds and Music

Contents

Architecture

The implementation of the sound system in Panda3d allows for a division of audio into two categories - Sound Effects and Music. This division is only a convenience for programmers as Panda3d allows these two audio groups to be treated individually. These differences are explained on the next page.

Basics

Loading a Sound

Loading sound is done through the Loader class by supplying the path to the sound file as a parameter for loadSfx(). Here's an example:

base = ShowBase()
mySound = base.loader.loadSfx("path/to/sound_file.ogg")

These will return an object of the type AudioSound. It is necessary to put the extension in the sound filename.


Playing/Stopping a Sound

To play sounds you can do the following:

mySound.play()

To stop a sound:

mySound.stop()


Querying Sound Status

To check the status of a sound, call status():

status = mySound.status()

status() returns a constant depending on the status of the sound:

Constant Status
AudioSound.BAD The sound is not working properly.
AudioSound.READY The sound is not currently playing and is ready to be played on command.
AudioSound.PLAYING The sound is currently playing.

Example usage of this would be to stop a sound from playing only if it's currently playing.

if mySound.status() == mySound.PLAYING:
mySound.stop()

Setting Volume

The volume can be set between 0 and 1 and will linearly scale between these.

mySound.setVolume(0.5)


Panning a Sound

You can change the balance of a sound. The range is between -1.0 to 1.0. Hard left is -1.0 and hard right is 1.0.

mySound.setBalance(-0.5)

Extra Note

[python] If Panda3D is running from an interactive prompt, update() after you play a sound.


base.sfxManagerList[n].update()

This is because the update() command is called every frame to reset a sound's channel.

In interactive mode, Panda3D's frame update is suspended and does not run automatically.