Skip to main content

GuildQueueAudioFilters

Manages audio filtering and effects for a guild queue. Provides access to FFmpeg filters, equalizers, DSP effects, and various audio transformers.

Constructor

new GuildQueueAudioFilters<Meta>(queue: GuildQueue<Meta>)
queue
GuildQueue<Meta>
required
The guild queue instance to manage audio filters for

Properties

graph
AFilterGraph<Meta>
Audio filter graph for inspecting current filter state
ffmpeg
FFmpegFilterer<Meta>
FFmpeg filter manager for applying audio filters
equalizerPresets
EqualizerConfigurationPreset
Pre-configured equalizer presets including:
  • Flat - No equalization
  • Classical - Classical music preset
  • Club - Club music preset
  • Dance - Dance music preset
  • FullBass - Enhanced bass
  • FullBassTreble - Enhanced bass and treble
  • FullTreble - Enhanced treble
  • Headphones - Headphones optimized
  • LargeHall - Large hall reverb effect
  • Live - Live performance sound
  • Party - Party music preset
  • Pop - Pop music preset
  • Reggae - Reggae music preset
  • Rock - Rock music preset
  • Ska - Ska music preset
  • Soft - Soft music preset
  • SoftRock - Soft rock preset
  • Techno - Techno music preset
queue
GuildQueue<Meta>
Reference to the parent guild queue
volume
VolumeTransformer | null
Volume transformer instance for controlling playback volume
equalizer
Equalizer | null
15-band equalizer instance for frequency adjustment
biquad
Biquad | null
Digital biquad filters for advanced audio processing
filters
Filters | null
DSP filters instance for digital signal processing
resampler
Resampler | null
Audio resampler for changing sample rates
compressor
Compressor | null
Audio compressor transformer for dynamic range compression
reverb
Reverb | null
Reverb transformer for adding reverb effects
seeker
Seeker | null
PCM Seeker transformer for track seeking

Methods

triggerReplay

Replays the current track in transition mode, useful when applying new filters.
triggerReplay(seek?: number): Promise<boolean>
seek
number
default:0
The position in milliseconds to seek to when replaying
return
Promise<boolean>
Returns true if replay was successful, false otherwise
Example:
// Apply filters and replay from current position
await queue.filters.triggerReplay();

// Apply filters and replay from 30 seconds
await queue.filters.triggerReplay(30000);

FFmpegFilterer

Manages FFmpeg audio filters for the queue.

Properties

filters
Filters[]
Currently active FFmpeg filters
inputArgs
string[]
FFmpeg input arguments
encoderArgs
string[]
FFmpeg encoder arguments including filter flags
args
string[]
Combined input and encoder arguments

Methods

setFilters

Set FFmpeg filters to apply to the audio stream.
setFilters(filters: Filters[] | Record<Filters, boolean> | string[] | boolean): Promise<boolean>
filters
Filters[] | Record<Filters, boolean> | string[] | boolean
required
Filters to apply. Can be:
  • Array of filter names
  • Object mapping filter names to enabled/disabled state
  • true to enable all filters
  • false to disable all filters
return
Promise<boolean>
Returns true if filters were updated successfully
Example:
// Enable specific filters
await queue.filters.ffmpeg.setFilters(['bassboost', 'nightcore']);

// Use object syntax
await queue.filters.ffmpeg.setFilters({
  bassboost: true,
  nightcore: true,
  vaporwave: false
});

// Enable all filters
await queue.filters.ffmpeg.setFilters(true);

// Disable all filters
await queue.filters.ffmpeg.setFilters(false);

toggle

Toggles the specified FFmpeg filter(s).
toggle(filters: Filters[] | Filters): Promise<boolean>
filters
Filters[] | Filters
required
Filter name(s) to toggle on or off
Example:
// Toggle single filter
await queue.filters.ffmpeg.toggle('nightcore');

// Toggle multiple filters
await queue.filters.ffmpeg.toggle(['bassboost', '8D']);

setInputArgs

Set custom input arguments for FFmpeg.
setInputArgs(args: string[]): void
args
string[]
required
Array of FFmpeg input arguments
Example:
queue.filters.ffmpeg.setInputArgs(['-re', '-stream_loop', '-1']);

getFiltersEnabled

Get list of currently enabled filters.
getFiltersEnabled(): Filters[]
return
Filters[]
Array of enabled filter names

getFiltersDisabled

Get list of currently disabled filters.
getFiltersDisabled(): Filters[]
return
Filters[]
Array of disabled filter names

isEnabled

Check if a specific filter is enabled.
isEnabled<T extends Filters>(filter: T): boolean
filter
Filters
required
The filter name to check
Example:
if (queue.filters.ffmpeg.isEnabled('nightcore')) {
  console.log('Nightcore is active!');
}

isDisabled

Check if a specific filter is disabled.
isDisabled<T extends Filters>(filter: T): boolean
filter
Filters
required
The filter name to check

isValidFilter

Check if a string is a valid filter name.
isValidFilter(filter: string): filter is FiltersName
filter
string
required
The filter name to validate

toArray

Convert current filters to array of FFmpeg filter strings.
toArray(): string[]
return
string[]
Array of FFmpeg filter strings

toJSON

Convert current filters to JSON object.
toJSON(): Record<keyof QueueFilters, string>
return
Record<keyof QueueFilters, string>
Object mapping filter names to their FFmpeg strings

toString

Get string representation of current filters for FFmpeg.
toString(): string
return
string
Comma-separated FFmpeg filter string

AFilterGraph

Provides a snapshot view of all active audio filters.

Properties

ffmpeg
Filters[]
Currently active FFmpeg filters
equalizer
EqualizerBand[]
Current equalizer band settings
biquad
BiquadFilters | null
Current biquad filter name
filters
PCMFilters[]
Current DSP filters
volume
VolumeTransformer | null
Volume transformer instance
resampler
Resampler | null
Resampler instance

Methods

dump

Dump current filter state to a plain object.
dump(): FilterGraph
return
FilterGraph
Object containing:
  • ffmpeg: Active FFmpeg filters
  • equalizer: Equalizer band settings
  • biquad: Biquad filter name
  • filters: DSP filters
  • volume: Volume level (0-100)
  • sampleRate: Sample rate in Hz
Example:
const filterState = queue.filters.graph.dump();
console.log('Active filters:', filterState.ffmpeg);
console.log('Volume:', filterState.volume);
console.log('Sample rate:', filterState.sampleRate);

Usage Example

import { GuildQueue } from 'discord-player';

// Access audio filters from queue
const queue: GuildQueue = ...;
const filters = queue.filters;

// Apply equalizer preset
await filters.equalizer?.setEQ(filters.equalizerPresets.Rock);

// Enable FFmpeg filters
await filters.ffmpeg.setFilters(['bassboost', '8D', 'nightcore']);

// Set volume
filters.volume?.setVolume(75);

// Apply biquad filter
await filters.biquad?.setFilters('lowpass');

// Get current filter state
const state = filters.graph.dump();
console.log('Current filters:', state);

// Replay track with new filters
await filters.triggerReplay();

Build docs developers (and LLMs) love