NodeLink Filters
Standard Filtersโ
Shared setters include equalizer, karaoke, timescale, vibrato, tremolo, rotation, distortion, channel mix, and low pass. Availability still depends on the server.
await player.filters.setChannelMix({
leftToLeft: 1,
leftToRight: 0,
rightToLeft: 0,
rightToRight: 1,
});
await player.filters.setLowPass({ smoothing: 20 });
await player.filters.setTremolo({ frequency: 2, depth: 0.5 });
The public low-pass setter is shared. Magmastream serializes NodeLink's lowercase
lowpass key while retaining Lavalink's lowPass spelling for that backend.
Native Extra Filtersโ
These setters require NodeLink when options are supplied. Omitting options clears the setting; it does not turn a Lavalink node into a native-filter provider.
| Explicit setter | Short alias | Options |
|---|---|---|
setNodeLinkHighPass | setHighPass | HighPassOptions |
setNodeLinkEcho | setEcho | EchoOptions |
setNodeLinkReverb | setReverb | ReverbOptions |
setNodeLinkChorus | setChorus | ChorusOptions |
setNodeLinkCompressor | setCompressor | CompressorOptions |
setNodeLinkFlanger | setFlanger | FlangerOptions |
setNodeLinkPhaser | setPhaser | PhaserOptions |
setNodeLinkPhonograph | setPhonograph | PhonographOptions |
setNodeLinkSpatial | setSpatial | SpatialOptions |
setNodeLinkTape | setTape | TapeOptions |
if (player.node.isNodeLink) {
await player.filters.setNodeLinkEcho({ delay: 0.2, feedback: 0.3, mix: 0.2 });
await player.filters.setNodeLinkReverb({ wet: 0.2, dry: 0.8 });
await player.filters.setNodeLinkEcho();
}
Consult the source/server's accepted ranges and units for effect-specific values. The client typings describe fields; they do not guarantee an upstream source or effect is enabled.
Animation Transitionsโ
NodeLink filter types expose transition/animation parameters:
if (player.node.isNodeLink) {
await player.filters.setTimescale({
speed: 1.05,
pitch: 1,
rate: 1,
transition: { durationMs: 500, curve: "linear" },
});
}
These fields are not part of portable Lavalink v4 filter options. The REST guard checks native filter keys, not every animation field nested inside shared filters. Keep animation settings inside your own NodeLink branch.
Lavalink Plugin Filtersโ
pluginFilters is separate from NodeLink native effects.
await player.filters.setPluginFilters(customPluginFilters);
A nonempty plugin-filter object requires a matching plugin in node.info.plugins.
The default accepted names are lavadspx-plugin and LavaDSPX-Plugin
(case-insensitive). This verifies presence, not the validity of every option.
For another filter plugin, supply its advertised name or accepted aliases:
await player.filters.setPluginFilters(customPluginFilters, "my-filter-plugin");
await player.filters.setPluginFilters(); // Clear without a plugin requirement.
Load node info before setting plugin filters. Missing/mismatched info causes a
local guard failure. Do not nest NodeLink native effects in pluginFilters.
Synchronization and Resetโ
Native FiltersChangedEvent messages synchronize local filter fields through
syncFromNode() without issuing another REST request. The helper accepts direct
filter data or a wrapped { filters } payload.
await player.filters.clearFilters() clears the configured effects.
getFilterStatus() exposes the preset/status flags; do not treat those flags as
a complete report of externally modified server filters.
The current updateFilters() implementation catches and logs REST update errors.
Awaiting a setter is therefore not proof that the server accepted it; inspect
server events/state during validation. Local backend/plugin guards still throw.
See the complete Filters reference.