Musikplayer mit Bass.dll

  • Hi @ all
    Habe ein Problem mit der Bass.dll. Ich will einen MediaPlayer damit schreiben. Nur habe ich das Problem, dass er keine Datei abspielt ;( . Er geht dem Play-Zweig zwar ab, aber man hört nichts und es kommt auch keine MsgBox mit Erfolg(hatte ich vorher eingebaut) beim _BASS_ChannelPlay kommt . Hier mal der Skript:

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <Sound.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    #include <Array.au3>
    #include <GUIListBox.au3>
    #include <...\Bass.au3>
    #include <...\BassConstants.au3>

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

    Global $position, $paus = 0, $lang, $soundplay, $re, $Titelanzahl = 0, $List, $MusicHandle

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

    $gMusikPfad = IniRead(@ScriptDir & "\Data\Daten.uid", "Musik-Pfad", "", @DesktopDir)

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

    #cs
    GUI geändert
    Dateiformate geändert
    #ce

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

    $bass_dll = DllOpen("...\BASS.dll");Open Bass.DLL. Required for all function calls.
    _BASS_Init($bass_dll, 0, -1, 44100, 0, "");Initalize bass. Required for most functions.
    If @error Then;Check if bass iniated. If not, we cannot continue.
    MsgBox(0, "Error", "Could not initialize audio")
    Exit
    EndIf

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

    #Region
    $Mediaplayer_GUI = GUICreate("Mediaplayer", 396, 396, 195, 127)
    GUISetBkColor(0xFFFFFF)
    GUICtrlCreateLabel("Position:", 40, 56, 41, 17)
    $posi = GUICtrlCreateInput("", 88, 56, 57, 21)
    GUICtrlCreateLabel("Länge:", 40, 112, 36, 17)
    $bleibend = GUICtrlCreateInput("", 88, 112, 57, 21)
    GUICtrlCreateLabel("Lautstärke:", 32, 176, 54, 17)
    $Slider = GUICtrlCreateSlider(96, 168, 126, 29)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlSetData(-1, IniRead(@ScriptDir & "\Data\Settings.uid", "Settings", "volume", 50))
    GUICtrlCreatePic(@ScriptDir & "\Data\Buttons\Notenblattnew.jpg", 3, 0, 239, 393, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Stop = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Stop.ico", 0, 16, 296, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
    $Play = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Play.ico", 0, 56, 296, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
    $Pause = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Pause.ico", 0, 96, 296, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
    $Add = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Add.ico", 0, 56, 336, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
    $Next = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Next.ico", 0, 176, 296, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
    $Before = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Button Previous.ico", 0, 136, 296, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
    $PlayList = GUICtrlCreateListView("Nr.|Name|Speicherplatz", 248, 0, 146, 374)
    GUICtrlSendMsg(-1, 0x101E, 0, 28)
    GUICtrlSendMsg(-1, 0x101E, 1, 112)
    GUICtrlSendMsg(-1, 0x101E, 2, 50)
    $Save = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\floppy.ico", 0, 136, 336, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
    $Load = GUICtrlCreateIcon(@ScriptDir & "\Data\Buttons\Find.ico", 0, 96, 336, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
    $Auto = GUICtrlCreateCheckbox("Playlist einschalten", 32, 232, 177, 17)
    $MenuItem1 = GUICtrlCreateMenu("Allgemein")
    $MenuItem3 = GUICtrlCreateMenuItem("", $MenuItem1)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $M_Exit = GUICtrlCreateMenuItem("Exit", $MenuItem1)
    $MenuItem5 = GUICtrlCreateMenu("Optionen")
    $Pfad = GUICtrlCreateMenuItem("Pfad", $MenuItem5)
    $MenuItem2 = GUICtrlCreateMenu("Info")
    $M_Info = GUICtrlCreateMenuItem("Info", $MenuItem2)
    GUISetState(@SW_SHOW)
    #EndRegion

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $M_Exit
    IniWrite(@ScriptDir & "\Data\Settings.uid", "Settings", "volume", GUICtrlRead($Slider));er schreibt den aktuellen wert der lautstärke in die datei
    _BASS_Free($bass_dll);Free Resources
    Exit
    Case $Play
    Switch $paus
    Case 2; Song Paused, Resume.
    _BASS_Start($bass_dll)
    $paus = 1
    Case 0 ; Song stopped, start from begining.
    If GUICtrlRead($Auto) = $GUI_UNCHECKED Then
    $SoundPfad = _GUICtrlListView_GetItemText($PlayList, _GUICtrlListView_GetSelectionMark($PlayList), 2)
    Else
    $SoundPfad = _GUICtrlListView_GetItemText($PlayList, Random(1, $Titelanzahl), 2)
    EndIf
    $MusicHandle = _BASS_StreamCreateFile($bass_dll, False, $SoundPfad, 0, 0, $BASS_STREAM_AUTOFREE)
    If @error Then;Check if we opened the file correctly.
    MsgBox(0, "Error", "Could not load audio file" & @CR & "Error = " & @error)
    Exit
    EndIf
    $Play = _BASS_ChannelPlay($bass_dll, $MusicHandle, 1)
    If @error Then;Check if we opened the file correctly.
    MsgBox(0, "Error", "Could not play audio file" & @CR & "Error = " & @error)
    Exit
    EndIf
    $paus = 1
    ;$lang = _BASS_ChannelGetLength($bass_dll, $MusicHandle, $BASS_POS_BYTE)
    ;GUICtrlSetData($bleibend, $lang)
    EndSwitch
    Case $Pause
    ; Song Playing, Pause
    ;Pause song
    _BASS_Pause($bass_dll)
    $paus = 2
    Case $Stop
    ;Stop Song
    _BASS_ChannelStop($bass_dll, $MusicHandle)
    $paus = 0
    Case $Save
    _PlayListSave()
    Case $Add
    _AddPlay()
    Case $Load
    _PlayListLoad()
    Case $Pfad
    $MusikPfad = FileSelectFolder("Bitte den Musikordner auswählen", @HomeDrive)
    IniWrite(@ScriptDir & "\Data\Daten.uid", "Musik-Pfad", "", $MusikPfad)
    $gMusikPfad = IniRead(@ScriptDir & "\Data\Daten.uid", "Musik-Pfad", "", @DesktopDir)
    EndSwitch
    ;$BASS_CONFIG_GVOL_STREAM
    ;_BASS_SetConfig($bass_dll,$BASS_CONFIG_GVOL_SAMPLE ,10000) ;GUICtrlRead($Slider)*100)
    SoundSetWaveVolume(100)
    If $paus = 1 Then
    $position = _BASS_ChannelGetPosition($bass_dll, $MusicHandle, $BASS_POS_BYTE)
    GUICtrlSetData($posi, $position) ;War irgendwie weg ;)
    EndIf
    If $position = $lang Then
    _SetBack()
    _BASS_ChannelStop($bass_dll, $MusicHandle)
    $paus = 0
    EndIf
    WEnd

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

    Func _PlayListSave()
    #Region ### START Koda GUI section ### Form=C:\Users\Christopher\Desktop\Media Player\BackUp\Form2.kxf
    $PlayListSave_GUI = GUICreate("Sichern", 275, 228, 303, 219)
    $List = GUICtrlCreateList("", 0, 0, 272, 162)
    _GUICtrlListBox_Dir($List, @ScriptDir & "\Playlists\*.pl")
    $PlayListSave_Sichern = GUICtrlCreateButton("Sichern", 32, 200, 75, 25, 0)
    $PlayListSave_Abbrechen = GUICtrlCreateButton("Abbrechen", 160, 200, 75, 25, 0)
    $PlayListSave_Input = GUICtrlCreateInput("Input1", 8, 176, 121, 21)
    $PlayListSave_New = GUICtrlCreateCheckbox("New?", 152, 176, 97, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete($PlayListSave_GUI)
    GUISetState(@SW_SHOW, $Mediaplayer_GUI)
    GUISwitch($Mediaplayer_GUI)
    ExitLoop
    Case $PlayListSave_Sichern
    $Count = _GUICtrlListView_GetItemCount($PlayList) - 1
    If GUICtrlRead($PlayListSave_New) = $GUI_CHECKED Then
    $PlayListSave_NewName = GUICtrlRead($PlayListSave_Input)
    MsgBox(0, "", $PlayListSave_NewName)
    For $i = 0 To $Count Step +1
    IniWrite(@ScriptDir & "\Playlists\" & $PlayListSave_NewName & ".pl", "Playlist", $i, _GUICtrlListView_GetItemText($PlayList, $i, 0) & "|" & _GUICtrlListView_GetItemText($PlayList, $i, 1) & "|" & _GUICtrlListView_GetItemText($PlayList, $i, 2))
    If @error Then MsgBox(0, "", "2")
    Next
    Else
    For $i = 0 To $Count Step +1
    IniWrite(@ScriptDir & "\Playlists\" & _GUICtrlListBox_GetText($List, _GUICtrlListBox_GetCurSel($List)) & ".pl", "Playlist", $i, _GUICtrlListView_GetItemText($PlayList, $i, 0) & "|" & _GUICtrlListView_GetItemText($PlayList, $i, 1) & "|" & _GUICtrlListView_GetItemText($PlayList, $i, 2))
    If @error Then MsgBox(0, "", "2")
    Next
    EndIf
    MsgBox(0, "", "Liste erfolgreich gespeichert")
    GUIDelete($PlayListSave_GUI)
    GUISwitch($Mediaplayer_GUI)
    ExitLoop
    EndSwitch
    WEnd
    EndFunc ;==>_PlayListSave

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

    Func _PlayListLoad()
    #Region
    $PlayListLoad_GUI = GUICreate("Laden", 273, 228, 303, 219)
    $List = GUICtrlCreateList("", 0, 0, 272, 162)
    _GUICtrlListBox_Dir($List, @ScriptDir & "\Playlists\*.pl")
    $PlayListLoad_Laden = GUICtrlCreateButton("Laden", 32, 168, 75, 25, 0)
    $PlayListLoad_Abbrechen = GUICtrlCreateButton("Abbrechen", 160, 168, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete($PlayListLoad_GUI)
    GUISetState(@SW_SHOW, $Mediaplayer_GUI)
    GUISwitch($Mediaplayer_GUI)
    ExitLoop
    Case $PlayListLoad_Laden
    $LoadList = IniReadSection(@ScriptDir & "\Playlists\" & _GUICtrlListBox_GetText($List, _GUICtrlListBox_GetCurSel($List)), "Playlist")
    For $j = 1 To $LoadList[0][0] Step +1
    GUICtrlCreateListViewItem($LoadList[$j][1], $PlayList)
    $Titelanzahl += ($j - 1)
    Next
    GUIDelete($PlayListLoad_GUI)
    GUISwitch($Mediaplayer_GUI)
    ExitLoop
    EndSwitch
    WEnd
    EndFunc ;==>_PlayListLoad

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

    Func _AddPlay()
    $sfile = FileOpenDialog("Öffnen", $gMusikPfad, "Alle Musikdateien(*.mp3;*.wma;*.aac,*.wav)")
    If Not $sfile = "" Then
    $file = StringSplit($sfile, "\")
    $Titelanzahl += 1
    GUICtrlCreateListViewItem($Titelanzahl & "|" & $file[$file[0]] & "|" & $sfile, $PlayList)
    Else
    MsgBox(0, "", "Bitte wählen sie eine Datei aus")
    EndIf

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

    EndFunc ;==>_AddPlay

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

    Func _SetBack()
    GUICtrlSetData($posi, "00:00:00")
    GUICtrlSetData($bleibend, "00:00:00")
    EndFunc ;==>_SetBack

    [/autoit]

    der Skript und alle nötigen Bilder,.dll´s,... nochmal hier zum Download: http://rapidshare.de/files/46925016/Media_Player.rar.html

    P.S.: Wie kann man die Soundlautstärke mit der Bass.dll verändern

    Hoffe jemand kann mir helfen

    Edit: Link gefixt

    MfG
    Conan (Nur Mitlesend)
    Schon lange dabei

    2 Mal editiert, zuletzt von Conan10 (27. April 2009 um 18:48)