bass.dll spielt MP3 nicht mehr ab

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von ClonkAndre.

    bass.dll spielt MP3 nicht mehr ab

    Postings ausgelagert aus ControllerDLL

    So ich habe nun die Bass DLL in mein Programm hinzugefügt doch da gäb es noch so ein paar Probleme undzwar es möchte irgendwie nicht meine MP3 Datei abspielen :/
    Hier mein Code:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports ControllerDLL
    2. Imports System.Media
    3. Imports Un4seen.Bass
    4. Public Class Form1
    5. 'Xbox
    6. Private LeftStick As New Windows.Vector(0, 0)
    7. Private RightStick As New Windows.Vector(0, 0)
    8. Private RightTrigger As Integer
    9. Private LeftTrigger As Integer
    10. Private Buttons As New List(Of XBox.Buttons)
    11. Private WithEvents XBoxController As XBox.Controller
    12. 'SoundPlayer
    13. Public stream As IntPtr
    14. 'Navigiermenü
    15. Private nav_buttons As New List(Of Button)
    16. Private CurrentButtonIndex = 0
    17. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    18. 'For Each Buttons As Button In Me.Controls
    19. ' If Buttons.Name.Contains("quick_") = True Then
    20. ' nav_buttons.Add(Buttons)
    21. ' End If
    22. 'Next
    23. 'MsgBox(nav_buttons.Count)
    24. 'Konfiguration der Bass.net DLL
    25. If (Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, Me.Handle)) = False Then
    26. MessageBox.Show("Fehler beim Laden der Library")
    27. End If
    28. ' "Erstellt" das Nivigations Menü
    29. nav_buttons.Add(quick_exit_btn)
    30. nav_buttons.Add(quick_hello_btn)
    31. nav_buttons.Add(quick_hello2_btn)
    32. nav_buttons.Add(quick_settings_btn)
    33. nav_buttons.Add(quick_opencmd_btn)
    34. nav_buttons.Add(Button1)
    35. ' Konfiguriert den XBOX Controller
    36. XBoxController = New XBox.Controller(0, Me)
    37. XBoxController.StartCapturing()
    38. End Sub
    39. Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    40. XBoxController.StopCapturing()
    41. End Sub
    42. #Region "Analog"
    43. Private Sub LeftStickSChanged(sender As Object, e As XBox.StickChangedEventArgs) Handles XBoxController.LeftStickChanged
    44. LeftStick = e.Vector / Short.MaxValue * 100
    45. End Sub
    46. Private Sub RightStickChanged(sender As Object, e As XBox.StickChangedEventArgs) Handles XBoxController.RightStickChanged
    47. RightStick = e.Vector / Short.MaxValue * 100
    48. End Sub
    49. Private Sub LeftTriggerChanged(sender As Object, e As XBox.TriggerChangedEventArgs) Handles XBoxController.LeftTriggerChanged
    50. LeftTrigger = e.Value * 100 \ Byte.MaxValue
    51. End Sub
    52. Private Sub RightTriggerChanged(sender As Object, e As XBox.TriggerChangedEventArgs) Handles XBoxController.RightTriggerChanged
    53. RightTrigger = e.Value * 100 \ Byte.MaxValue
    54. ProgressBar1.Value = RightTrigger
    55. End Sub
    56. #End Region
    57. Private Sub ButtonPressed(sender As Object, e As XBox.ButtonChangedEventArgs) Handles XBoxController.ButtonPressed
    58. Buttons.Add(e.ChangedButtons)
    59. ButtonsUpdate()
    60. End Sub
    61. Private Sub ButtonReleased(sender As Object, e As XBox.ButtonChangedEventArgs) Handles XBoxController.ButtonReleased
    62. Buttons.Remove(e.ChangedButtons)
    63. ButtonsUpdate()
    64. End Sub
    65. Private Sub ButtonsUpdate()
    66. 'DPad
    67. If Buttons.Contains(XBox.Buttons.UP) = True Then
    68. ElseIf Buttons.Contains(XBox.Buttons.DOWN) = True Then
    69. ElseIf Buttons.Contains(XBox.Buttons.LEFT) = True Then
    70. CurrentButtonIndex -= 1
    71. If CurrentButtonIndex < 0 Then
    72. CurrentButtonIndex = nav_buttons.Count - 1
    73. End If
    74. nav_buttons(CurrentButtonIndex).Select()
    75. stream = Bass.BASS_StreamCreateFile("‪C:\Users\Andre\Videos\Any Video Converter\MP3\menu_select.mp3", 0, 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN)
    76. Bass.BASS_ChannelPlay(stream, False)
    77. ElseIf Buttons.Contains(XBox.Buttons.RIGHT) = True Then
    78. CurrentButtonIndex += 1
    79. If CurrentButtonIndex > nav_buttons.Count - 1 Then
    80. CurrentButtonIndex = 0
    81. End If
    82. nav_buttons(CurrentButtonIndex).Select()
    83. stream = Bass.BASS_StreamCreateFile("‪C:\Users\Andre\Videos\Any Video Converter\MP3\menu_select.mp3", 0, 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN)
    84. Bass.BASS_ChannelPlay(stream, False)
    85. End If
    86. 'ABXY
    87. If Buttons.Contains(XBox.Buttons.A) = True Then
    88. nav_buttons(CurrentButtonIndex).PerformClick()
    89. stream = Bass.BASS_StreamCreateFile("‪C:\Users\Andre\Videos\Any Video Converter\MP3\menu_start.mp3", 0, 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN)
    90. Bass.BASS_ChannelPlay(stream, False)
    91. End If
    92. 'Left/Right Buttons
    93. 'Start/Select
    94. End Sub
    95. 'Buttons
    96. Private Sub quick_exit_btn_Click(sender As Object, e As EventArgs) Handles quick_exit_btn.Click
    97. Application.Exit()
    98. End Sub
    99. Private Sub quick_hello_btn_Click(sender As Object, e As EventArgs) Handles quick_hello_btn.Click
    100. MsgBox("Hello!")
    101. End Sub
    102. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    103. XBoxController.Vibrate(20, 50)
    104. End Sub
    105. Private Sub quick_hello2_btn_Click(sender As Object, e As EventArgs) Handles quick_hello2_btn.Click
    106. MsgBox("Hello 2!")
    107. End Sub
    108. Private Sub quick_settings_btn_Click(sender As Object, e As EventArgs) Handles quick_settings_btn.Click
    109. settings.Show()
    110. End Sub
    111. End Class



    Einmal hat es funktioniert als ich nach links gedrückt habe und der controller funktionierte weiterhin doch wenn ich nach rechts oder A gedrückt habe spielte er leider keinen Sound ab.
    Nun spielt er leider garnichts mehr ab.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Du solltest den stream wie auch die Bass beim beenden wieder freigeben(Form.Close), kann sonst zu Fehlern kommen, wurde das evtl. nicht im Tutorial erwähnt? Dann verlinke ich das nicht mehr.
    ->Windows neustarten, wenns wirklich nicht mehr klappt.

    VB.NET-Quellcode

    1. Bass.BASS_ChannelStop(Stream)
    2. Bass.BASS_StreamFree(Stream)
    3. Bass.FreeMe()


    Ich sagte dir doch, einmal das streamhandle erstellen, also 1 mal stream = .... Du erstellt das streamhandle jedes mal neu wen ein Button geklickt wird, ist doch nonsense oder? Mach das einmal im Form.Load oder Shown. Dann reicht BASS_ChannelPlay(stream, False) dort aus. Evtl. solltest du auch den stream von vorne starten, indem du bei BASS_ChannelPlay restart = true mitgibst, statt false. Vllt. sogar immer von vorn starten damit immer das feedback stimmt.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „NoIde“ ()

    Versuch erstmal beim starten des Stream restart = true, wenns nicht geht dann neustart, nicht vergessen im Form.Close alles freizugeben!


    Edit @ClonkAndre
    Du kannst dir auch mit Bass.BASS_ErrorGetCode den letzten Fehlerocde hohlen, wenn der = -1 (BASS_ERROR_UNKNOWN ) ist, auf jeden Fall mal neu starten
    bass.radio42.com/help/html/78e…602-a234-b0847b4e6d6c.htm

    Du kannst wenn stream nach bass.stream_create = 0 ist dort den Fehlercode hohlen, oder wenn bass.bass_channelplay false zurück gibt.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „NoIde“ ()

    Also ich habe einmal mir den Fehler im Form.load ausgeben lassen also nach dem erstellen des Streams da kommt bei mir eine 2 raus und nach dem versuch die Datei abzuspielen eine 5
    Also bei mir funktioniert es, dein Pfad scheint nicht zu passen. Was passiert wenn du den Pfad kopierst und in die Windows-Explorer-Addressleiste einfügst und enter drückst?(inkl. .mp3)

    Edit: @ClonkAndre
    Huch, mein Fehler, der stream ist auf Autofree gestellt, initialisier den Stream so(Pfad anpassen!)

    VB.NET-Quellcode

    1. stream = Bass.BASS_StreamCreateFile("E:\temp\menu_select.mp3", 0, 0, BASSFlag.BASS_STREAM_PRESCAN)


    nicht vergessen diesen freizugeben. Ohne das autofree bleibt der stream im speicher, soll er ja auch, um nicht immer neu geladen werden zu müssen.

    Also bei mir funktioniert es leider nicht aber wenn ich den Pfad in der Adressleiste packe dann öffnet es die MP3.
    Ich versuche es etzt einfach mal in einem anderem Pfad

    // edit
    ok anderer Pfad geht auch nicht :/
    Da gibt es ein paar Probleme wenn ich auf x86 und auf x64 stelle (siehe bilder)

    // Edit
    und wenn ich die datei im debug ordner reinpacke funkt es trotzdem nicht :/
    Bilder
    • fehler x86.png

      65,86 kB, 1.179×567, 12 mal angesehen
    • fehler x64.png

      23,26 kB, 1.615×294, 13 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ClonkAndre“ ()

    Also ich kann das alles nicht reproduzieren, sobald ich auf x64 oder x86 umstelle, werden mir Fehler in Sachen ControllerDll angezeigt. Was ist wenn du ein neues Projekt erstellst und diesen Code nutzt? Ohne die ControllerDLL.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private stream As Integer = 0
    3. Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    4. Bass.BASS_ChannelStop(stream)
    5. Bass.BASS_StreamFree(stream)
    6. Bass.FreeMe()
    7. End Sub
    8. Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
    9. If Not Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, Handle) Then
    10. MessageBox.Show("Error bass_Init" & Environment.NewLine & Bass.BASS_ErrorGetCode.ToString())
    11. Close()
    12. End If
    13. stream = Bass.BASS_StreamCreateFile("menu_select.mp3", 0, 0, BASSFlag.BASS_MUSIC_PRESCAN)
    14. If stream = 0 Then
    15. MessageBox.Show("stream = 0" & Environment.NewLine & Bass.BASS_ErrorGetCode.ToString())
    16. Close()
    17. End If
    18. If Not Bass.BASS_ChannelPlay(stream, True) Then
    19. MessageBox.Show("Error BASS_ChannelPlay" & Environment.NewLine & Bass.BASS_ErrorGetCode.ToString())
    20. Close()
    21. End If
    22. End Sub
    23. End Class


    Ich vermute gerade das die beiden DLL in dieser Kombination unter bestimmten umständen zu konflikten führen. Bei mir gehts jedenfalls für AnyCpu problemlos.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „NoIde“ ()

    Wollte ich gerade schreiben, ich hab ein test-programm mit dem funktioniert es auch mit Anycpu und auch wenn die Datei im Ordner ist

    VB.NET-Quellcode

    1. Imports Un4seen.Bass
    2. Public Class Form1
    3. Public stream As IntPtr
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    5. If (Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, Me.Handle)) = False Then
    6. MessageBox.Show("Fehler beim Laden der Library")
    7. End If
    8. End Sub
    9. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    10. stream = Bass.BASS_StreamCreateFile("menu_select.mp3", 0, 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN)
    11. Bass.BASS_ChannelPlay(stream, False)
    12. End Sub
    13. End Class
    Ok das ist schade das die sich nicht vertragen :/
    Über deiner Projektmappe für Gamepads würde ich mich sehr freuen :)

    // Edit:
    Aber das finde ich doch schon ein bisschen komisch das hat einmal funktioniert aber nur wenn ich auf dem DPad nach rechts gedrückt habe nun funktioniert garnichts mehr :?: