I just wanted to point out that the Bitcrush library is incorrect, due to the way bits are shifted right and then left to truncate the lower bits.
The problem with this method is that although the variable is an unsigned int, the value is still 2's compliment. So when the sign bit is set to 1, 1's should be entered into the unused bits instead of 0's.
As the library currently is, if no signal is feeding the bitcrusher, the more bits that are reduced the louder the noise becomes.
I've created my own fix for this by testing the sign bit, then either clearing or setting the bits that should be ignored.
The problem with this method is that although the variable is an unsigned int, the value is still 2's compliment. So when the sign bit is set to 1, 1's should be entered into the unused bits instead of 0's.
As the library currently is, if no signal is feeding the bitcrusher, the more bits that are reduced the louder the noise becomes.
I've created my own fix for this by testing the sign bit, then either clearing or setting the bits that should be ignored.