tiramisu/audio

Types

Type of audio (global or positional)

pub type Audio {
  GlobalAudio(buffer: AudioBuffer, config: AudioConfig)
  PositionalAudio(
    buffer: AudioBuffer,
    config: AudioConfig,
    ref_distance: Float,
    rolloff_factor: Float,
    max_distance: Float,
  )
}

Constructors

  • GlobalAudio(buffer: AudioBuffer, config: AudioConfig)

    Global audio (2D, same volume everywhere)

  • PositionalAudio(
      buffer: AudioBuffer,
      config: AudioConfig,
      ref_distance: Float,
      rolloff_factor: Float,
      max_distance: Float,
    )

    Positional audio (3D, volume based on distance)

    Arguments

    ref_distance

    Maximum hearing distance

    rolloff_factor

    How quickly audio fades with distance

    max_distance

    Maximum distance where audio can be heard

Audio buffer type (opaque, wraps Web Audio API AudioBuffer)

pub type AudioBuffer

Audio playback configuration

pub type AudioConfig {
  AudioConfig(
    state: AudioState,
    volume: Float,
    loop: Bool,
    playback_rate: Float,
    fade: FadeConfig,
    group: option.Option(AudioGroup),
    on_end: option.Option(fn() -> Nil),
  )
}

Constructors

  • AudioConfig(
      state: AudioState,
      volume: Float,
      loop: Bool,
      playback_rate: Float,
      fade: FadeConfig,
      group: option.Option(AudioGroup),
      on_end: option.Option(fn() -> Nil),
    )

    Arguments

    state

    Playback state (Playing, Stopped, Paused)

    volume

    Volume (0.0 to 1.0)

    loop

    Whether to loop the audio

    playback_rate

    Playback rate (1.0 = normal speed)

    fade

    Fade configuration for state transitions

    group

    Audio group for volume control (optional)

    on_end

    Callback when audio ends (for non-looping audio)

Audio group categories for volume control

pub type AudioGroup {
  SFX
  Music
  Voice
  Ambient
  Custom(String)
}

Constructors

  • SFX

    Sound effects (footsteps, gunshots, etc.)

  • Music

    Background music

  • Voice

    Voice lines and dialogue

  • Ambient

    Ambient sounds (wind, rain, etc.)

  • Custom(String)

    Custom group with a name

Opaque handle to a THREE.Audio or THREE.PositionalAudio object

pub type AudioSource

Audio playback state

pub type AudioState {
  Playing
  Stopped
  Paused
}

Constructors

  • Playing

    Audio is playing

  • Stopped

    Audio is stopped (reset to beginning)

  • Paused

    Audio is paused (can be resumed)

Fade configuration for smooth transitions

pub type FadeConfig {
  NoFade
  Fade(duration_ms: Int)
}

Constructors

  • NoFade

    No fade (instant transition)

  • Fade(duration_ms: Int)

    Fade in/out over specified milliseconds

Values

pub fn config() -> AudioConfig

Create default audio config (stopped, no fade)

pub fn global(buffer: AudioBuffer, config: AudioConfig) -> Audio

Create global audio (2D, same volume everywhere)

pub fn playing() -> AudioConfig

Create audio config that starts playing

pub fn positional(
  buffer: AudioBuffer,
  config: AudioConfig,
) -> Audio

Create a default positional audio configuration

pub fn with_fade(
  config: AudioConfig,
  duration_ms: Int,
) -> AudioConfig

Set fade configuration

pub fn with_group(
  config: AudioConfig,
  group: AudioGroup,
) -> AudioConfig

Set audio group in config

pub fn with_loop(config: AudioConfig, loop: Bool) -> AudioConfig

Set looping in config

pub fn with_max_distance(audio: Audio, distance: Float) -> Audio

Set maximum distance for positional audio

pub fn with_no_fade(config: AudioConfig) -> AudioConfig

Set no fade (instant transitions)

pub fn with_on_end(
  config: AudioConfig,
  callback: fn() -> Nil,
) -> AudioConfig

Set callback to be called when audio ends (for non-looping audio)

This is useful for one-shot sounds like SFX where you need to know when the sound has finished playing.

Example

audio.config()
|> audio.with_state(audio.Playing)
|> audio.with_on_end(fn() {
  // Audio finished playing
  io.println("SFX finished!")
})
pub fn with_paused(config: AudioConfig) -> AudioConfig

Set audio to paused

pub fn with_playback_rate(
  config: AudioConfig,
  rate: Float,
) -> AudioConfig

Set playback rate in config (1.0 = normal, 2.0 = double speed, etc.)

pub fn with_playing(config: AudioConfig) -> AudioConfig

Set audio to playing

pub fn with_ref_distance(audio: Audio, distance: Float) -> Audio

Set reference distance for positional audio

pub fn with_rolloff_factor(audio: Audio, factor: Float) -> Audio

Set rolloff factor for positional audio

pub fn with_state(
  config: AudioConfig,
  state: AudioState,
) -> AudioConfig

Set playback state (Playing, Stopped, Paused)

pub fn with_stopped(config: AudioConfig) -> AudioConfig

Set audio to stopped

pub fn with_volume(
  config: AudioConfig,
  volume: Float,
) -> AudioConfig

Set volume in config (0.0 to 1.0)

Search Document