Forum: Multimedia
Delphi
by Flocke,
31. Jul 2005
Hui, das ist aber nicht ungefährlich, weil du dann bei jeder Skalierung den 0-Punkt verschiebst :roll:.
Beispiel: du willst N Samples auf die halbe Lautstärke reduzieren, die sind aber alle 0 (also Stille). Dann kriegst du danach N Samples mit dem Wert -16384.
Y := ((X + 32768) / 2) - 32768;
((0 + 32768) / 2) - 32768 =
32768 / 2 - 32768 =
16483 - 32768...
Forum: Multimedia
Delphi
by Flocke,
30. Jul 2005
16-Bit Audiosamples werden vorzeichenbehaftet gespeichert, der Wert muss also zwischen -32768 und +32767 liegen.
Außerdem ist eine dynamische Signalanpassung ein etwas kompliziertes Unterfangen für jemanden, der zu Beginn der Fragestellung nicht wusste, wie man zwei Audiosignale mischt.
@Six:
Wenn du die kompletten Audiostreams auf einen Schlag verarbeitest, dann kannst du zunächst den...
Forum: Multimedia
Delphi
by Flocke,
30. Jul 2005
Also in deinem Beispiel mixt du zwei Mono-Streams zu einem Stereo-Stream zusammen.
Mono-Stream: jeweils ein 16-Bit-Wert je Sample
Stereo-Stream: jeweils zwei 16-Bit-Werte je Sample, abwechselnd links und rechts.
Das Zusammenmischen von Audiodaten ist normalerweise eine einfache Addition, wobei du aber auf Überlauf prüfen oder ggf. eine Anpassung der Lautstärke machen musst.
function...