NAudio перебирается с WaveBytes - PullRequest
0 голосов
/ 11 октября 2019

Я играю / изучаю с помощью NAudio, пытаюсь создать измеритель громкости (для стереозвука) при прослушивании LoopBack. LoopbackCapture работает, теперь моя сделка состоит в том, чтобы перехватывать каждый канал с каждым образцом в байтовом массиве для обработки и создания моей графики.

Я использую прогрессбар для отображения значений (также с ползунком для управленияамплитуда [умножьте значение байта между 1 и 100])

Кажется, что VUMeters работают, но я не могу разделить каналы, когда я пытаюсь запустить музыку в петле только звук левого канала, оба индикатора progressBar движутся, показывая значения.

Я имею дело с 32-битной выборкой и 2 каналами. Это попытка перехватить каналы

loopbackCapture.DataAvailable += (s, args) =>
{
     int bitsPerSample = loopbackCapture.WaveFormat.BitsPerSample;
     if (bitsPerSample == 32)
     {
          WaveBuffer wavebuffer = new WaveBuffer(args.Buffer);

          List<float> bufferLeft = new List<float>();
          List<float> bufferRight = new List<float>();
          for (int i = 0; i < wavebuffer.MaxSize / 8; i += 8) //32bits divided 8bits [1byte] = 4 bytes per channel...so 4bytes*2channels = 8
          {
                bufferLeft.Add(wavebuffer.FloatBuffer[i]);
                bufferLeft.Add(wavebuffer.FloatBuffer[i+1]);
                bufferLeft.Add(wavebuffer.FloatBuffer[i+2]);
                bufferLeft.Add(wavebuffer.FloatBuffer[i+3]);

                bufferRight.Add(wavebuffer.FloatBuffer[i+4]);
                bufferRight.Add(wavebuffer.FloatBuffer[i+5]);
                bufferRight.Add(wavebuffer.FloatBuffer[i+6]);
                bufferRight.Add(wavebuffer.FloatBuffer[i+7]);
           }
     }
}

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

...