Как избежать сбоев звука при переключении громкости аудиосистемы при каждом обновлении ()-Frame?

Я разрабатываю аудиоинструмент, который одновременно воспроизводит 64 аудиоисточника. Поэтому я создал четыре массива, содержащих по 16 аудиоисточников каждый. Каждый массив аудиоисточников направляется на свой собственный микшер. Кроме того, два микшера выводятся на левый канал, два на правый. Мой размер буфера DSP установлен на "Лучшая производительность", что означает 1024 сэмпла и достаточно реальных / виртуальных голосов.

Вначале 60 аудиоисточников установлены на громкость = 0, а четыре из них работают с громкостью = 0,5. Каждое Обновление ()- Кадр, я устанавливаю Громкость тех, кто играет с 0,5 на ноль, поэтому устанавливая четыре новых аудиоисточника, которые были равны нулю до 0,5.

Что-то вроде этого:

void SwitchSources()
 {
     noseposInd++;
     if (noseposInd > 15) noseposInd = 0;

     audioSources_Lm[noseposIndTemp].volume = 0.0f;
     audioSources_Ln[noseposIndTemp].volume = 0.0f;
     audioSources_Rm[noseposIndTemp].volume = 0.0f;
     audioSources_Rn[noseposIndTemp].volume = 0.0f;

     audioSources_Lm[noseposInd].volume = 0.5f;
     audioSources_Ln[noseposInd].volume = 0.5f;
     audioSources_Rm[noseposInd].volume = 0.5f;
     audioSources_Rn[noseposInd].volume = 0.5f;

     noseposIndTemp = noseposInd;
}

В целях тестирования я загрузил прямоугольный сигнал с частотой f = 2 Гц (в результате слышимый щелчок в секунду) в каждый Audiosource. Запись моего вывода с Audacity приводит к чему-то, что можно увидеть на прилагаемой фотографии:

Похоже, что буфер одного из четырех сигналов не записывается на выход, потому что амплитуда положительного или отрицательного импульса равна половине. Ширина "вырезов" составляет ровно одну длину блока. Имеется в виду 1024 выборки с частотой дискретизации 44,1 кГц, так что выходной сигнал отсутствует в течение примерно 23 мс.

Увеличение скорости изменения громкости также увеличивает количество выемок / тайм-аутов или, как бы то ни было, это можно назвать. Кто-нибудь имел такую ​​же проблему или может помочь с некоторыми знаниями о том, как метод Update()- и аудио-блок записи микшеров мешают?

Заранее спасибо!

0 ответов

Другие вопросы по тегам