Zitat von
Boz:
Ich gehe mal von normalen Stereo-Waves in 44.1 kHz und 16 Bit aus.
Dann ist es eigentlich doch recht einfach.
1. WAV-Dateien liegen im sog. RIFF-Format vor -
Daniel hat
in diesem Beitrag einen RIFF-Parser vorgestellt. Damit kannst du die zusätzlichen Informationen von den eigentlichen Sample-Daten trennen.
2. Mit den reinen Samples (Sample = Messwert) kannst du mehr oder weniger einfach rechnen: die Sample-Werte sind vorzeichenbehaftete 16-Bit Integer-Werte (SmallInt). Wenn du dir einmal die normale Anzeige in Audio-Programmen vorstellst (z.B. Wellenform: /\_/\_/\_/), dann entsprechen die Werte der Samples der Y-Koordinate dieser Darstellung. Die Werte für Links und Rechts stehen immer abwechselnd in den Daten.
Das heißt
a) du kannst die Lautstärke verändern, indem du alle Sample-Werte mit einem festen Wert multiplizierst;
b) du kannst zwei Aufnahmen mischen (= überlagern), indem du die entsprechenden Sample-Werte addierst.
Beim Rechnen solltest du nur aufpassen, dass es nicht zu Überläufen kommt (Endwert >32767 bzw. <-32768), sonst verzerrt das Ganze und du bekommst sog. "Digital Distortion".