gate und limit mit expand Funktion

..und da geb ich mal auf die Schnelle ne Funktion mit, die ich heute morgen brauchte. Supersimpel und supernützlich. Ein Eingangssignal(value) muss oben und unten gestutzt werden, gleichzeitig wird der interessante Werte-Bereich maximal gespreizt. Praktisch brauche ich sowas für die Amplitude eines Mikrofonsignals, um Grundrauschen/Nebensignale wegzuschneiden und maximale Lautstärken kontrollieren zu können. So in etwa sollte das aussehen. Eingangssignal grün, Ausgangswerte rot.
gate_limit_expand_example2
In wolfram alpha sieht das so aus:
[code]plot[ (x-0.4)*(1/(0.55-0.4))),{x,0,1} ][/code]
limit_gate_expand
Eine simple lineare Funktion mit neuer Steigung und verschobenem Nullpunkt. Logisch ist, dass die Werte unter 0 bzw. über dem Maximalwert einfach gestutzt werden. (siehe unten code) (Nebenbei: in wolfram alpha – Piecewise wird nur dem Pro-Account als Graph ausgegeben, aber so sollte es wohl aussehen)
[code]plot[ Piecewise[ {0,x<0.1}, {{(x-0.1)*(1/(0.8-0.1))},x>0.1 AND x<(0.8)}, {1,x>0.8} ], {x,0,1}][/code]
Drei „Funktionen“, unter dem Gate-Wert 0.1 = 0, im interessanten Bereich zwischen Gate 0.1 und Limit 0.8, und darüber 1. Plotbereich 0 bis 1.

Wenn man das für einen Wertebereich von 8bit (0-255) anwenden will, sind die Änderungen minimal.
[code]plot[ (x-30)*(255/(180-30)),{x,0,255} ][/code]
für wolfram alpha oder als Simpelstcode fürs Verständnis
[code]
gate = 30
limit =180

out = (in-gate) * (255/ (limit-gate))
if(out>255) out = 255
if(out<0) out = 0
[/code]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert