G
Gelöschtes Mitglied 9001
Gast
Hallo,
ich möchte WAV-Daten auslesen, bearbeiten und wieder schreiben. Das Laden einer WAV-Datei und das Wiedergeben mit SourceDataLine von AudioSystem.getLine klappt.
Die Daten liegen in einem byte-Array vor.
Meine Wav-Dateien sind in 16 Bit, also habe ich pro Sample und Kanal 2 Bytes, z.B.
puffer[i+0] 1. Byte des i-ten Samples des linken Kanals
puffer[i+1] 2. Byte des i-ten Samples des linken Kanals
puffer[i+2] 1. Byte des i-ten Samples des rechten Kanals
puffer[i+3] 2. Byte des i-ten Samples des linken Kanals
Nun möchte ich die Sample-Daten aber bearbeiten und benötige sie daher als float-Werte. Wie bekomme ich aus den beiden Bytes einen korrekten float-Wert und wie wandle ich diesen float-Wert nach Bearbeitung wieder in zwei richtige Bytes um?
habe ich probiert, liefert aber nicht das richtige Ergebnis, denn nach dem Wiederzusammensetzen des unbearbeiteten Samples kam nicht mehr der Originalklang heraus.
Danke für alle Tipps!
ich möchte WAV-Daten auslesen, bearbeiten und wieder schreiben. Das Laden einer WAV-Datei und das Wiedergeben mit SourceDataLine von AudioSystem.getLine klappt.
Die Daten liegen in einem byte-Array vor.
Meine Wav-Dateien sind in 16 Bit, also habe ich pro Sample und Kanal 2 Bytes, z.B.
puffer[i+0] 1. Byte des i-ten Samples des linken Kanals
puffer[i+1] 2. Byte des i-ten Samples des linken Kanals
puffer[i+2] 1. Byte des i-ten Samples des rechten Kanals
puffer[i+3] 2. Byte des i-ten Samples des linken Kanals
Nun möchte ich die Sample-Daten aber bearbeiten und benötige sie daher als float-Werte. Wie bekomme ich aus den beiden Bytes einen korrekten float-Wert und wie wandle ich diesen float-Wert nach Bearbeitung wieder in zwei richtige Bytes um?
Code:
float x1 = puffer[i+0] + puffer[i+1]*256
int x2 = puffer[i+0] | (puffer[i+1] << 8)
Danke für alle Tipps!