scaper icon indicating copy to clipboard operation
scaper copied to clipboard

Reverb and clipping/peak normalization

Open pseeth opened this issue 3 years ago • 0 comments

SoX reverb doesn't play well with clipped signals, but we currently don't have a unit test for this. We should add one.

Here's a script using nussl and SoxBindings to show the issue (run in a notebook):

import soxbindings as sox
import copy
data = nussl.AudioSignal(
    nussl.efz_utils.download_audio_file('marimba_timbre.mp3')
)
data.peak_normalize()
original = copy.deepcopy(data)
print('Original')
original.embed_audio()
clip = original * 10.0
print('Clipping (WARNING: Volume)')
clip.embed_audio()
tfm = sox.Transformer()
tfm.reverb(100)
out = tfm.build_array(
    input_array=clip.audio_data.T,
    sample_rate_in=clip.sample_rate
)
out = clip.make_copy_with_audio_data(out.T)
print('Clipping + reverb')
out.embed_audio()
out.peak_normalize()
print('Peak normalized clipping + reverb')
out.embed_audio()
tfm = sox.Transformer()
tfm.reverb(100)
out = tfm.build_array(
    input_array=original.audio_data.T,
    sample_rate_in=original.sample_rate
)
out = original.make_copy_with_audio_data(out.T)
print('Original + reverb')
out.embed_audio()

pseeth avatar Sep 28 '20 19:09 pseeth