Zitat von
divBy0:
Ähm, ich glaub du möchtest eher einen Limiter programmieren?
Limiter und Kompressor sind aus SW-Sicht das Gleiche: Bei beiden wird ein Wert X transformiert, Du hast also eine Limiter/Kompressorfunktion f(X).
Im Einfachsten Fall (wenn die Funktion nichts machen soll), dann wäre das einfach f(X) = X. Bei einem Limiterwürde man z.B
f(X) = If X<90 then X else If X<110 then 90+(X-90)/2 else X:=100
implementieren. Wenn 0<=X<=110 ist, dann wird ab einer Lautstärke von 90 gedrosselt, und lauter als 100 wird das Ganze nicht, Man kann sich aber auch eine komplexe Funktion (z.B. durch ein Spline definiert) vorstellen, die leise Passagen verstärkt und laute eben etwas abschwächt... Das Ganze kann man noch auf die Spitze treiben, in dem eine FFT vorgeschaltet wird und so eine Manipulation auch noch abhängig von der Frequenz ist: Bässe anheben, Mitten runter etc...