MetaSounds Reference Guide

Reference for nodes available in the MetaSound Editor.

Windows
MacOS
Linux

MetaSound Graph Overview

The MetaSound Editor is where MetaSounds are created, modified, and previewed. The MetaSound Graph is composed of a variety of nodes and pins, and is analogous to Sound Cues, Blueprints, and the Material Editor Graph.

For Unreal Engine 5 Early Access, MetaSounds come with a full-featured set of nodes, with more to be added in the full release of Unreal Engine 5. New nodes can now also be more easily created with third-party plugins using the existing node API.

At a high level, nodes are categorized into Conversion and Function Nodes. Conversion Nodes handle conversions between different pin types in the MetaSound Graph. These nodes are similar to Blueprint conversion nodes. Function Nodes are all other nodes that do not handle conversions in the graph. These nodes are further categorized based on their specific functionality.

MetaSound Pin Types

In this section, you will learn about the most common pin types found in the MetaSound Nodes.

Trigger Pins

Trigger Pins are analogous to modular synthesis triggers, and are used to execute other nodes. They are similar to nodes with execution pins in Blueprints. However, most Trigger Pins do not require a connection to other nodes in the graph.

MetaSound Trigger Pins are sample-accurate. This means that events triggered through gameplay, which are using Quartz, will be executed on a precise sample index within the audio rendering block. Furthermore, Trigger Pins that are connected to other timing nodes will execute on a precise sample index in the MetaSound audio rendering block.

The MetaSound Graph comes with an On Play Trigger Pin, which executes at the start of a MetaSound playback event.

Audio Pins

Audio Pins are light-pink colored and represent a mono buffer of floats that are equal in size to the audio rendering block of the MetaSound. Usually, Audio Pins represent an actual audio buffer that can be mixed, filtered, attenuated, and panned. In some instances, these pins may be parameters intended to be consumed at audio-rate, such as frequency modulation synthesis.

Time Pins

Time Pins are light-blue colored and represent a time value. In most cases, Time Pins use seconds as their default time unit in the MetaSound Editor. The development team plans to add support for conversions between time units in the future.

Additional nodes will be added in the future to support more conversion types and parameter visualization, such as samples and BPM.

String Pins

String Pins are dark-pink colored and provide functionality for debugging and labeling. These pins are not directly used during MetaSound playback, but are useful for relaying information to the audio designer.

A common use case for String Pins is when using the Wave Player node to read a cue point on a wave file and output the cue point label to the console log.

UObject Pins

Object Pins are dark-blue and represent any UObject type that has been added as a supported type to MetaSounds. Currently, the only UObject type supported is the USoundWave asset type that is used in the Wave Player node.

New UObject types can be added to MetaSounds using C++ code and are not generally available to MetaSounds in the editor.

Array Pins

Array Pins are green and represent an array of pins. MetaSounds support Array Pins for nearly all pin types, with the exception of Trigger Pins.

Array Pins provide concise MetaSound topologies in many use cases. A common use case is when using the Random Get Wave Asset node to select from an array and connect the resulting wave file to a Wave Player node. Using Array pins in this example enables two MetaSounds with different wave assets to have the same topology in the editor.

Common MetaSound Nodes

Wave Player

The MetaSound Wave Player node

The Wave Player node is a core node in MetaSounds that replaces the comparatively simple Wave Player node in Sound Cues.

For Early Access, the Wave Player only supports mono and stereo file playback. However, the development team plans to add a multi-channel Wave Player by the time of Unreal Engine 5's full release.

Wave Player Node Inputs

Input

Description

Play / Stop

The Play and Stop triggers start and stop the Wave Player playback at a sample-accurate moment in time.

Wave Asset

The Sound Wave asset (USoundWave) played by the Wave Player during playback. This asset uses the same real-time decoders as all other sound sources in Unreal Engine.

Start Time

The time within the Sound Wave asset at which to begin playing the audio file. Also referred to as "seek time."

Pitch Shift

The Pitch Shift to use for the Wave Player. The Pitch Shift is defined in units of semitones to account for the non-linear nature of frequency scaling.

Loop

Toggles whether the Wave Player will loop the audio file or stop when it's finished. This can be toggled at any time during playback from the MetaSound Graph.

Loop Start

The Loop Start indicates at which point in time the Wave Player will loop the audio file.

Loop Duration

The Loop Duration represents the total time the loop will play. A value other than -1 will set the end point of the loop to the sum of the Loop Start and Loop Duration values. A value of -1 will loop the entire audio file.

Wave Player Node Outputs

Output

Description

On Play

Executes when the Wave Player's input Play pin is triggered.

On Finished

Executes when the Wave Player finishes playing the audio file. This pin will trigger on the same sample point where the audio file finishes playing.

On Nearly Finished

Executes on the audio rendering block before the audio file is expected to finish playback. This is commonly used to loop back and pick a new audio file variation for the Wave Player.

On Looped

Executes on the sample where a sound has looped from based on the looping settings.

On Cue Point

[INCLUDE:#CueDescription

Cue Point ID

The ID of the cue point as parsed from the imported audio wave file.

Cue Point Label

The label of the cue point as parsed from the imported audio wave file.

Loop Percent

The current location in the audio wave file within the given loop region.

Playback Location

The current location in the audio wave file as a fraction of the total length of the audio wave file.

Out Left / Out Right

The left and right channel audio of a stereo audio file. In the case of mono file playback, the audio in the right and left channels are "up-mixed" using mono-channel duplication.

Mono and Stereo Mixers

The MetaSound Mono and Mixer nodes

The Mono Mixer and Stereo Mixer nodes support multiple audio buffer type inputs to create either a mono or stereo mix. These nodes are useful for combining audio buffer together into a single buffer.

The gain values are not clamped so they can be used for attenuating and inverting the audio signal. The nodes are also useful for mapping audio-rate buffers to different ranges for modulating various audio-rate-capable parameters.

Random Get (Array)

The MetaSound Random Get nodes

The Random Get (Array) node retrieves and outputs a random index from the connected array of values. The selected index supports a number of unique features designed for procedural audio applications.

Random Get (Array) Node Inputs

Input

Description

Next

Retrieves another random element in the array.

Reset

Resets the internal random stream to the "seed" value that the node is currently using (which can change at any time). This is useful for getting and controlling intentional random repetition in procedural audio applications.

In Array

The required input array from which to randomly retrieve elements.

Weights

An optional array of random weights used to define the probability of each In Array entry being retrieved. The weights array doesn't have to be the same size as the input array. In the case that it is smaller than the input array, the weight array values will be repeated to match the length of the input array. If no weight array is supplied, it will assume an even probability across the indices of the In Array.

Seed

The seed value used when retrieving a random element from the array. If set to -1, it will use a seed randomly generated using traditional techniques. The seed value can be modified at any time during MetaSound playback and can be driven by input parameters.

No Repeats

This integer defines the number of previous choices from the array to check against in order to avoid selecting a repeat value. For example, if No Repeats is set to 1, it will avoid repeating the last selected element. If it's set to 2, it'll avoid repeating the last two selected elements.

Enable Shared State

Enables the node to use shared memory for instances of the MetaSound. This essentially means that the No Repeats state can be shared across different MetaSounds in order to avoid playing the same exact variations at the same exact time.

Random Get (Array) Node Outputs

Output

Description

On Next

Forwards the Next trigger to the output.

On Reset

Executes when the input Reset trigger is executed.

Value

The value selected by the Random Get node.

Generators

The MetaSound Generator nodes

MetaSounds come with four classic audio-rate generators: Saw, Sine, Square, and Triangle. Each of these nodes supports controlling their frequency and modulating that frequency at audio rate (for FM synthesis).

The nodes also support sync triggering which resets their phase. When combined with an audio rate trigger repeat (or a threshold trigger) this can create unique synthesis effects. They also support the specifying of a phase offset, glide, and generation type.

Generator Nodes Inputs

Input

Description

Enabled

Enables the Generator Node to output audio.

Bi Polar

Outputs the audio frequency between -1.0 and 1.0. If false, it outputs as a unipolar value, which is between 0.0 to 1.0.

Frequency

Sets the base frequency of the generator.

Modulation

An audio-rate input to modulate the base frequency. Enables Frequency Modulated (FM) synthesis.

Sync

Resets the phase of the generator. Can be used in conjunction with other nodes to get audio-rate phase synced generators.

Phase Offset

A phase offset value for the generator.

Glide

A frequency interpolation parameter. Will smoothly interpolate to the target frequency over time.

Type

Sets the method of generation for the specific generator node. Note that some methods are more computationally expensive than others.

Pulse Width (Square)

Changes the relative pulse width of the square wave generator.

Generator Node Types

Generator Node

Type Description

Saw

  • Poly Smooth: Generates a smooth version of the Saw wave.

  • Trivial: Uses a basic implementation to generate a Saw wave.

Sine

  • 2D Rotation: Rotates around the unit circle to generate the Sine wave.

  • Pure Math: Uses the standard math library to generate the Sine wave (most expensive method).

  • Bhaskara: Uses the Bhaskara technique to approximate the Sine wave.

  • Wave Table: Uses a wave table to generate the Sine wave.

Square

  • Poly Smooth: Generates a smooth version of the Square wave.

  • Trivial: Uses a basic implementation to generate a Square wave.

Triangle

  • Poly Smooth: Generates a smooth version of the Triangle wave.

  • Trivial: Uses a basic implementation to generate a Triangle wave.

Envelopes

The MetaSound Envelope nodes

MetaSounds come with two basic envelope types: AD (Attack-Decay) and ADSR (Attack-Decay-Sustain-Release).

Audio designers can customize their curve values by using the various curve values contained within the nodes. For attack-time values, a curve value of less than 1.0 is a logarithmic curve (which rises quickly at first and slower near the end), and a value greater than 1.0 is an exponential curve (rises slower at first and more quickly near the end). Decay and Release curves have the opposite behavior. Values of 1.0 for these curves are linear curves.

Both envelopes support audio-rate envelopes (audio buffer output) and block-rate envelopes (i.e. float output).

The AD Envelope node has an additional option for looping the Attack-Decay curve similarly to a Low Frequency Oscillator (LFO). When paired with a Map Range node, this can be used to great effect in a variety of applications.

The ADSR Envelope node is similar to the AD Envelope node, but it requires a separate Release trigger to be set up for the "Release" portion of the envelope to begin.

AD Envelope Node Inputs

Input

Description

Trigger

Triggers the envelope generation.

Attack Time

The amount of time, in seconds, to reach the maximum envelope value (1.0).

Decay Time

The amount of time, in seconds, to reach the minimum envelope value (0.0).

Attack Curve

A value which changes the curvature of the attack portion of the attack time. A value of 1.0 sets a linear attack time. Less than 1.0 will be a logarithmic rise and greater than 1.0 will be an exponential rise.

Decay Curve

A value which changes the curvature of the decay portion of the decay time. A value of 1.0 sets a linear decay time. Less than 1.0 will be an exponential decay and greater than 1.0 will be a logarithmic decay.

Looping

Enables looping of the envelope. This will enable the envelope to be a LFO or wave generator.

AD Envelope Node Outputs

Output

Description

On Trigger

Triggers when the envelope is executed.

On Done

Triggers when the envelope finishes or loops back, if looping is enabled.

Out Envelope

This is the output value of the envelope.

ADSR Envelope Node Inputs

Input

Description

Trigger Attack

Triggers the start of the attack phase of the envelope generator.

Trigger Release

Triggers the start of the release phase of the envelope generator.

Attack Time

Attack time of the envelope.

Decay Time

Decay time of the envelope.

Sustain Level

The sustain level used by the envelope.

Release Time

The release time of the envelope.

Attack Curve

The exponential curve factor of the attack. A value of 1 results in a linear growth, a value of less than 1 results in logarithmic growth, and a value of more than 1 results in exponential growth.

Decay Curve

The exponential curve factor of the decay. A value of 1 results in a linear decay, a value of less than 1 results in exponential decay, and a value of more than 1 results in logarithmic decay.

Release Curve

The exponential curve factor of the release. A value of 1 results in a linear release, a value of less than 1 results in exponential release, and a value of more than 1 results in logarithmic release.

ADSR Envelope Node Outputs

Output

Description

On Attack Triggered

Triggers when the envelope attack is executed.

On Decay Triggered

Triggers when the envelope decay begins and the attack finishes.

On Sustain Triggered

Triggers when the envelope sustain begins and the attack finishes.

On Release Triggered

Triggers when the envelope release is executed.

On Done

Triggers when the envelope finishes.

Out Envelope

The output value of the envelope.

Filter Nodes

The MetaSound Filter nodes

MetaSounds come with a variety of filter nodes, including: Biquad, Ladder, One-Pole Low and High Pass, and Stable Variable Filter nodes .

Biquad Filter Node

The Biquad Filter node is a simple two-pole biquad filter that supports a variety of configurations.

Biquad Filter Node Inputs

Input

Description

In

The audio that will be processed by the filter.

Cutoff Frequency

The value of the cutoff frequency.

Bandwidth

The bandwidth value when applicable to the current filter type.

Gain

The gain (in decibels) applied to the band when in Parametric mode.

Type

The filter type.

Ladder Filter Node

The Ladder Filter node is a virtual analog low pass filter that has a pleasing and classic rolloff and resonance.

The Ladder Filter Node Inputs

Input

Description

In

The audio that will be processed by the filter.

Cutoff Frequency

The value of the cutoff frequency.

Resonance

The value of the filter resonance.

One-Pole Low and High Pass Filter Nodes

The One-Pole Low Pass Filter and One-Pole High Pass Filter nodes are a computationally cheap filter type useful for a number of simple applications in audio. Some practical examples include simulating occlusion, air absorption, and distance filtering.

The One-Pole Low / High Pass Filter Node Inputs

Input

Description

In

The audio that will be processed by the filter.

Cutoff Frequency

The value of the cutoff frequency.

State Variable Filter Node

The State Variable Filter node is a virtual analog filter type used in many synthesis applications.

State Variable Filter Node Inputs

Input

Description

In

The audio that will be processed by the filter.

Cutoff Frequency

The value of the cutoff frequency.

Resonance

The value of the filter resonance.

Band Stop Control

The value of the Band Stop applied to the output.

State Variable Filter Node Outputs

Output

Description

Low Pass Filter

Low pass filter output.

High Pass Filter

High pass filter output.

Band Pass

Band pass filter output.

Band Stop

Band stop filter output.

Low Frequency Oscillators (LFO)

The MetaSound LFO node

The Low Frequency Oscillator (LFO) node supports multiple LFO generator shapes as well as output range mapping, phase offset, and pulse width (for the Square LFO shape). The Sync trigger resets the LFO phase back to its starting phase offset.

LFO Inputs

Input

Description

Frequency

The frequency of the LFO in hertz, clamped at the block rate.

Shape

The wave shape of the LFO.

Min Value

The minimum output value.

Max Value

The maximum output value.

Sync

Triggers are phase reset.

Phase Offset

Phase offset in degrees.

Pulse Width

The pulse width.

Print Log

The MetaSound Print Log nodes

MetaSounds come with four types of Print Log nodes. These nodes are used to log data within the MetaSound and are used mainly for debugging purposes.

Each Print Log node takes a trigger input that executes the node, a Label string, and a Value To Log. When triggered, the Print Log will print the Label and Value To Log to the debug log as a display-level message.

Currently there are four types of Print Log nodes available, but the development team intends to unify them for Unreal Engine 5's full release. Text formatting and automatic string conversions are planned to be added as well.

Wave Writer

The MetaSound Wave Writer node

The Wave Writer node supports rendering an input mono channel audio buffer to an external audio wave file when enabled.

The file is rendered at 48,000 Hz and is saved to the Saved > AudioCaptures folder.

Math Nodes

The MetaSound Math nodes

MetaSounds come with a variety of nodes that perform basic math operations on the given inputs. The audio-rate Multiplication, Addition, and Subtraction nodes are executed on per-sample operations. The Multiplication node can provide ring-modulation type effects and audio-rate amplitude modulation.

For Early Access, the Modulo operator (%) only supports integer modulo.

Map Range

The MetaSound Map Range nodes

The Map Range nodes are used to map an input value to a final output range, given a specified range. The results can also be clamped if the checkbox is enabled. These nodes are analogous to the Blueprint Map Range nodes.

The audio rate Map Range node does a per-sample mapping. This is useful when mapping audio-rate signals to audio-rate modulation parameters, such as Frequency Modulator in FM synthesis.

Clamping Nodes

The MetaSound Clamping nodes

MetaSounds come with three types of nodes for clamping values: Clamp, Min, and Max nodes.

The audio-rate Clamp, Min, and Max nodes operate at a per-sample level.

Random Nodes

The MetaSound Random nodes

MetaSounds come with several Random nodes categorized by their output value type. These nodes output a random value from their input type and a seed.

The Random nodes execute when the Next trigger is called in order to generate the next random value in the sequence. The Reset trigger resets the node to its current seed and repeats the sequence.

With the exception of the Random Bool node, all nodes take Min and Max values (inclusive) which they use to determine the range of the random value.

Crossfade Nodes

The MetaSound Crossfade nodes

MetaSounds come with a variety of Crossfade nodes that blend between the provided inputs. The nodes blend their inputs using their Crossfade Value. For example, a Crossfade Value of 0.5 for input values 2 and 4 will result in an output of 3.

At the moment, these nodes only support linear crossfading via a block-rate float parameter. In the future, the development team plans to add non-linear crossfading, such as equal power and curves, and audio-rate crossfading.

Music Nodes

The MetaSound Music nodes

MetaSounds come with a variety of nodes to aid in the usage of musical note values. These nodes use the standard MIDI note value scale.

Node Name

Description

MIDI To Frequency

Converts a float or integer MIDI note input value to a frequency in hertz using the standard MIDI scale (where Middle C equals 60). These nodes are used to musically control generators that take hertz as an input. The floating point version can take fractional MIDI note values, which is useful for microtonality and custom tuning.

MIDI Note Quantizer

Quantizes a note input value to the nearest corresponding value in the provided array. The output is offset by the appropriate multiple of the largest value in the array. All the musical arrays output from the Scale to Note Array node start with a value of 0.0 and end with 12.0. Input arrays that follow this pattern cause the node to operate like a normal quantizer. Custom arrays can specify scales that span more than one octave (i.e. a maximum value of 24.0 for 2 octaves), or quantize to any multiple of any other arbitrary data set.

Scale to Note Array

Comes with a list of Scale Degrees that can be selected and outputs the scale specified by the selection. The node supports toggling between the full scale or chord tones only. This option is useful in the creation of procedural music applications.

Panning Nodes

The MetaSound Panning nodes

MetaSounds come with two panning nodes: the Stereo Panner and the ITD Panner nodes.

The Stereo Panner node pans an input audio signal to the left and right outputs. The ITD Panner node pans an input audio signal using an inter-aural time delay method.

Delay Nodes

The MetaSound Delay nodes

MetaSounds come with two types of Delay nodes: Mono and Stereo. The Mono Delay node provides a mono buffer delay that supports Dry Level, Wet Level, and Feedback.

The Stereo Delay node supports multi-channel buffer delay. Similar to the Mono Delay node, this node supports Dry Level, Wet Level, and Feedback. It also provides Normal, Cross, and Ping-Pong Delay Modes. The Delay Ration parameter shifts the left and right channel audio buffers to create a stereo spread effect.

Trigger Utility Nodes

The MetaSound Delay nodes

MetaSounds come with a variety of nodes designed to manipulate triggers or derive trigger behavior from various parameters.

Node Name

Description

Trigger Repeat

Supports the periodic triggering of the output at a given sample-accurate and arbitrarily-precise rate.

Trigger Accumulate

Supports up to 8 inputs and will only trigger its output once all inputs have been triggered. It can be set to Auto Reset once the output is triggered. This node is useful when waiting for multiple wave players to finish before triggering the MetaSound On Finished output trigger.

Trigger Any

The inverse of the Trigger Accumulate node. The node triggers its output when any of the input triggers have been executed. This is a useful utility node when you want to have many different trigger sources execute a node input.

Trigger Counter

Counts the number of times its input trigger has been executed. This is useful for a large number of procedural use cases, such as sequencing array inputs. This node supports resetting its count at a certain count value and can utilize a Start Value and Step Size.

Trigger Delay

Outputs a trigger by the specified delay amount. The node will reset if the Reset input is triggered during its delay period.

Trigger Pipe

Delays the execution of input triggers by the given delay amount for all input trigger executions.

Trigger on Threshold

Operates as an edge detector and outputs a trigger when the input audio crosses the given threshold value while moving in the specified direction. For example, if the node is set to Rising Edge, a trigger will be output when the signal crosses the threshold with a positive slope. This is useful when paired with a generator node and connected to another generator's sync trigger input.

Trigger Route

Routes different input values to a single output when triggered.

Trigger Compare

Compares two values (integer or float) on input trigger and outputs True or False trigger based on the comparison result.

Send and Receive Nodes

The MetaSound Send and Receive nodes

The Send and Receive nodes support communication between MetaSounds. MetaSounds can share data between themselves in a shared communication channel specified by the address value.

The input parameter is stored and retrieved on the next MetaSound render block by another MetaSound.

Send and Receive nodes support most MetaSound types, including audio. In Early Access, this is the only way to get feedback behavior within a MetaSound graph.

For Unreal Engine 5's full release, the development team intends to expand this system to improve the user experience, support advanced addressing, and support multiple data protocols.