Use the signal object where possible.
Move the logic of scaling into the signal implementation.
Make the tests depend on codecs that won`t change.