Du multiplizierst ja auch mit einer Variablen "l", die nirgends gesetzt wurde!
Du musst die Audio-Anzeige etwas anderst angehen.
Wenn mehr als ein Sample an einer Stelle dargestellt werden soll, dann musst du über mehrere Samples jeweils den minimalen und maximalen Wert ermitteln:
Dann zeichnest du eine Linie unter Verwendung von
MovoTo und
LineTo.
Delphi-Quellcode:
// YScale:double
// YScale = - 32768 / 100; // max. Wert entspricht 100 Pixeln
MovoTo(xpos, Yoffset+ YScale * Ymin);
LineTo(xpos, YOffset+ YScale * YMax);
Ausserdem:
du versucht auch gleich beide Stereokanäle zu addieren und den Durchschnitt zu bilden.
Entweder zeichnest du jeden Kanal extra, oder du ermittelst getrennt für den L und R Kanal di minimalen
und maximalen Werte über mehrere Samples.
Dann hast du 2 Minima und 2 Maxima. Daraus wird ein Minimum und ein Maximum gebildet und das wird gezeichnet.
Hier kann man evtl. mit verschiedenen Farben die Unterschiede zwischen L & R Kanal hervorheben.