Toast Engine
Loading...
Searching...
No Matches
audio::AudioSystem Class Reference

Central FMOD system manager. More...

#include <audio_system.hpp>

Public Member Functions

void tick () noexcept
auto loadBank (assets::Handle< assets::AudioBank > bank) const -> std::pair< FMOD_STUDIO_BANK *, std::vector< std::string > >
void unloadBank (FMOD_STUDIO_BANK *) const
void updateListenerAttributes (int id, glm::vec3 pos, glm::vec3 velocity, glm::vec3 forward, glm::vec3 up, std::optional< glm::vec3 > attenuation_override)
void updateListenerWeight (int id, float weight)
void setListenerPosition (int index, glm::vec3 pos)
auto listenerPositions () const -> const std::vector< glm::vec3 > &
void registerListener (toast::AudioListener &listener)
void unregisterListener (toast::AudioListener &listener)
void registerVolume (toast::AudioVolume &volume)
void unregisterVolume (toast::AudioVolume &volume)
void playEvent (std::string_view guid_str)
void stopEvent (std::string_view guid_str, bool allow_fadeout)
void pauseEvent (std::string_view guid_str, bool value)
void setParameter (std::string_view guid_str, std::string_view name, float value)
void setParameter (std::string_view guid_str, std::string_view name, bool value)
void setVolume (std::string_view guid_str, float volume)
void setPitch (std::string_view guid_str, float pitch)
auto isEventPlaying (std::string_view guid_str) -> bool
void setVcaVolume (std::string_view guid_str, float volume)
void setBusVolume (std::string_view guid_str, float volume)
void setPortVolume (std::string_view guid_str, float volume)
void setSnapshotIntensity (std::string_view guid_str, float intensity)
void setSnapshotEnabled (std::string_view guid_str, bool enabled)
auto playEvent3D (std::string_view guid_str) -> uint64_t
void stopEvent3D (uint64_t instance_id, bool allow_fadeout)
void set3DAttributes (uint64_t instance_id, const glm::vec3 &pos, const glm::vec3 &vel, const glm::vec3 &fwd, const glm::vec3 &up)
void set3DMinMaxDistance (uint64_t instance_id, float min_distance, float max_distance)
void pauseEvent (uint64_t instance_id, bool value)
void setParameter (uint64_t instance_id, std::string_view name, float value)
void setParameter (uint64_t instance_id, std::string_view name, bool value)
void setVolume (uint64_t instance_id, float volume)
void setPitch (uint64_t instance_id, float pitch)
auto isEventPlaying (uint64_t instance_id) -> bool
void set3DOverrideAttenuation (uint64_t instance_id, float min_distance, float max_distance)
void keyOffEvent (uint64_t instance_id)
auto getTimelinePosition (uint64_t instance_id) -> int
void setTimelinePosition (uint64_t instance_id, int ms)
void setParameterByID (uint64_t instance_id, FMOD_STUDIO_PARAMETER_ID id, float value)
auto getPlaybackState (uint64_t instance_id) -> FMOD_STUDIO_PLAYBACK_STATE
auto getRawInstance (uint64_t instance_id) -> FMOD_STUDIO_EVENTINSTANCE *

Static Public Member Functions

static auto get () noexcept -> AudioSystem &
static void generateIntermediates (const std::filesystem::path &path)
 Reads a strings bank's GUID/path table into cache://fmod/audio.json for the editor's importer.

Detailed Description

Central FMOD system manager.

Maintains two instance models: 2D events share one FMOD instance per GUID (since you rarely play the same 2D event multiple times overlapping), while 3D events get a unique uint64 handle returned per play() call so you can track them independently. Listeners and volumes register themselves to coordinate spatial audio state each frame

Member Function Documentation

◆ generateIntermediates()

void audio::AudioSystem::generateIntermediates ( const std::filesystem::path & path)
static

Reads a strings bank's GUID/path table into cache://fmod/audio.json for the editor's importer.

Note
Static, on a throwaway FMOD system: it runs before a project has any banks, and must not touch the live one

The documentation for this class was generated from the following files:
  • engine/src/toast/audio/audio_system.hpp
  • engine/src/toast/audio/audio_system.cpp