В примере LiveEffect потоки записи и воспроизведения имеют значение AudioFormat::I16
, то есть 16-битные целые числа.В этой строке вы приводите к float
:
auto *outputData = static_cast<float *>(audioData);
Это вызовет искажение, которое вы слышите, поэтому вместо этого просто приведите к int16_t
и умножьте на постоянную амплитуду.
Убедитесь, что увеличенное значение семпла не превышает INT16_MAX
, иначе вы получите обтекание и искажение.