Получите уровни звука для 16 и 32-битных потоков записи - PullRequest
0 голосов
/ 24 октября 2019

Я использовал this

Я попробовал второй пример с использованием плавающего буфера и не могу заставить его работать как есть. Я пробовал короткий буфер и делил на максимальный короткий, и это работало. поэтому я попытался разделить на максимальное число с плавающей точкой буфера с плавающей точкой, и это не сработало. Это мои микрофонные возможности? также я делаю правильное деление (как это не в примере)?

1 Ответ

1 голос
/ 24 октября 2019

Вам не нужно ничего делать с плавающим буфером, как показано в ссылке, которую вы разместили:

void OnDataAvailable(object sender, WaveInEventArgs args)
{
    ...
    var buffer = new WaveBuffer(args.Buffer);
    // interpret as 32 bit floating point audio
    for (int index = 0; index < args.BytesRecorded / 4; index++)
    {
        var sample = buffer.FloatBuffer[index];
        ...
    }
}

Если вам нужны 32-битные целочисленные выборки, вам нужно получить доступ к IntBuffer поле и деление на макс. int.

var sample = buffer.IntBuffer[index] / 4294967296f;
...