use floats internally
reduce volume if needed to prevent clipping