You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In the cpp file Bitcrush.h, the scaleFactor used to multiply the the array to create the representation using new bit depth is 2**bit_depth.
But this will result in a representation with more than the expected bits.
Here is a python code showing the number unique values in the actual and expected representations with a new bit depth
import numpy as np
def generate_audio(bit_depth, verbose=False):
"""
generate a normalized audio with 2**bit_depth unique values
"""
power = 2**bit_depth/2
array = np.arange(-1*power, power+1)
audio = (array/max(array))[1::]
if verbose:
print(f"Input bit_depth: {bit_depth}")
print(f"Possible unique_values: {2**bit_depth}")
print(f"Actual unique_values: {len(np.unique(audio))}")
return audio
audio = generate_audio(bit_depth=16, verbose=True)
new_bit_depth = 4
new_formula_scale = (2**new_bit_depth)/2+1
pedalboard_scale = 2**new_bit_depth
aud_new_formula = np.round(audio*new_formula_scale)/new_formula_scale
aud_pedalboard = np.round(audio*pedalboard_scale)/pedalboard_scale
print(f"Possible unique values with new bitdepth of {new_bit_depth}: {2**new_bit_depth}")
print("Expected unique values with new formula:", len(np.unique(aud_new_formula)))
print("Pedalboard implementation unique values:", len(np.unique(aud_pedalboard)))
Output of the above code
Input bit_depth: 16
Possible unique_values: 65536
Actual unique_values: 65536
Possible unique values with new bitdepth of 4: 16
Expected unique values with new formula: 19
Pedalboard implementation unique values: 33
The error in pedalboard's implementation is huge compared to the new formula.
For a given audio with bit-depth of 16,
Example 1) when new bith depth is 4, pedalboard implementation gives a error of additional 17 unique values
Example 2) when new bith depth is 8, pedalboard implementation gives a error of additional 257 unique values
while the new formula always gives an error of additional 3 unique values
The text was updated successfully, but these errors were encountered:
In the cpp file
Bitcrush.h
, thescaleFactor
used to multiply the the array to create the representation using new bit depth is 2**bit_depth.But this will result in a representation with more than the expected bits.
The expected formula is: scaleFactor = (2**new_bit_depth)/2+1
New formula reference
Here is a python code showing the number unique values in the actual and expected representations with a new bit depth
Output of the above code
The error in pedalboard's implementation is huge compared to the new formula.
For a given audio with bit-depth of 16,
Example 1) when new bith depth is 4, pedalboard implementation gives a error of additional 17 unique values
Example 2) when new bith depth is 8, pedalboard implementation gives a error of additional 257 unique values
while the new formula always gives an error of additional 3 unique values
The text was updated successfully, but these errors were encountered: