Spaces:
Sleeping
Sleeping
# 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) | |