Я играю / изучаю с помощью 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]);
}
}
}
У меня сейчас, когда моя проблема в обработке буфера, может кто-нибудь мне помочь?