Low-, Mid- und High Töne filtern (EQ)

  • Hey @ all,

    wie kann man (z.b. mittels bass.dll) die Low,- Mid- und Highfrequenzen rausfiltern? Ich habe im Forum schonmal danach gesucht, bin dabei aber nur auf Visualizer von Equalizern gekommen... Was ich suche, ist ein einfaches, verständliches Script, mit dem man eine Audioquelle in diese 3 Bereiche teilen kann. Ich denke mal, das sollte in AutoIt mittels einer DLL/UDF realisierbar sein.

    mfG

    Developer30

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

    Einmal editiert, zuletzt von Developer30 (31. Juli 2010 um 17:45)

  • Wie man das löst, hängt davon ab was du genau machen willst.

    Schau dir einfach mal dieses Beispiel an und dann sehen wir weiter ;) :

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_UseX64=n
    #include "Bass.au3"
    #include "BassMix.au3"
    #include "BassFX.au3"

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

    $iFreq_Lo = 800; Hz
    $iFreq_Hi = 3000; Hz

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

    HotKeySet("{ESC}", "_Exit")

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

    $sFile = FileOpenDialog("Open...", "", "playable formats (*.MP3;*.MP2;*.MP1;*.OGG;*.WAV;*.AIFF;*.AIF)")

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

    _BASS_Startup(@ScriptDir & "\bass.dll")
    _BASS_MIX_Startup(@ScriptDir & "\bassmix.dll")
    _BASS_FX_Startup(@ScriptDir & "\bass_fx.dll")

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

    _BASS_Init(0, -1, 44100, 0, "")

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

    $hStream = _BASS_StreamCreateFile(False, $sFile, 0, 0, $BASS_STREAM_DECODE)

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

    $hSplit_Lo = _BASS_Split_StreamCreate($hStream, $BASS_STREAM_DECODE, 0)
    $hLFX_Lo = _BASS_ChannelSetFX($hSplit_Lo, $BASS_FX_BFX_BQF, 1)
    _BASS_FXSetParameters($hLFX_Lo, $BASS_BFX_BQF_LOWPASS & "|" & $iFreq_Lo & "|0|1|0|0|" & $BASS_BFX_CHANALL)

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

    $hSplit_Mi = _BASS_Split_StreamCreate($hStream, $BASS_STREAM_DECODE, 0)
    $hLFX_MiLo = _BASS_ChannelSetFX($hSplit_Mi, $BASS_FX_BFX_BQF, 1)
    _BASS_FXSetParameters($hLFX_MiLo, $BASS_BFX_BQF_HIGHPASS & "|" & $iFreq_Lo & "|0|1|0|0|" & $BASS_BFX_CHANALL)
    $hLFX_MiHi = _BASS_ChannelSetFX($hSplit_Mi, $BASS_FX_BFX_BQF, 1)
    _BASS_FXSetParameters($hLFX_MiHi, $BASS_BFX_BQF_LOWPASS & "|" & $iFreq_Hi & "|0|1|0|0|" & $BASS_BFX_CHANALL)

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

    $hSplit_Hi = _BASS_Split_StreamCreate($hStream, $BASS_STREAM_DECODE, 0)
    $hLFX_Hi = _BASS_ChannelSetFX($hSplit_Hi, $BASS_FX_BFX_BQF, 1)
    _BASS_FXSetParameters($hLFX_Hi, $BASS_BFX_BQF_HIGHPASS & "|" & $iFreq_Hi & "|0|1|0|0|" & $BASS_BFX_CHANALL)

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

    $aInfo = _BASS_ChannelGetInfo($hStream)
    $hMixer = _BASS_Mixer_StreamCreate($aInfo[0], $aInfo[1], 0)
    _BASS_Mixer_StreamAddChannel($hMixer, $hSplit_Lo, 0)
    ;_BASS_Mixer_StreamAddChannel($hMixer, $hSplit_Mi, 0)
    ;_BASS_Mixer_StreamAddChannel($hMixer, $hSplit_Hi, 0)

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

    _BASS_ChannelPlay($hMixer, True)

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

    While _BASS_ChannelIsActive($hMixer)
    Sleep(10)
    WEnd

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

    _Exit()

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

    Func _Exit()
    _BASS_ChannelStop($hMixer)
    _BASS_Free()
    Exit
    EndFunc ;==>_Exit

    [/autoit]
  • hängt davon ab was du genau machen willst.

    ich will eigentlich genau auf das hinaus, was du in deinem Beispielscript geschrieben hast, nur als Audioquelle möchte ich dann den Mic-Eingang benutzen. Also das soll dann auch wieder über die Boxen ausgegeben werden (ich möchte dann eine Audiodatei über mein mic eingang abspielen und das Script soll diese dann in den Lautsprechern ausgeben).

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • Gibt es irgendwo eine hilfe zu Bass.dll, kann keine finden

    in der Bass.au3 sind die Parameter zu jeder Funktion beschrieben.

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • Ein SplitStream schein mit einem RecordChannel nicht zu funktionieren.
    Du kannst aber einen zusätzlichen Buffer verwenden, um die Record-Samples in den SourceStream zu füttern.

    Beispiel im Anhang

    Gibt es irgendwo eine hilfe zu Bass.dll, kann keine finden


    BrettF und ich arbeiten zur Zeit an einer Hilfe im chm-Format, das wird aber noch länger dauern bis wir fertig sind.

    mfgE

  • danke, du hast mir weitergeholfen.
    thx :thumbup:

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."