Effects Reference
cysox provides 27 typed effect classes and 53 composite presets. Effects are used with the high-level API:
import cysox
from cysox import fx
cysox.convert('input.wav', 'output.wav', effects=[
fx.Bass(gain=5),
fx.Reverb(reverberance=70),
fx.Normalize(),
])
Effects can also be combined into reusable presets using CompositeEffect (see Presets below).
Volume and Dynamics
Volume
Adjust volume level in decibels.
fx.Volume(db=3) # Boost by 3dB
fx.Volume(db=-6) # Cut by 6dB
fx.Volume(db=6, limiter=True) # Boost with limiter to prevent clipping
| Parameter |
Type |
Default |
Description |
db |
float |
0 |
Volume adjustment in dB. Positive = louder. |
limiter |
bool |
False |
Apply limiter to prevent clipping. |
Gain
Apply gain with normalization and limiting options.
fx.Gain(db=-3)
fx.Gain(db=0, normalize=True) # Normalize only
| Parameter |
Type |
Default |
Description |
db |
float |
0 |
Gain in decibels. |
normalize |
bool |
False |
Normalize to 0dBFS before applying gain. |
limiter |
bool |
False |
Apply limiter to prevent clipping. |
balance |
bool |
False |
Balance channels (stereo). |
Normalize
Normalize audio to a target peak level.
fx.Normalize() # Normalize to -1 dBFS
fx.Normalize(level=-3) # Normalize to -3 dBFS
| Parameter |
Type |
Default |
Description |
level |
float |
-1 |
Target peak level in dBFS. |
Equalization
Bass
Boost or cut bass frequencies using a shelving filter.
fx.Bass(gain=5) # Boost bass by 5dB
fx.Bass(gain=-3, frequency=80) # Cut at 80Hz
| Parameter |
Type |
Default |
Description |
gain |
float |
required |
Boost (positive) or cut (negative) in dB. |
frequency |
float |
100 |
Center frequency in Hz. |
width |
float |
0.5 |
Filter width in octaves. |
Treble
Boost or cut treble frequencies using a shelving filter.
fx.Treble(gain=3) # Boost treble by 3dB
fx.Treble(gain=-2, frequency=4000) # Cut at 4kHz
| Parameter |
Type |
Default |
Description |
gain |
float |
required |
Boost (positive) or cut (negative) in dB. |
frequency |
float |
3000 |
Center frequency in Hz. |
width |
float |
0.5 |
Filter width in octaves. |
Equalizer
Peaking EQ filter at a specific frequency.
fx.Equalizer(frequency=1000, width=1, gain=3) # Boost 1kHz
| Parameter |
Type |
Default |
Description |
frequency |
float |
required |
Center frequency in Hz. |
width |
float |
required |
Q factor or bandwidth. |
gain |
float |
required |
Boost (positive) or cut (negative) in dB. |
Filters
HighPass
High-pass filter that removes frequencies below the cutoff.
fx.HighPass(frequency=80) # Remove rumble below 80Hz
fx.HighPass(frequency=200, poles=1) # Gentle rolloff
| Parameter |
Type |
Default |
Description |
frequency |
float |
required |
Cutoff frequency in Hz. |
poles |
int |
2 |
Filter order (1 or 2). Higher = steeper rolloff. |
LowPass
Low-pass filter that removes frequencies above the cutoff.
fx.LowPass(frequency=8000) # Remove highs above 8kHz
fx.LowPass(frequency=4000, poles=1) # Gentle rolloff
| Parameter |
Type |
Default |
Description |
frequency |
float |
required |
Cutoff frequency in Hz. |
poles |
int |
2 |
Filter order (1 or 2). Higher = steeper rolloff. |
BandPass
Band-pass filter that passes frequencies within a range.
fx.BandPass(frequency=1000, width=2) # Q=2 bandpass at 1kHz
| Parameter |
Type |
Default |
Description |
frequency |
float |
required |
Center frequency in Hz. |
width |
float |
required |
Filter width (interpretation depends on width_type). |
width_type |
str |
"q" |
"q" for Q-factor, "h" for Hz, "o" for octaves. |
constant_skirt |
bool |
False |
Use constant skirt gain. |
BandReject
Band-reject (notch) filter that removes a narrow frequency range.
fx.BandReject(frequency=60, width=10) # Remove 60Hz hum
| Parameter |
Type |
Default |
Description |
frequency |
float |
required |
Center frequency in Hz. |
width |
float |
required |
Filter width (interpretation depends on width_type). |
width_type |
str |
"q" |
"q" for Q-factor, "h" for Hz, "o" for octaves. |
Reverb and Spatial
Reverb
Add reverberation.
fx.Reverb() # Default reverb
fx.Reverb(reverberance=80) # Long decay
fx.Reverb(room_scale=50, pre_delay=20) # Small room
fx.Reverb(reverberance=90, wet_only=True) # Wet signal only
| Parameter |
Type |
Default |
Description |
reverberance |
float |
50 |
Reverb time, 0-100%. |
hf_damping |
float |
50 |
High frequency damping, 0-100%. |
room_scale |
float |
100 |
Room size, 0-100%. |
stereo_depth |
float |
100 |
Stereo spread, 0-100%. |
pre_delay |
float |
0 |
Pre-delay in milliseconds. |
wet_gain |
float |
0 |
Wet signal gain in dB. |
wet_only |
bool |
False |
Output only the wet signal (no dry). |
Echo
Add one or more echo taps.
fx.Echo(delays=[100], decays=[0.5]) # Single echo
fx.Echo(delays=[100, 200], decays=[0.6, 0.3]) # Multi-tap
| Parameter |
Type |
Default |
Description |
delays |
list[float] |
required |
Delay times in milliseconds. |
decays |
list[float] |
required |
Decay values (0-1) for each delay. Must match length of delays. |
gain_in |
float |
0.8 |
Input gain (0-1). |
gain_out |
float |
0.9 |
Output gain (0-1). |
Chorus
Add chorus modulation.
fx.Chorus() # Default chorus
fx.Chorus(depth=4, speed=0.5) # Deeper, faster
| Parameter |
Type |
Default |
Description |
gain_in |
float |
0.7 |
Input gain (0-1). |
gain_out |
float |
0.9 |
Output gain (0-1). |
delay |
float |
55 |
Base delay in ms. |
decay |
float |
0.4 |
Decay factor. |
speed |
float |
0.25 |
Modulation speed in Hz. |
depth |
float |
2 |
Modulation depth in ms. |
shape |
str |
"s" |
"s" (sine) or "t" (triangle). |
Flanger
Add flanging effect.
fx.Flanger() # Default flanger
fx.Flanger(depth=5, speed=0.3, regen=50) # Deeper with feedback
| Parameter |
Type |
Default |
Description |
delay |
float |
0 |
Base delay in ms. |
depth |
float |
2 |
Modulation depth in ms. |
regen |
float |
0 |
Regeneration/feedback, -95 to 95%. |
width |
float |
71 |
Wet/dry mix percentage. |
speed |
float |
0.5 |
Modulation speed in Hz. |
shape |
str |
"sine" |
"sine" or "triangle". |
phase |
float |
25 |
Phase offset for stereo, percentage. |
interp |
str |
"linear" |
"linear" or "quadratic". |
Time and Pitch
Trim
Extract a portion of the audio. Specify either end or duration, not both.
fx.Trim(start=1.5, end=10.0) # From 1.5s to 10s
fx.Trim(start=5.0) # From 5s to end
fx.Trim(end=30.0) # First 30 seconds
fx.Trim(start=0, duration=10) # First 10 seconds
| Parameter |
Type |
Default |
Description |
start |
float |
0 |
Start time in seconds. |
end |
float |
None |
End time in seconds. |
duration |
float |
None |
Duration in seconds. |
Pad
Add silence to the beginning and/or end.
fx.Pad(before=1.0) # 1s silence at start
fx.Pad(after=2.0) # 2s silence at end
fx.Pad(before=0.5, after=1.0) # Both
| Parameter |
Type |
Default |
Description |
before |
float |
0 |
Seconds of silence at the beginning. |
after |
float |
0 |
Seconds of silence at the end. |
Speed
Change playback speed. This affects pitch (higher speed = higher pitch).
fx.Speed(factor=2.0) # Double speed, octave up
fx.Speed(factor=0.5) # Half speed, octave down
| Parameter |
Type |
Default |
Description |
factor |
float |
required |
Speed multiplier (must be positive). |
Tempo
Change tempo without affecting pitch.
fx.Tempo(factor=1.5) # 50% faster
fx.Tempo(factor=0.8, audio_type='s') # Slower, optimized for speech
| Parameter |
Type |
Default |
Description |
factor |
float |
required |
Tempo multiplier (must be positive). |
audio_type |
str |
None |
Optimize for "m" (music), "s" (speech), or "l" (linear). |
quick |
bool |
False |
Use quicker, lower-quality algorithm. |
Pitch
Change pitch without affecting tempo.
fx.Pitch(cents=100) # Up one semitone
fx.Pitch(cents=-200) # Down two semitones
| Parameter |
Type |
Default |
Description |
cents |
float |
required |
Pitch shift in cents (100 cents = 1 semitone). |
quick |
bool |
False |
Use quicker, lower-quality algorithm. |
Reverse
Reverse the audio.
No parameters.
Fade
Apply fade-in and/or fade-out.
fx.Fade(fade_in=0.5) # 0.5s fade in
fx.Fade(fade_out=2.0) # 2s fade out
fx.Fade(fade_in=1.0, fade_out=1.0, type='l') # Logarithmic fades
| Parameter |
Type |
Default |
Description |
fade_in |
float |
0 |
Fade-in duration in seconds. |
fade_out |
float |
0 |
Fade-out duration in seconds. |
type |
str |
"t" |
Curve type: "q" (quarter sine), "h" (half sine), "t" (linear), "l" (logarithmic), "p" (parabola). |
Repeat
Repeat the audio a specified number of times.
fx.Repeat(count=2) # Play 3 times total (original + 2 repeats)
| Parameter |
Type |
Default |
Description |
count |
int |
required |
Number of additional plays (must be >= 1). |
Silence
Remove silence from audio based on amplitude threshold detection.
fx.Silence() # Remove leading silence
fx.Silence(threshold=-36) # Less sensitive threshold
fx.Silence(below_periods=1) # Remove leading + trailing silence
fx.Silence(above_periods=1, below_periods=1, # Full control
duration=0.2, threshold=-40)
| Parameter |
Type |
Default |
Description |
above_periods |
int |
1 |
Number of non-silence periods to keep from the start. Use 1 to remove leading silence. |
duration |
float |
0.1 |
Minimum duration (seconds) that audio must stay above threshold to be considered non-silence. |
threshold |
float |
-48 |
Amplitude threshold in dB below which audio is considered silence. |
below_periods |
int |
0 |
If set to 1, also removes trailing silence. |
below_duration |
float |
None |
Minimum silence duration for trailing detection. Defaults to duration. |
below_threshold |
float |
None |
Threshold for trailing silence detection in dB. Defaults to threshold. |
Rate
Resample to a different sample rate.
fx.Rate(sample_rate=48000)
fx.Rate(sample_rate=44100, quality='very-high')
| Parameter |
Type |
Default |
Description |
sample_rate |
int |
required |
Target sample rate in Hz. |
quality |
str |
"high" |
"quick", "low", "medium", "high", or "very-high". |
Channels
Change the number of audio channels.
fx.Channels(channels=1) # Convert to mono
fx.Channels(channels=2) # Convert to stereo
| Parameter |
Type |
Default |
Description |
channels |
int |
required |
Target number of channels (>= 1). |
Remix
Remix channels with custom mix specification.
fx.Remix(mix=["1,2"]) # Mono mixdown
fx.Remix(mix=["2", "1"]) # Swap L/R
fx.Remix(mix=["1v0.5,2v0.5"]) # Mono with equal volume mix
| Parameter |
Type |
Default |
Description |
mix |
list[str] |
required |
Channel mix specification. Each string defines one output channel. |
Dither
Apply dithering for bit-depth reduction.
fx.Dither() # Default shaped dither
fx.Dither(type='triangular') # TPDF dither
| Parameter |
Type |
Default |
Description |
type |
str |
"shaped" |
"rectangular", "triangular", "gaussian", or "shaped". |
precision |
int |
None |
Target precision in bits. |
Presets
Presets are CompositeEffect subclasses that combine multiple effects into reusable chains. Use them exactly like single effects:
cysox.convert('input.wav', 'output.wav', effects=[fx.Telephone()])
List all presets from the CLI:
Voice
| Preset |
Description |
Chipmunk |
High-pitched voice via speed increase. |
DeepVoice |
Low-pitched voice via speed decrease. |
Robot |
Robotic, metallic voice with chorus and flanger. |
HauntedVoice |
Eerie voice with reverb and pitch shift. |
VocalClarity |
Enhanced voice clarity with EQ and compression. |
Whisper |
Soft, breathy sound with low volume and reverb. |
Lo-Fi
| Preset |
Description |
Telephone |
Narrow bandwidth telephone simulation. |
AMRadio |
AM radio frequency response. |
Megaphone |
Harsh, compressed megaphone sound. |
Underwater |
Muffled, submerged sound. |
VinylWarmth |
Warm analog vinyl character. |
LoFiHipHop |
Lo-fi hip-hop aesthetic with warmth and slow tempo. |
Cassette |
Cassette tape degradation. |
Spatial
| Preset |
Description |
SmallRoom |
Small room reverb. |
LargeHall |
Large concert hall reverb. |
Cathedral |
Very long cathedral reverb. |
Bathroom |
Small tiled bathroom reflections. |
Stadium |
Open stadium ambience. |
Broadcast
| Preset |
Description |
Podcast |
Voice optimized for podcast production. |
RadioDJ |
Bright, compressed radio DJ sound. |
Voiceover |
Clean voiceover processing. |
Intercom |
Intercom/PA system simulation. |
WalkieTalkie |
Walkie-talkie radio effect. |
Musical
| Preset |
Description |
EightiesChorus |
Classic 1980s chorus. |
DreamyPad |
Ethereal pad with reverb and chorus. |
SlowedReverb |
Slowed + reverb aesthetic. |
SlapbackEcho |
Short slapback delay. |
DubDelay |
Dub-style echo with feedback. |
JetFlanger |
Jet engine flanging sweep. |
ShoegazeWash |
Shoegaze-style reverb wash. |
Drum Loops
| Preset |
Description |
HalfTime |
Half-speed for half-time feel. |
DoubleTime |
Double-speed for double-time feel. |
DrumPunch |
Punchy drums with bass boost and compression. |
DrumCrisp |
Crisp, bright drums with high-end boost. |
DrumFat |
Fat, heavy drums with low-end emphasis. |
Breakbeat |
Breakbeat-style processing. |
VintageBreak |
Vintage breakbeat character. |
DrumRoom |
Natural room ambience on drums. |
GatedReverb |
Classic gated reverb on drums. |
DrumSlice |
Tight, sliced drum sound. |
ReverseCymbal |
Reversed cymbal effect. |
LoopReady |
Normalized and trimmed for clean looping. |
Mastering
| Preset |
Description |
BroadcastLimiter |
Broadcast-standard limiting. |
WarmMaster |
Warm mastering with bass and treble shaping. |
BrightMaster |
Bright mastering with treble lift. |
LoudnessMaster |
Loudness-maximized mastering. |
Cleanup
| Preset |
Description |
RemoveRumble |
High-pass filter to remove low-frequency rumble. |
RemoveHiss |
Low-pass filter to reduce high-frequency hiss. |
RemoveHum |
Notch filter to remove 60Hz mains hum. |
CleanVoice |
Voice cleanup with rumble and hiss removal. |
TapeRestoration |
Restore tape recordings with EQ correction. |
Transition
| Preset |
Description |
FadeInOut |
Apply fade-in and fade-out. |
CrossfadeReady |
Prepare audio for crossfading with fades at boundaries. |
Custom Presets
Create reusable effect combinations by subclassing CompositeEffect:
from cysox.fx import CompositeEffect, Bass, Treble, Reverb, Normalize
class MyPreset(CompositeEffect):
"""Custom processing chain."""
def __init__(self, bass_gain=3, reverb_time=60):
self.bass_gain = bass_gain
self.reverb_time = reverb_time
@property
def name(self):
return "my_preset"
@property
def effects(self):
return [
Bass(gain=self.bass_gain),
Treble(gain=2),
Reverb(reverberance=self.reverb_time),
Normalize(),
]
# Use it like any other effect
cysox.convert('input.wav', 'output.wav', effects=[MyPreset(bass_gain=5)])