The lovr.audio module is responsible for playing sound effects and music. To play a sound, create a Source object and call Source:play on it. Currently ogg, wav, and mp3 audio formats are supported.


Sources are objects that represent a single sound instance.

lovr.audio.newSourceCreate a new Source.


The listener is a virtual object in 3D space that "hears" all the sounds that are playing. It can be positioned and oriented in 3D space, which controls how Sources in the world are heard. Usually this would be locked to the headset pose.

lovr.audio.getOrientationGet the orientation of the listener.
lovr.audio.getPoseGet the pose of the listener.
lovr.audio.getPositionGet the position of the listener.
lovr.audio.getSpatializerGet the name of the active spatializer
lovr.audio.getVolumeGet the master volume.
lovr.audio.setGeometrySet the geometry for audio effects.
lovr.audio.setOrientationSet the orientation of the listener.
lovr.audio.setPoseSet the pose of the listener.
lovr.audio.setPositionSet the position of the listener.
lovr.audio.setVolumeSet the master volume.


It's possible to list the available audio devices on the system, and pick a specific device to use for either playback or capture. Devices can also be manually started and stopped. Other useful features of lovr.audio.setDevice include the ability to stream all audio data to a custom sink and the option to create a device in exclusive mode for higher performance. By default, the default playback device is automatically initialized and started, but this can be configured using lovr.conf.

lovr.audio.getDevicesGet a list of audio devices.
lovr.audio.getSampleRateGet the playback device sample rate.
lovr.audio.isStartedCheck if an audio device is started.
lovr.audio.setDeviceSwitch audio devices.
lovr.audio.startStart an audio device.
lovr.audio.stopStop an audio device.