kleiner mixer mit bass.au3

  • hey liebe community
    also
    ich will jetz ma anfangen mich mit der bass.au3 zu beschäftigen
    jetz dacht ich mir ich mach so n kleines mix tool
    wie kann ich das anstellen das ich 2 lieder mixe
    mit channels?
    oda muss ich das anders machen

  • Hi

    Um 2 Lieder gleichzeitig abzuspielen brauchst du nur 2 Streams zu starten:

    Spoiler anzeigen
    [autoit]

    #include "Bass.au3"

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

    $hGui = GUICreate("", 150, 120)
    $hSlider1 = GUICtrlCreateSlider(35, 10, 30, 100, 0x0006)
    $hSlider2 = GUICtrlCreateSlider(85, 10, 30, 100, 0x0006)
    GUISetState()

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

    _BASS_Startup()

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

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

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

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

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

    $hStream1 = _BASS_StreamCreateFile(False, $sFile1, 0, 0, 0)
    $hStream2 = _BASS_StreamCreateFile(False, $sFile2, 0, 0, 0)

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

    _BASS_ChannelPlay($hStream1, True)
    _BASS_ChannelPlay($hStream2, True)

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

    While _BASS_ChannelIsActive($hStream1)
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    ExitLoop
    Case $hSlider1
    _BASS_ChannelSetAttribute($hStream1, $BASS_ATTRIB_VOL, (100 - GUICtrlRead($hSlider1)) / 100)
    Case $hSlider2
    _BASS_ChannelSetAttribute($hStream2, $BASS_ATTRIB_VOL, (100 - GUICtrlRead($hSlider2)) / 100)
    EndSwitch
    Sleep(20)
    WEnd

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

    _BASS_StreamFree($hStream1)
    _BASS_StreamFree($hStream2)

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

    _BASS_Free()

    [/autoit]

    Wenn du mit dem zusammengemixten Signal noch was machen möchtest, z.B. Gesammtlautstärke abfragen, dann solltest du _BASS_Mixer_StreamCreate und _BASS_Mixer_StreamAddChannel verwenden.

    Spoiler anzeigen
    [autoit]

    #include "Bass.au3"
    #include "BassMix.au3"

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

    $hGui = GUICreate("", 150, 120)
    $hSlider1 = GUICtrlCreateSlider(35, 10, 30, 100, 0x0006)
    $hSlider2 = GUICtrlCreateSlider(85, 10, 30, 100, 0x0006)
    GUISetState()

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

    _BASS_Startup()
    _BASS_MIX_Startup()

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

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

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

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

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

    $hStream1 = _BASS_StreamCreateFile(False, $sFile1, 0, 0, $BASS_STREAM_DECODE)
    $hStream2 = _BASS_StreamCreateFile(False, $sFile2, 0, 0, $BASS_STREAM_DECODE)

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

    $hMixer = _BASS_Mixer_StreamCreate(44100, 2, 0)
    _BASS_Mixer_StreamAddChannel($hMixer, $hStream1, 0)
    _BASS_Mixer_StreamAddChannel($hMixer, $hStream2, 0)

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

    _BASS_ChannelPlay($hMixer, True)

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

    While _BASS_ChannelIsActive($hMixer)
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    ExitLoop
    Case $hSlider1
    _BASS_ChannelSetAttribute($hStream1, $BASS_ATTRIB_VOL, (100 - GUICtrlRead($hSlider1)) / 100)
    Case $hSlider2
    _BASS_ChannelSetAttribute($hStream2, $BASS_ATTRIB_VOL, (100 - GUICtrlRead($hSlider2)) / 100)
    EndSwitch
    Sleep(20)
    WEnd

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

    _BASS_StreamFree($hStream1)
    _BASS_StreamFree($hStream2)

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

    _BASS_Free()

    [/autoit]

    mfgE