Hallo,
Zitat von
Flocke:
ziel2^ := (Data2^ + Data4^) div 2; // Halbe Lautstärke -> kein Überlauf möglich
Das würde ich so nicht machen. Besser ist wohl mit Automatic Gain Control (AGC). Funktioniert eigentlich ganz einfach:
Werte Zusammenzählen.
Wenn die Werte zu groß sind, den Wert mittels eines Faktors zurechtstutzen (z.B. mit 0.5 malnehmen).
Nun bei jeder weiteren Addition den Faktor erhöhen, bis der Faktor wieder Eins ist oder eben gegebenenfalls den Faktor wieder anpassen, wenn das Ergebnis zu groß ist.
Damit wird dein Stream nicht zu leise, und plötzliche Lautstärkewechsel werden vermieden. Den Anstieg des Faktors am besten ausprobieren oder per Eingabe abfragen. Je kleiner die Erhöhung, desto weniger "unruhig" ist der Lautstärkeverlauf, aber die Lautstärke bzw. die Dynamik geht etwas flöten.
Gruß
xaromz