Skip to main content

Overview

Discord Player provides over 40 preset audio filters powered by FFmpeg that can dramatically transform your audio playback. From bass boosts to nightcore, 8D audio to karaoke mode, these filters offer professional-grade audio manipulation.

Available Filters

Bass Filters

  • bassboost_low - Low bass boost (15 dB gain at 110 Hz)
  • bassboost - Standard bass boost (20 dB gain at 110 Hz)
  • bassboost_high - High bass boost (30 dB gain at 110 Hz)
  • subboost - Enhance sub-bass frequencies

Frequency Filters

Treble

Boost high frequencies (5 dB treble gain)

Normalizer

Audio compressor for consistent levels

Normalizer2

Dynamic audio normalizer with 101 dB gain

Spatial Effects

8D Audio

Simulate 8D audio with pulsator effect (0.09 Hz)

Surrounding

Create surround sound effect

Haas

Haas effect for spatial audio

Pulsator

Audio pulsator at 1 Hz

Modulation Effects

FilterDescriptionFFmpeg Configuration
phaserPhase shifting effectaphaser=in_gain=0.4
tremoloAmplitude modulationtremolo
vibratoPitch modulationvibrato=f=6.5
flangerFlanging effectflanger

Stereo Effects

  • mono - Convert to mono audio
  • mstlr - Mid/Side to Left/Right conversion
  • mstrr - Mid/Side to Right/Right conversion

Chorus Effects

Chorus

Standard chorus effect
0.7:0.9:55:0.4:0.25:2

Chorus 2D

Two-dimensional chorus
50|60 Hz modulation

Chorus 3D

Three-dimensional chorus
50|60|40 Hz modulation

Time-Based Effects

nightcore - Speed up audio (1.25x rate, higher pitch)
aresample=48000,asetrate=48000*1.25
vaporwave - Slow down audio (0.8x rate, lower pitch)
aresample=48000,asetrate=48000*0.8
lofi - Lo-fi effect (0.9x rate with stereo enhancement)
aresample=48000,asetrate=48000*0.9,extrastereo=m=2.5:c=disabled

Dynamic Range

Compressor

Reduce dynamic range with multi-point compression curve

Expander

Expand dynamic range with advanced attack settings

Soft Limiter

Gentle limiting to prevent clipping

Mcompand

Multi-band compander

Special Effects

Remove vocals using stereo tools
stereotools=mlev=0.03
Audio gate for noise reduction
Reduce brightness of audio spectrum
Extreme volume effect (use with caution)
Remove silence from beginning
silenceremove=1:0:-50dB

Usage

Apply Single Filter

await queue.filters.ffmpeg.setFilters(['bassboost']);

Apply Multiple Filters

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

Toggle Filters

// Toggle filters on/off
await queue.filters.ffmpeg.toggle(['vaporwave']);

Using Filter Object

await queue.filters.ffmpeg.setFilters({
  bassboost: true,
  nightcore: true,
  normalizer: false
});

Enable All Filters

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

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

Filter Management

Check Filter Status

// Check if filter is enabled
const isEnabled = queue.filters.ffmpeg.isEnabled('bassboost');

// Check if filter is disabled
const isDisabled = queue.filters.ffmpeg.isDisabled('nightcore');

// Validate filter name
const isValid = queue.filters.ffmpeg.isValidFilter('8D');

Get Active Filters

// Get list of enabled filters
const enabled = queue.filters.ffmpeg.getFiltersEnabled();
console.log('Enabled:', enabled); // ['bassboost', 'nightcore']

// Get list of disabled filters
const disabled = queue.filters.ffmpeg.getFiltersDisabled();

Export Filter Configuration

// Convert to array
const filterArray = queue.filters.ffmpeg.toArray();

// Convert to JSON object
const filterObj = queue.filters.ffmpeg.toJSON();

// Get FFmpeg string
const ffmpegArgs = queue.filters.ffmpeg.toString();

Custom Filters

Define Single Filter

import { AudioFilters } from 'discord-player';

AudioFilters.define('myfilter', 'aecho=0.8:0.9:1000:0.3');

// Use your custom filter
await queue.filters.ffmpeg.setFilters(['myfilter']);

Define Multiple Filters

AudioFilters.defineBulk([
  {
    name: 'deepbass',
    value: 'bass=g=25:f=90:w=0.4'
  },
  {
    name: 'crystalclear',
    value: 'acompressor=threshold=0.089:ratio=9:attack=200:release=1000'
  },
  {
    name: 'spacial',
    value: 'aecho=0.8:0.88:60:0.4,chorus=0.5:0.9:50:0.4:0.25:2'
  }
]);

await queue.filters.ffmpeg.setFilters(['deepbass', 'crystalclear']);

Advanced Usage

Set Default Filters

// Set filters without triggering replay
queue.filters.ffmpeg.setDefaults(['bassboost', 'normalizer']);

Access Raw Filter Values

import { AudioFilters } from 'discord-player';

// Get filter FFmpeg value
const filterValue = AudioFilters.get('nightcore');
console.log(filterValue); // 'aresample=48000,asetrate=48000*1.25'

// Check if filter exists
const exists = AudioFilters.has('bassboost');

// Get all filter names
const names = AudioFilters.names;
console.log(names); // ['bassboost_low', 'bassboost', ...]

// Get filter count
console.log(AudioFilters.length); // 40+

Set Input Arguments

// Add custom FFmpeg input arguments
queue.filters.ffmpeg.setInputArgs([
  '-af', 'volume=1.5',
  '-ar', '44100'
]);

// Get current input args
const args = queue.filters.ffmpeg.inputArgs;

// Get encoder args
const encoderArgs = queue.filters.ffmpeg.encoderArgs;

// Get final combined args
const finalArgs = queue.filters.ffmpeg.args;

Complete Filter List

Here’s a complete reference of all 40+ available filters:
const allFilters = [
  'bassboost_low',
  'bassboost',
  'bassboost_high',
  '8D',
  'vaporwave',
  'nightcore',
  'phaser',
  'tremolo',
  'vibrato',
  'reverse',
  'treble',
  'normalizer',
  'normalizer2',
  'surrounding',
  'pulsator',
  'subboost',
  'karaoke',
  'flanger',
  'gate',
  'haas',
  'mcompand',
  'mono',
  'mstlr',
  'mstrr',
  'compressor',
  'expander',
  'softlimiter',
  'chorus',
  'chorus2d',
  'chorus3d',
  'fadein',
  'dim',
  'earrape',
  'lofi',
  'silenceremove'
];

Events

queue.on('audioFiltersUpdate', (queue, oldFilters, newFilters) => {
  console.log('Filters changed from:', oldFilters);
  console.log('Filters changed to:', newFilters);
});

Best Practices

Performance Considerations
  • Filters trigger audio stream replay and may cause brief playback interruption
  • Multiple filters can increase CPU usage
  • Some filters (like nightcore and vaporwave) affect playback duration
Tips
  • Test filters individually before combining
  • Use normalizer with heavy filters to maintain consistent volume
  • Some filters work better with specific audio types (e.g., karaoke with vocals)
  • Custom filters give you unlimited possibilities with FFmpeg

Equalizer

15-band equalizer configuration

Volume Control

Manage playback volume

Stream Config

Configure audio stream processing

Build docs developers (and LLMs) love