Skip to content

Node Types ​

LLMMetaSound supports all MetaSound node types discovered from the INodeClassRegistry.

Schema File: Plugins/LLMMetaSound/Config/Schemas/LLMMetaSoundSchema.llmmetasoundschema


Asset Types ​

The top-level AssetType field ("Source" or "Patch") is authoritative — when present it takes precedence over the legacy Metadata.NodeType. Both spellings work; new authoring should use AssetType.

Source (UMetaSoundSource) ​

UMetaSoundSource with transport (OnPlay trigger, auto-connected).

json
{
  "AssetType": "Source",
  "Metadata": {
    "NodeName": "MySound",
    "MetasoundDescription": "My custom sound"
  }
}

Patch (UMetaSoundPatch) ​

UMetaSoundPatch — pure DSP patch / subgraph without transport.

json
{
  "AssetType": "Patch"
}

Channel Layout (OutputFormat) ​

OutputFormat declares the source's channel layout: "Mono" (default), "Stereo", "Quad", "5dot1", "7dot1". Set it when a node publishes more than one audio output (e.g. a stereo mixer's Out L / Out R) — otherwise a stereo graph on a mono source silently drops a channel.


Graph Structure ​

json
{
  "AssetType": "Source",
  "Metadata": {
    "NodeName": "TriangleSub",
    "MetasoundDescription": "Triangle wave with sub-octave"
  },
  "Inputs": [
    { "Name": "Gain", "TypeName": "Primitive:Float" },
    { "Name": "Frequency", "TypeName": "Primitive:Float" }
  ],
  "Outputs": [
    { "Name": "Audio", "TypeName": "Primitive:Float" }
  ],
  "Nodes": [
    { "NodeID": 1, "ClassName": "Triangle", "ClassPath": "UE.Triangle.Audio", "Name": "MainOsc", "InputDefaults": {} },
    { "NodeID": 2, "ClassName": "Envelope Follower", "ClassPath": "UE.Envelope Follower", "Name": "AmpEnv", "InputDefaults": {} }
  ],
  "Edges": [
    { "FromNodeID": 1, "FromPinName": "Audio", "ToNodeID": 2, "ToPinName": "In" }
  ]
}

Node Fields ​

FieldTypeDescription
NodeIDintUnique integer ID referenced by edges
ClassNamestringMetaSound node class (e.g., "Oscillator", "Triangle")
NamestringDisplay name for the node
LocationobjectX, Y position in graph editor
InputDefaultsobjectDefault values for input pins

Input Default Format ​

json
"InputDefaults": {
  "Frequency": { "LiteralType": "Float", "AsFloat": 440.0 },
  "Enable": { "LiteralType": "Boolean", "AsBool": true }
}

Literal Types ​

LiteralTypeFieldDescription
FloatAsFloatFloat value
BooleanAsBoolBoolean value
IntAsIntInteger value
StringAsStringString value

Edge Format ​

json
"Edges": [
  { "FromNodeID": 1, "FromPinName": "Audio", "ToNodeID": 2, "ToPinName": "In" }
]
FieldTypeDescription
FromNodeIDintSource node ID
FromPinNamestringSource pin name, resolved against the engine's live vertex list
ToNodeIDintTarget node ID
ToPinNamestringTarget pin name, resolved against the engine's live vertex list
FromVertexID / ToVertexIDintDeprecated legacy pin indices — used only when the corresponding *PinName is empty

Pin names are stable across UE versions and self-document intent (e.g. Audio, In, Out, Audio Envelope). Prefer them for new authoring.


Node Categories ​

Generators ​

ClassNameDescription
TriangleTriangle wave oscillator
SawSawtooth wave oscillator
SquareSquare wave oscillator
NoiseWhite noise generator
LFOLow frequency oscillator

Filters ​

ClassNameDescription
Ladder FilterLadder filter (LP/HP/BP)
BiquadBiquad filter
OnePoleOne-pole filter

Envelopes ​

ClassNameDescription
Envelope FollowerAmplitude envelope
ADSRAttack-Decay-Sustain-Release envelope

Effects ​

ClassNameDescription
DelayDelay effect
ReverbReverb effect
ChorusChorus effect
CompressorDynamics compressor

Mix ​

ClassNameDescription
GainVolume/gain control
MixerMulti-channel mixer
MonoToStereoMono to stereo conversion
StereoToMonoStereo to mono conversion

Utility ​

ClassNameDescription
OutputGraph output node
SplitSignal splitter
MergeSignal merger

Common Patterns ​

Simple Oscillator with Envelope ​

json
{
  "AssetType": "Source",
  "Metadata": {
    "NodeName": "TriangleSub",
    "MetasoundDescription": "Triangle wave with envelope"
  },
  "Inputs": [],
  "Outputs": [],
  "Nodes": [
    { "NodeID": 1, "ClassName": "Triangle", "ClassPath": "UE.Triangle.Audio", "Name": "MainOsc", "InputDefaults": { "Frequency": { "LiteralType": "Float", "AsFloat": 110.0 } } },
    { "NodeID": 2, "ClassName": "Envelope Follower", "ClassPath": "UE.Envelope Follower", "Name": "AmpEnv", "InputDefaults": { "Enable": { "LiteralType": "Boolean", "AsBool": true } } }
  ],
  "Edges": [
    { "FromNodeID": 1, "FromPinName": "Audio", "ToNodeID": 2, "ToPinName": "In" }
  ]
}

Oscillator → Filter → Envelope ​

json
{
  "AssetType": "Source",
  "Metadata": {
    "NodeName": "SawDiscord",
    "MetasoundDescription": "Sawtooth with filter"
  },
  "Inputs": [],
  "Outputs": [],
  "Nodes": [
    { "NodeID": 1, "ClassName": "Saw", "ClassPath": "UE.Saw.Audio", "Name": "SawOsc", "InputDefaults": { "Frequency": { "LiteralType": "Float", "AsFloat": 175.0 } } },
    { "NodeID": 2, "ClassName": "Ladder Filter", "ClassPath": "UE.Ladder Filter.Audio", "Name": "HPF", "InputDefaults": {} },
    { "NodeID": 3, "ClassName": "Envelope Follower", "ClassPath": "UE.Envelope Follower", "Name": "AmpEnv", "InputDefaults": { "Enable": { "LiteralType": "Boolean", "AsBool": true } } }
  ],
  "Edges": [
    { "FromNodeID": 1, "FromPinName": "Audio", "ToNodeID": 2, "ToPinName": "In" },
    { "FromNodeID": 2, "FromPinName": "Out", "ToNodeID": 3, "ToPinName": "In" }
  ]
}

Graph Interface (with Inputs/Outputs) ​

json
{
  "AssetType": "Source",
  "Metadata": {
    "NodeName": "ModularSynth"
  },
  "Inputs": [
    { "Name": "Gain", "TypeName": "Primitive:Float" },
    { "Name": "Frequency", "TypeName": "Primitive:Float" }
  ],
  "Outputs": [
    { "Name": "Audio", "TypeName": "Primitive:Float" }
  ],
  "Nodes": [
    { "NodeID": 1, "ClassName": "Triangle", "Name": "Osc", "InputDefaults": {} }
  ],
  "Edges": []
}

Powered by VitePress