Wire up Roblox's audio graph
audioBuild, connect, and inspect Roblox sound graphs—players, emitters, effects, wires—to find and fix silent setups.
Instructions
Builds and inspects the modern audio API — AudioPlayer, emitters, effects and the Wires between them.
Roblox's modern audio is a signal graph, not one instance with a Play method. An AudioPlayer holds the asset, an AudioEmitter puts the sound in the world or an AudioDeviceOutput sends it to the player's speakers, effects sit in between, and NOTHING is connected until a Wire joins two named pins. A place can hold a perfectly configured AudioPlayer with the right asset and the right volume and be completely silent, with no error anywhere, because the wire was never made. That is what this tool is for: create can make each instance, but the pin names, the direction and the choice of sink are where it actually goes wrong.
graph is the one to reach for: it builds a whole working chain in one undoable step. kind="world" gives a sound that comes from a part; kind="ui" gives one with no position, for menus and music. Add effects to splice reverb, EQ or a fader into the chain.
wire joins two instances you already have. inspect reads an existing graph back and reports every connection — including the ones that report Connected = false, which the Explorer does not show and which are the usual reason for silence.
The old Sound instance still works and is still shorter for a plain one-off noise; use create for that. Come here when the case needs effects, per-listener mixing, or one emitter fed by several sources.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | 'graph' builds a whole working chain, 'wire' joins two existing instances, 'inspect' reads a graph back. | graph |
| to | No | wire only: the instance sound goes INTO. | |
| from | No | wire only: the instance sound comes OUT of. | |
| kind | No | graph only: 'world' is a sound heard from a place — it needs a part to come from. 'ui' has no position: menu clicks, music. Defaults to 'world'. | |
| name | No | graph only: name for the AudioPlayer. | |
| path | No | inspect only: where to look. Omit to walk the whole place, which is the right call when tracking down silence of unknown origin. | |
| asset | No | graph only: the audio id, e.g. "rbxassetid://1234". Find one with `assets op="search" kind="audio"`. Leave it out to build the chain now and set the asset later. | |
| toPin | No | wire only: the target's input pin. Defaults to "Input". A wrong pin name is accepted by the engine and produces silence, so the name is checked against the instance before the wire is made. | |
| parent | No | graph only: where the graph goes. For kind="world" this is the part or attachment the sound comes from. | |
| effects | No | graph only: effect classes to splice between the player and the output, in order, e.g. ["AudioFader", "AudioReverb"]. Also accepts AudioEqualizer, AudioCompressor, AudioEcho, AudioDistortion, AudioPitchShifter, AudioChorus, AudioFlanger and AudioLimiter. | |
| fromPin | No | wire only: the source's output pin. Defaults to "Output", which is right for everything but a channel splitter. | |
| studioId | No | Target Studio; omit for the active one. |