NAudio convert Eingangsbyte Array in ein Array von Doppel
Frage
Ich bin sehr neu zu NAudio und ich brauche den Puffer von Eingangsabtastwerten von einem Eingabegerät auf ein Array von Doppel zu konvertieren, die von reichen -1 bis 1.
ich das Eingabegerät wie folgt an:
WaveIn inputDevice = new WaveIn();
//change the input device to the one i want to receive audio from
inputDevice.DeviceNumber = 1;
//change the wave format to what i want it to be.
inputDevice.WaveFormat = new WaveFormat(24000, 16, 2);
//set up the event handlers
inputDevice.DataAvailable +=
new EventHandler<WaveInEventArgs>(inputDevice_DataAvailable);
inputDevice.RecordingStopped +=
new EventHandler(inputDevice_RecordingStopped);
//start the device recording
inputDevice.StartRecording();
Nun, wenn der Rückruf ‚inputDevice_DataAvailable‘ aufgerufen wird, bekomme ich einen Puffer von Audiodaten. Ich brauche diese Daten und Array von Double zu konvertieren, die Lautstärke zwischen repräsentieren -1 und 1. Wenn jemand mir helfen kann, dass groß sein würde.
Lösung
puffern die Sie zurück erhalten 16-Bit-Kurz Werte enthalten. Sie können die wavebuffer Klasse von NAudio verwenden, die es leicht machen, die Beispielwerte, wie Shorts zu lesen. Divide by 32768 Ihre Doppel / float Probenwert zu erhalten.
void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
byte[] buffer = e.Buffer;
for (int index = 0; index < e.BytesRecorded; index += 2)
{
short sample = (short)((buffer[index + 1] << 8) |
buffer[index]);
float sample32 = sample / 32768f;
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow