SCIR
A SoundCue is a tree of audio nodes — wave players, modulators, mixers, attenuation — that normally exists only as a binary .uasset you can inspect by opening the SoundCue editor and clicking through the graph. SCIR decompiles that same graph into a compact, indented block of text: the cue's volume and pitch, its node tree with each node's type, position, and resolved properties, all in one readable snapshot you can diff, review, and hand to an assistant.
Why it matters
Diffable in version control
A binary cue changes and Git shows you one line: "binary files differ." Decompile it to SCIR and a review shows exactly which node moved, which wave was swapped, or which pitch range changed.
Reviewable like code
The whole node tree fits on a screen as indented text. A reviewer reads the signal path top to bottom without launching the editor or navigating a graph canvas.
Context an AI can actually read
An assistant cannot open a SoundCue graph, but it can read SCIR. Decompiling a cue gives your assistant the full structure as text so it can answer questions, spot regressions, or explain what the cue does.
Faithful and deterministic
SCIR is built from the live cue via the same builders as the asset-dump sidecars, walking the node tree in order and resolving properties from reflection. The same cue produces the same text, and unreachable nodes surface as warnings.
A taste
A modulator feeding a wave player, decompiled from a cue:
sound_cue "/Game/Audio/SC_DroneMotor.SC_DroneMotor" {
volume 0.75
pitch 1
root modulator Modulator_0 @(0, 0) (PitchMin: 0.9, PitchMax: 1.1, VolumeMin: 0.8, VolumeMax: 1) {
child wave_player WavePlayer_0 @(-208, 16) (wave: "/Game/Audio/Motor.Motor", duration: 2.5, numChannels: 1, sampleRate: 48000)
}
}
Each line is a node: a role (root, child), the node type, its name, its graph position @(x, y), and the resolved fields in parentheses. Indentation is the child relationship.
How your assistant uses it
Because SCIR is decompile-only, the assistant reads a cue as text and reasons about it — it never writes the asset back. One call returns the IR:
call("audio.authoring.decompile_sound_cue", {
assetPath: "/Game/Audio/SC_DroneMotor"
})
The result carries the decompiled graph in its ir field plus a warnings array (for example, nodes referenced more than once, or a cue with no root). Feed the ir text into a review, a diff, or the assistant's context.