Skip to main content

Orchestra

Orchestra is a Roblox audio framework written in Luau that provides a structured, signal-graph-style API for building audio pipelines in Roblox games. It wraps Roblox's native Audio API instances (AudioPlayer, AudioFader, AudioWire, etc.) in composable components that you wire together — similar to a DAW or audio mixing desk.

Overview

Orchestra models audio as a graph of nodes connected by wires. Each node has input/output pins and can be routed to other nodes. This lets you build chains like:

AudioPlayer → AudioFader → AudioEqualizer → AudioDeviceOutput

All cleanup is handled automatically via Trove, and signals use Signal.

Components

Stream (Sources)

Audio sources that produce audio signals.

ComponentDescription
AudioPlayerPlays an audio asset. Supports Play, Pause, Stop, and fires Loaded, Ended, Looped signals.
AudioDeviceInputWraps a microphone / device input.
AudioListenerSpatial audio listener.
AudioTextToSpeechText-to-speech audio source.

Fader

  • AudioFader — Controls volume (0–3) with Set, Tween, FadeIn, FadeOut, and Mute. Tweens return a Signal that fires on completion.
  • AudioMixBus — Same as Fader but intended as a submix bus. Useful for grouping channels (e.g. music bus, SFX bus).

Layer

  • AudioLayer — A convenience wrapper that pairs an AudioStream and AudioFader together and wires them automatically. Use this as the main building block for a single audio channel.

Effects

Effects process the audio signal in-place. All effects support Enable and Disable (via the Roblox Bypass property).

EffectRoblox Instance
EqualizerAudioEqualizer
ReverbAudioReverb
CompressorAudioCompressor
ChorusAudioChorus
DistortionAudioDistortion
EchoAudioEcho
FlangerAudioFlanger
PitchShiftAudioPitchShift
TremoloAudioTremolo
GateAudioGate

Transforms

ComponentDescription
AudioChannelMixerMixes multiple channels into one.
AudioChannelSplitterSplits a signal into multiple channels.

Output

ComponentDescription
AudioDeviceOutputRoutes audio to the player's audio device (speakers/headphones).
AudioEmitter3D spatial audio emitter attached to a part in the world.

Routing & Wire

  • AudioRouting — Manages the input/output pin state for a node. Tracks which wires are connected and exposes helpers like WireTo, ClearPin, GetWiresAtPin.
  • Wire — Wraps Roblox's Wire instance. Created automatically when you call Routing:Wire() or Routing:WireTo().

Installation

Wally Install: COMING SOON

Dependencies

PackageVersion
sleitnick/component2.4.8
sleitnick/trove1.5.1
sleitnick/signal2.0.3
sleitnick/table-util1.2.1
evaera/promise4.0.0

Version

v0.0.1