ue5-metasound-dsp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ue5-metasound-dsp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Design MetaSounds audio graphs: choose nodes, wire signal chains, configure DSP parameters, and generate Builder API command sequences.
Audio, Trigger, Float, Int32, Bool, Time, String, WaveAsset, UObject, Enum (+ Array variants)
Type rules: Audio-rate cannot connect to Float. Use correct node variant (e.g., Multiply (Audio) vs Multiply (Float)).
| Type | Use | Interface |
|---|---|---|
| Source | Standalone playable asset | UE.Source.OneShot or MetaSound |
| Patch | Reusable subgraph (no play) | Custom |
| Preset | Parameter overrides of existing Source/Patch | Inherits parent |
MetaSound — Standard audio outputUE.Source.OneShot — OnPlay trigger in, OnFinished trigger outUE.Attenuation — Distance input for volume falloffUE.Spatialization — Azimuth/Elevation for 3D positioningsrc/ue_audio_mcp/knowledge/metasound_catalogue.json, or with the ms_search_nodes and ms_node_info tools. They give the class name (e.g. UE::Biquad Filter::Audio) and the exact, typed pin names that connect expects.list_node_classes (TCP) lists everything the engine has registered, including plugin nodes.scripts/update_catalogue_pins.py).WaveAsset inputs need a real imported sound in the project's Content folder.Sine, Saw, Square, Triangle, Noise, LFO, Additive Synth, SuperOscillator, WaveTable, Perlin Noise
Wave Player (mono), Stereo Wave Player, with loop/pitch shift/concatenation
AD Envelope (Audio-rate), AD Envelope (Float), ADSR Envelope, Crossfade, WaveTable Envelope
Biquad Filter, State Variable Filter, Dynamic Filter, Ladder Filter, One-Pole HPF, One-Pole LPF, Band Splitter, Bitcrusher
Delay, Stereo Delay, Pitch Shift, Diffuser, Grain Delay, Flanger
Compressor, Limiter
Add, Subtract, Multiply, Mix — all have Primary Operand + Operand pins
Add, Subtract, Multiply, Divide, Modulo, Map Range, Clamp, InterpTo, Linear To Log Frequency
Accumulate, Any, Compare, Control, Counter, Delay, Filter, Gate, Once, OnThreshold, OnValueChange, Pipe, Repeat, Route, Sequence
ITD Panner, Stereo Panner, Mid-Side Encode/Decode, Doppler Pitch Shift
Frequency↔MIDI, MIDI Quantizer, Scale to Note Array, BPM to Seconds, Metronome, Quartz Clock
Plate Reverb, Ring Modulator, WaveShaper, Chorus, Phaser
Crossfade, Envelope Follower, Wave Writer, Random Get, Trigger On Threshold
SID Oscillator, SID Envelope, SID Filter, SID Voice, SID Chip
Sine → Multiply(Audio) × AD Envelope → Out MonoSaw → Biquad Filter(LP) → Multiply × ADSR → Out Mono
↑ Cutoff FrequencySine(f) + Sine(2f) + Sine(3f) → Add → Multiply × Envelope → OutOnPlay → Wave Player → Biquad Filter → Compressor → Out
↑ Pitch Shift for variationLFO → Map Range(0-1 → 200-2000) → Biquad Filter CutoffFrom the engine-synced catalogue. Use ms_node_info for any other node.
| Node | Inputs | Outputs |
|---|---|---|
| Sine / Saw / Triangle | Enabled, Bi Polar, Frequency, Modulation, Sync, Phase Offset, Glide, Type | Audio |
| Square | Enabled, Bi Polar, Frequency, Modulation, Sync, Phase Offset, Glide, Type, Pulse Width | Audio |
| Noise | Seed, Type | Audio |
| AD Envelope (Audio/Float) | Trigger, Attack Time, Decay Time, Attack Curve, Decay Curve, Looping, Hard Reset | On Trigger, On Done, Out Envelope |
| ADSR Envelope (Audio/Float) | Trigger Attack, Trigger Release, Attack Time, Decay Time, Sustain Level, Release Time, Attack Curve, Decay Curve, Release Curve, Hard Reset | On Attack Triggered, On Decay Triggered, On Sustain Triggered, On Release Triggered, On Done, Out Envelope |
| Biquad Filter | In, Cutoff Frequency, Bandwidth, Gain, Type | Out |
| State Variable Filter | Cutoff Frequency, Resonance, In, Band Stop Control | Band Pass, Low Pass Filter, High Pass Filter, Band Stop |
| Wave Player (Mono) | Play, Stop, Wave Asset, Start Time, Pitch Shift, Loop, Loop Start, Loop Duration, Maintain Audio Sync | On Play, On Finished, On Nearly Finished, On Looped, On Cue Point, Cue Point ID, Cue Point Label, Loop Percent, Playback Location, Playback Time, Out Mono |
| Multiply / Add (Audio) | PrimaryOperand, AdditionalOperands | Out |
| Map Range (Float) | In, In Range A, In Range B, Out Range A, Out Range B, Clamped | Out Value |
| InterpTo | Interp Time, Target | Value |
| Clamp (Float) | In, Min, Max | Value |
| Compressor | Bypass, Audio, Ratio, Threshold dB, Attack Time, Release Time, Lookahead Time, Knee, Sidechain, Envelope Mode, Analog Mode, Upwards Mode, Wet/Dry | Audio, Gain Envelope |
| ITD Panner | In, Angle, Distance Factor, Head Width | Out Left, Out Right |
| Trigger Repeat | Start, Stop, Period, Num Repeats | RepeatOut |
| Trigger Sequence | In, Reset, Loop | Out 0, Out 1 |
CreateSourceBuilder, CreatePatchBuilder, AddNode, FindNodeInputHandle, FindNodeOutputHandle, ConnectNodes, SetNodeInputDefault, Audition, BuildToAsset
AddGraphInput, AddGraphOutput, RemoveGraphInput, RemoveGraphOutput, GetGraphInputNames
AddInterface, RemoveInterface, IsInterfaceDeclared
AddGraphVariable, AddVariableGetNode, AddVariableSetNode, AddVariableGetDelayedNode
ConvertToPreset, ConvertFromPreset
SetLiveUpdatesEnabled
| Template | Nodes | Pattern |
|---|---|---|
| gunshot | 7 | Random → WavePlayer → Filter → Envelope |
| footsteps | 8 | Surface switch → per-surface chains |
| ambient | 9 | Looped layers + random details + LFO |
| spatial | 6 | ITD Panner + distance processing |
| ui_sound | 5 | Sine + AD Envelope (procedural) |
| weather | 10 | State-driven + crossfade + dynamic filter |
| vehicle_engine | 14 | Trigger Sequence → layered Wave Players |
| sfx_generator | 25 | 7-stage synth (Gen→Spectral→Filter→Amp→FX) |
| preset_morph | 8 | Morph 0-1 → MapRange → filter params |
| macro_sequence | 12 | Graph variables → InterpTo → filter |
| sid_bass/lead/chip_tune | 5-8 | SID nodes for chiptune |
| wind/snare | 6-8 | From Epic tutorial exports |
Templates at: src/ue_audio_mcp/templates/
{
"type": "source",
"interface": "MetaSound",
"nodes": [
{"id": "osc1", "class": "Sine", "defaults": {"Frequency": 440.0}},
{"id": "env1", "class": "AD Envelope", "defaults": {"Attack Time": 0.01, "Decay Time": 0.5}}
],
"connections": [
{"from": "osc1:Audio", "to": "env1:In"}
],
"inputs": [
{"name": "Frequency", "type": "Float", "target": "osc1:Frequency"}
],
"outputs": [
{"name": "Out Mono", "type": "Audio", "source": "env1:Out Envelope"}
]
}Validated by 7-stage validator: required fields, asset_type, interfaces, node types, pin existence, type compatibility, required inputs, interface completeness.
SetNodeLocation() for editor layout visibilityms_validate_graph before sending to Builder APIMultiply (Audio by Float)ms_node_info)Namespace::Name::Variant for direct lookupsrc/ue_audio_mcp/knowledge/metasound_catalogue.json (engine-synced) and metasound_nodes.pysrc/ue_audio_mcp/templates/metasounds/src/ue_audio_mcp/knowledge/graph_schema.pysrc/ue_audio_mcp/tools/metasounds.py (catalogue search), ms_graph.py (templates, validation), ms_builder.py (live Builder API)$ARGUMENTS
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.