Tune-Splitter / effects.py
CCockrum's picture
Update effects.py
203c72c verified
# effects.py
from pedalboard import Pedalboard, Reverb, Delay, Chorus, Compressor, Gain, HighpassFilter, LowpassFilter
from pedalboard.io import AudioFile
def add_vocal_effects(input_file, output_file,
reverb_room_size=0.6, vocal_reverb_dryness=0.8, reverb_damping=0.6, reverb_wet_level=0.35,
delay_seconds=0.4, delay_mix=0.25,
compressor_threshold_db=-25, compressor_ratio=3.5,
compressor_attack_ms=10, compressor_release_ms=60,
gain_db=3):
effects = [HighpassFilter()]
effects.append(Reverb(
room_size=reverb_room_size,
damping=reverb_damping,
wet_level=reverb_wet_level,
dry_level=vocal_reverb_dryness,
))
effects.append(Compressor(
threshold_db=compressor_threshold_db,
ratio=compressor_ratio,
attack_ms=compressor_attack_ms,
release_ms=compressor_release_ms,
))
if delay_seconds > 0 or delay_mix > 0:
effects.append(Delay(delay_seconds=delay_seconds, mix=delay_mix))
if gain_db:
effects.append(Gain(gain_db=gain_db))
board = Pedalboard(effects)
with AudioFile(input_file) as f:
with AudioFile(output_file, 'w', f.samplerate, f.num_channels) as o:
while f.tell() < f.frames:
chunk = f.read(int(f.samplerate))
effected = board(chunk, f.samplerate, reset=False)
o.write(effected)
def add_instrumental_effects(input_file, output_file,
highpass_freq=100, lowpass_freq=12000,
reverb_room_size=0.5, reverb_damping=0.5, reverb_wet_level=0.25,
compressor_threshold_db=-20, compressor_ratio=2.5,
compressor_attack_ms=15, compressor_release_ms=80,
gain_db=2):
effects = [
HighpassFilter(cutoff_frequency_hz=highpass_freq),
LowpassFilter(cutoff_frequency_hz=lowpass_freq),
]
effects.append(Reverb(
room_size=reverb_room_size,
damping=reverb_damping,
wet_level=reverb_wet_level,
))
effects.append(Compressor(
threshold_db=compressor_threshold_db,
ratio=compressor_ratio,
attack_ms=compressor_attack_ms,
release_ms=compressor_release_ms,
))
if gain_db:
effects.append(Gain(gain_db=gain_db))
board = Pedalboard(effects)
with AudioFile(input_file) as f:
with AudioFile(output_file, 'w', f.samplerate, f.num_channels) as o:
while f.tell() < f.frames:
chunk = f.read(int(f.samplerate))
effected = board(chunk, f.samplerate, reset=False)
o.write(effected)