Изменить усиление громкости в буфере аудиосэмплов

Хочу увеличить громкость в буфере с голосовыми данными. Дело в том, что я использую DirectSound, и у меня есть один первичный и один вторичный буфер - микширование всех потоков выполняется вручную. В голосовом чате все участники могут иметь независимые уровни громкости. Я умножаю данные каждого потока на значение (усиление) и суммирую их в один буфер. Все работает нормально, но когда я пытаюсь умножить данные на значение больше 1.0f - я слышу какие-то обрезки или что-то в этом роде.

Я ' Я пробовал использовать компрессор эффектов Audacity, но это не помогает уменьшить странный шум.

Возможно, мне стоит изменить усиление как-нибудь иначе? Или просто использовать другой алгоритм постобработки?

ОБНОВЛЕНИЕ: Вау, я только что обнаружил интересную вещь! Я сбросил звук перед увеличением громкости и сразу после этого.

Вот картинка Clipped audio

Простите за качество - думаю, так и должен выглядеть звук (сам нарисовал красную линию). Действительно похоже, что значения превышают образец данных. Но я не могу понять ПОЧЕМУ? Мой сэмплбуфер - BYTE, но я обращаюсь к нему только через короткий указатель. Подписано, но вырезка бывает даже при * ptr около 15-20 тысяч.

6
задан BrechtDeMan 22 January 2016 в 10:50
поделиться