Генерация синусоиды: неверный вывод

Я пытаюсь создать простую синусоидальную волну в rtaudio, чтобы убедиться, что я понимаю, что происходит. Тем не менее, это выходит не так.

У меня есть глобальный float timecи обратный вызов, вызванный с openStream который должен заполнить буфер с образцами.

float freq = 440; // center frequency
int SAMPLE_RATE = 44100;
for (int i = 0; i < numFrames; i++) {
float v = sin(2 * M_PI * freq * (timec / SAMPLE_RATE));
outputbuffer[i] = v;
timec++;
}

Что я сделал не так? Вместо синусоидальной волны я слышу низкий звук.

-3

Решение

Отвечая на мой собственный вопрос.

Rtaudio хитро обрабатывает выходной буфер. Массив с плавающей запятой предназначен не для одного моноканала, он содержит слоты, представляющие один кадр для каждого канала, за которыми следуют несколько слотов для следующего кадра и т. Д. Корректировка ключа, поскольку этот выход имеет 2 канала:

outputbuffer[2 * i] = v;

выводить только на один канал.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]