[PD] bit crusher abstraction
matju at artengine.ca
Thu Apr 29 17:17:28 CEST 2010
On Thu, 29 Apr 2010, Roman Haefeli wrote:
> Reduced bit depth (which is what I think 'bit-crushing' means) can be
> achieved by dividing the signal by x, pass it through something like
> [int~], multiply it by x again. An [int~] can be implemented by using
> [wrap~] and [-~], which are both vanilla.
It is also worth considering adding a DC offset. Your [wrap~] solution
implements a floor-function, that is, rounding downwards. You can make it
round to closest, by adding x/2 before rounding downwards.
[expr int($v1)] is rounding zerowards (thus output zero corresponds to a
twice bigger input range as any other input). Thus it will behave in a
weird unequal way.
When the volume gets low, the _effective_ bits-per-sample gets very low,
because the relative precision of integers is proportional to amplitude
(which is not the case with floats). Therefore, even with 16-bit audio, if
your amplitude is 0.0001 times the max, it will feel as if it were 3-bit
audio. In such circumstances, the differences between the possible
roundings will become quite audible.
_ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard, Montréal, Québec. téléphone: +1.514.383.3801
More information about the Pd-list