PinWright
← All text formats

MetaSound graphs

MSIR
Read as text

A MetaSound is a binary node graph: oscillators, envelopes, mixers and math nodes, plus the graph's inputs, outputs, variables and interfaces. You normally read it by tracing the MetaSound editor canvas. MSIR writes the whole graph out as one flat text of nodes and wires that you can read top to bottom and compare between versions. It works on MetaSound Sources and Patches, and it is read-only. Writing text back is planned.

What it gives you

Diffable in version control
The same text is saved in asset dumps as msir.txt, so a signal-chain change shows up as a few changed lines in a pull request. git log -p and grep both work on it.
Reviewable like code
You read which node feeds which, what each graph input defaults to, and where each wire goes. Reviewing a procedural audio graph becomes reviewing a diff.
Readable for your assistant
Your assistant can't see a node graph, but it can read text. MSIR gives it a compact snapshot of the whole graph, so it reasons about your real audio wiring instead of guessing from asset names.
Faithful and consistent
The live read and the msir.txt file are built the same way, so they never drift apart. Each node type carries its version (v=Major.Minor), and node positions are kept as @(x, y). Anything that can't be resolved, such as a missing node type or a broken wire, is reported as a warning.

What the text looks like

A small motor-loop source: one graph input drives a sine oscillator into a gain multiply, which feeds the graph’s audio output.

msir
metasound MS_MotorLoop kind=MetaSoundSource {
  interface `UE.Source.OneShot` v=1.0
  input Float RPM = 5000.0
  output Audio Out
  node n1 = `UE.Sine` v=1.0 @(-320, 16) { Frequency: 220.0 }
  node n2 = `UE.Multiply` v=1.0 @(-96, 32)
  wire $RPM -> n1.Frequency
  wire n1.Audio -> n2.PrimaryOperand
  wire n2.Output -> $Out
}

Graph inputs and outputs start with $, nodes get local names n1, n2…, and each node type is written as Namespace.Name with its version.

How to ask for it

Ask about the graph. Your assistant reads it as text and answers or plans from the wiring. Reading doesn't change the asset. More examples are on the Sound and audio page.

exampleSound and audio
You: In MS_MotorLoop, what drives the Sine node's frequency and where does the mix go?

The RPM graph input drives the Sine node's frequency. The Sine output goes
through a Multiply node to the graph's audio output.

Read-only

MSIR reads MetaSound Sources and Patches as text for review and for your assistant's context. Writing it back is planned. Today your assistant changes MetaSound graphs with its regular MetaSound editing tools. Check the text against your own asset before you rely on it.