BASS UDF / DLL: Equalizer mit Filtern; Stör-Geräusche meiden

  • Wenn ich mir mit der BASS UDF einen Equalizer zurecht baue, dann kommen bei zu hohen Boosts Störgeräusche. Mein Handy-EQ meidet diese allerdings mit Hilfe von Filtern, und boostet dennoch sehr stark. Wie kann ich folgenden Code verändern, um Störgeräusche zu entfernen, aber dennoch die Frequenzen zu verstärken?:

    Spoiler anzeigen
    [autoit]

    #include <BASSFX.au3>
    $sFile = @DesktopDir&"\test.mp3"
    Local $aSets[4] = [3, 4, 5, 6]
    Local $aFreqs[4] = [30, 60, 120, 250]
    ConsoleWrite("Setup ran"&@CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    _BASS_STARTUP("bin\bass.dll")
    _BASS_FX_Startup("bin\bass_fx.dll")
    _BASS_Init(0, -1, 100000, 0, "")
    ConsoleWrite("BASS started"&@CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    $hMusic = _BASS_StreamCreateFile(0, $sFile, 0, 0, 0)
    _BASS_ChannelPlay($hMusic, True)
    ConsoleWrite("Channel started"&@CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    sleep(10000)
    _BASS_SetEQ($hMusic, $aSets, $aFreqs)
    ConsoleWrite("EQ started"&@CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    sleep(10000)
    ConsoleWrite("End"&@CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Func _Bass_SetEQ($hStream, $aSets, $aFreqs)
    Local $hFX, $sParamStd
    $hFX = _BASS_ChannelSetFX($hStream,$BASS_FX_BFX_PEAKEQ, 0)
    $sParamStd = "%i|2.5|0|%s|%s|5"
    for $i = 0 to UBound($aFreqs)-1 step +1
    _BASS_FXSetParameters($hFX, StringFormat($sParamStd, $i, $aFreqs[$i], $aSets[$i]))
    Next
    Return $hFX
    EndFunc

    [/autoit]


    ~~ Die Funktion _BASS_SetEQ() stammt im Kern von chesstiger , und wurde von mir nur Array-tauglich gemacht, und leicht verändert ~~

    Danke für hoffentlich kommende Antworten :)

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

  • Wenn ein Signal zu stark verstärkt wird (Was bei starken Boosts diverser Frequenzen der Fall sein sollte), dann führt das zur Überstuerung (Clipping) am Ausgang.

    http://de.wikipedia.org/wiki/%C3%9Cber…alverarbeitung)

    Sinusförmige Signale werden dann oben abgeschnitten und rechteckig. Wenn du eine Frequenz besonders stark anheben willst, ohne Clipping zu erzeugen, dann musst du den Gesamtpegel vorher reduzieren, damit du mehr "Headroom" nach oben hast.

  • Heißt ich senke vorher die gesamt Lautstärke? Oder muss ich jede einzelne Frequenz erniedrigen, und dann insgesamt alles lauter machen, damit es nicht auffällt?

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

  • Die Sache ist, dass auch ich gerne etwas mehr Bass auf den Ohren habe, und nicht weiß, wie ich den boosten soll, wenn bei 5 db unter 100Hz Schluss ist.

    Spoiler anzeigen

    Überraschung!


    MfG Donkey

    • Offizieller Beitrag

    Über den Sinn/Unsinn bestimmte (Bass-)Frequenzbereiche anzuheben kann man wohl ausgiebig streiten. ;)
    Wenn überhaupt würde es wohl in Form einer Dynamikkompression am Sinnvollsten sein. Also die lauten Passagen nicht anheben bzw. absenken und nur die leisen Passagen entsprechend anheben, um ein übersteuern (Clipping) zu verhindern.
    Ob sich das aber mit AutoIt und BASS realisieren lässt, weiss ich nicht.