Built-in Pipeline Nodes
This reference documents every built-in pipeline node in the Amplitude Audio SDK. Pipeline nodes are the building blocks of the audio processing graph executed by Amplimix each frame.
Node Categories¶
All nodes fall into one of four categories:
| Category | Description |
|---|---|
| Input | Marks the entry point of audio into the pipeline. |
| Output | Marks the exit point of processed audio. |
| Processor | Transforms audio in-place (single input, single output). |
| Mixer | Combines multiple inputs into one output. |
Input / Output¶
InputNode¶
Marks the start of the pipeline. Receives audio from the sound source.
OutputNode¶
Marks the end of the pipeline. Sends audio to the audio device.
Spatial Nodes¶
AttenuationNode¶
Applies distance-based gain attenuation using the sound's assigned attenuation model.
| Parameter | Type | Description |
|---|---|---|
attenuation | float | Output gain after applying the curve (read-only). |
SpeakerPanningNode¶
Pans a source to the pipeline's output speaker layout (stereo, quad, 5.1 or 7.1) using constant-power panning, placing each of the source's channels as a virtual emitter around its direction.
Panning is constant-power: a centred mono source reaches each side at -3.01 dB. A multichannel source plays at its spread width, at unity on its own channels.
AmbisonicPanningNode¶
Encodes a mono source into Ambisonic B-Format channels based on 3D position.
AmbisonicRotatorNode¶
Rotates the Ambisonic sound field to match listener orientation.
AmbisonicBinauralDecoderNode¶
Decodes Ambisonic B-Format to binaural stereo using HRIR convolution.
AmbisonicMixerNode¶
Mixes multiple Ambisonic streams together.
MixerNode¶
Mixes multiple streams of the pipeline's output channel layout together.
Effect Nodes¶
EnvironmentEffectNode¶
Applies the environment's assigned effect to sounds inside the zone.
NearFieldEffectNode¶
Simulates near-field pressure effects for very close sources.
ReflectionsNode¶
Computes early reflections based on room geometry.
ReverbNode¶
Applies late reverberation based on room materials and dimensions, through a pluggable reverb algorithm. The room's surface areas and volume set the algorithm's normalized room-size parameter, and its wall materials' absorption coefficients, averaged, set the absorption parameter.
The node name selects the algorithm: Reverb uses Freeverb; Freeverb, Dattorro, and RoomReverb select that algorithm explicitly.
See the Custom Reverb Tutorial to register your own.
Occlusion / Obstruction¶
OcclusionNode¶
Applies frequency-dependent low-pass filtering based on the entity's occlusion value.
ObstructionNode¶
Applies low-pass filtering based on the entity's obstruction value.
Dynamics Nodes¶
LimiterNode¶
Prevents clipping by limiting peak amplitude.
| Parameter | Type | Description |
|---|---|---|
threshold | dB | Level above which limiting begins. |
attack | ms | Time to respond to peaks. |
release | ms | Time to return to unity gain. |
ClampNode¶
Hard-clips samples to a maximum amplitude.
HardClipNode¶
Applies aggressive hard clipping (distortion).
RoundoffClipNode¶
Applies softer roundoff clipping.
Default Pipeline¶
The default pipeline shipped with Amplitude combines most of these nodes:
{
"id": 1,
"name": "default",
"nodes": [
{ "id": 1, "name": "Input", "consume": [] },
{ "id": 2, "name": "Attenuation", "consume": [1] },
{ "id": 3, "name": "Occlusion", "consume": [2] },
{ "id": 4, "name": "SpeakerPanning", "consume": [17] },
{ "id": 5, "name": "AmbisonicPanning", "consume": [3] },
{ "id": 6, "name": "NearFieldEffect", "consume": [3] },
{ "id": 7, "name": "AmbisonicMixer", "consume": [18] },
{ "id": 8, "name": "Mixer", "consume": [4, 6, 10, 12, 14] },
{ "id": 10, "name": "AmbisonicBinauralDecoder", "consume": [7] },
{ "id": 11, "name": "Reflections", "consume": [1] },
{ "id": 12, "name": "AmbisonicBinauralDecoder", "consume": [11] },
{ "id": 13, "name": "HardClip", "consume": [8] },
{ "id": 14, "name": "Reverb", "consume": [1] },
{ "id": 15, "name": "Obstruction", "consume": [3] },
{ "id": 16, "name": "EnvironmentEffect", "consume": [3] },
{ "id": 17, "name": "Mixer", "consume": [15, 16] },
{ "id": 18, "name": "AmbisonicRotator", "consume": [5] },
{ "id": 9, "name": "Output", "consume": [13] }
]
}
Custom Nodes¶
You can implement custom pipeline nodes by subclassing Node and NodeInstance. See the Custom Pipeline Node Tutorial for details.
Next Steps¶
- Review the Pipeline Reference for DAG architecture and rules.
- Learn how to create custom pipeline nodes.
- Explore the Node API Reference.