bass.dll not found. Wieso nicht?

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von lace.

    bass.dll not found. Wieso nicht?

    Hallo Leute,

    ich habe heute mittels der Bass.Net API von un4seen.com einen Player erstellen wollen. Das Problem ist nur, dass er mir immer sagt "bass.dll" nicht gefunden.
    Ich poste euch hier mal mein Projekt (ist sowieso noch nichts besonderes drin). Vielleicht kann ja der ein oder andere das Problem finden.

    Das Problem tritt immer auf, wenn ich eine Musikdatei ausgewählt habe und nun auf "Play" drücke. Wenn ich die bass.dll mit in den Debug Ordner kopiere,
    dann startet das Programm nichteinmal.

    MfG, lace

    Projekt: Klick
    Screenshot:

    hab mal Dein Projekt angeschaut

    Du musst die Bass.Net.dll und bass.dll in den Ordner knallen, wo Deine Programm.exe ausgeführt wird.
    Wenn Du später noch andere Funktionen benutzt, wie für CD-Player oder verschiedenen Encoder dann musst
    Du auch dies addon dll's dorthin kopieren. z.B bass_fx.dll, basscd.dll, bassenc.dll usw.
    Gilt auch für Deinen Debug oder Release Orner.

    Ändere mal bitte Deinen Code:

    VB.NET-Quellcode

    1. 'von:
    2. stream = Bass.BASS_StreamCreateFile(TextBox1.Text, 0, 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_STREAM_PRESCAN)
    3. 'zu:
    4. stream = Bass.BASS_StreamCreateFile(TextBox1.Text, 0, 0, BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_DEFAULT)


    BASS_STREAM_PRESCAN brauchst Du in Deinem Fall noch nicht.

    Für Deine Lautstärke-Trackbar noch ein Hinweis:

    VB.NET-Quellcode

    1. Bass.BASS_SetVolume(TrackBar1.Value)


    Der Wert für BASS_SetVolume ist Single und der Wertebereich liegt zwischen 0(Stille) und 1(Maximum)
    Ich gehe davon aus, dass Deine Trackbar von Minmum=0 bis Maximum=100 eingestellt ist.

    schreib einfach folgendes:

    VB.NET-Quellcode

    1. Dim vol_a As Single = CSng(TrackBar1.Value / 100)
    2. Bass.BASS_SetVolume(vol_a)


    ...dann tut sich auch was in Deiner Lautstärke.

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

    du solltest das projekt als 32Bit kompilieren. dann funktioniert auch der umgang mit der bass.dll

    du stellst das folgendermaßen um:

    - Schließen Sie das Projekt und/oder die Projektmappe.
    - Klicken Sie im Menü Datei auf Datei öffnen.
    - Wechseln Sie zum Projektverzeichnis, und markieren Sie die Projektdatei.
    - Klicken Sie auf die Schaltfläche Öffnen. Die Projektdatei sollte nun im XML-Editor geöffnet werden.
    - Suchen Sie nach dem ersten <PropertyGroup>-Abschnitt, und fügen Sie folgende Zeile ein:
    <PlatformTarget>x86</PlatformTarget>
    - Speichern Sie die Projektdatei.
    - Öffnen Sie das Projekt und/oder die Projektmappe erneut, indem Sie im Menü Datei auf Projekt/Projektmappe öffnen klicken.
    Fahren Sie mit dem Entwickeln, Debuggen und Testen fort.





    so - in der professional geht das noch ne spur einfacher ;) hab noch die bass.dll ins debug verzeichnis getan, das framework auf 2.0 reduziert (hättest du eh tun sollen!) und die projektmappe auf 32Bit umgestellt. funktioniert jetzt alles (siehe anhang)
    Dateien

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

    es gibt zwei verschiedene Funktionen. Du musst fast mal in der Dokumenation nachschauen. Es gibt eine die ändert Lautstärke vom System und eine die ändert Lautstärke von nem stream
    ah ja such ma nach sowas:
    BASS_ChannelSetAttribute


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

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

    In der Offline Hilfe habe ich schon stundenlang nachgesucht die ist nicht nur unübersichtlich und schwer verständlich sondern auch komplett überflüssig -.-

    Wenn man nach Volume sucht kommen knapp 200 Seiten darüber. Ich will doch nur laut und leise :S

    lace schrieb:

    In der Offline Hilfe habe ich schon stundenlang nachgesucht die ist nicht nur unübersichtlich und schwer verständlich sondern auch komplett überflüssig -.-

    Wenn man nach Volume sucht kommen knapp 200 Seiten darüber. Ich will doch nur laut und leise :S

    Also ich finde die Dokumenation sehr sehr gut und ohne diese wäre man komplett aufgeschmissen.
    Fakt ist jedoch, dass es auch nicht falsch wäre wenn man schon STUNDEN lang sucht mal in die Beispiele zu schauen :)


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Also ich hab jetzt alles so gut wie fertig. Ich habe nur extreme Probleme dabei, die beiden DLL's in die EXE zu mergen. Ich mach das normaler Weise immer mit ILMerge aber der streikt aus mir unerklärlichen Gründen.
    Hier nochmal mein fertiges Projekt: fileden.com/files/2008/7/13/2001874//Music.zip

    Kann mir jemand helfen beim mergen?

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

    zu 2.: interessiert mich genauso wie die entfernung vom mond zum mars -.-

    Aber danke für die Info's. Denn muss ich dass immer mitliefern.

    Was mich noch interessieren würde ist, wie kann ich die verstrichene/insgesamte Abspielzeit anzeigen lassen?

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

    lace schrieb:

    zu 2.: interessiert mich genauso wie die entfernung vom mond zum mars -.-

    Spätestens wenn du die Abmahnung bekommst, wird es dich interessieren. :p
    (ein klein wenig übertrieben)
    Was mich noch interessieren würde ist, wie kann ich die verstrichene/insgesamte Abspielzeit anzeigen lassen?

    Bis jetzt habe ich anscheinend die Anzahl der Bytes herausbekommen und anzeigen lassen. Ich möchte aber gerne die verstrichene Zeit. Wie gehts das?

    VB.NET-Quellcode

    1. Dim currently As Integer
    2. Dim total As Integer
    3. currently = Bass.BASS_ChannelGetPosition(stream, BASSMode.BASS_POS_BYTES)
    4. total = Bass.BASS_ChannelGetLength(stream)
    5. Label3.Text = currently & " / " & total

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

    Geht ganz gut über 'nen Timer

    Variablen:

    VB.NET-Quellcode

    1. Private peak(2) As Single
    2. Private _HDupdateTimer As BASSTimer = Nothing
    3. Private _HDupdateInterval As Integer = 50
    4. Private _tickCounter As Integer = 0
    5. Private tElapsed As Single
    6. Private tRemain As Single
    7. Private tLength As Single
    8. Private PeakLevel_L As Integer
    9. Private PeakLevel_R As Integer
    10. Private Channel_Pos As Long ' position in bytes
    11. Private Channel_Len As Long ' length in bytes


    Timer instanzieren: in Form_load oder so

    VB.NET-Quellcode

    1. _HDupdateTimer = New Un4seen.Bass.BASSTimer(_HDupdateInterval)


    VB.NET-Quellcode

    1. Private Sub HDtimerUpdate_Tick(ByVal sender As Object, ByVal e As System.EventArgs)
    2. Channel_Pos = Bass.BASS_ChannelGetPosition(_strm, BASSMode.BASS_POS_BYTES) ' position in bytes
    3. If CType(Bass.BASS_ChannelIsActive(_strm), BASSActive) = BASSActive.BASS_ACTIVE_PLAYING Then
    4. tLength = CSng(Bass.BASS_ChannelBytes2Seconds(_strm, Channel_Len))
    5. tElapsed = CSng(Bass.BASS_ChannelBytes2Seconds(_strm, Channel_Pos))
    6. tRemain = tLength - tElapsed
    7. Bass.BASS_ChannelGetLevel(_strm, peak)
    8. PeakLevel_L = CInt(Math.Round(peak(1), 3) * 100) : lblPeak1.Text = String.Format("{0:000}", PeakLevel_L)
    9. PeakLevel_R = CInt(Math.Round(peak(2), 3) * 100) : lblPeak2.Text = String.Format("{0:000}", PeakLevel_R)
    10. cls_peak_l.get_PeakLevel_L(PeakLevel_L) : cls_peak_l.get_PeakLevel_R(PeakLevel_R)
    11. lSA_MS.Text = Un4seen.Bass.Utils.FixTimespan(tElapsed, "FFF")
    12. lSB_MS.Text = Un4seen.Bass.Utils.FixTimespan(tRemain, "FFF")
    13. lSC_MS.Text = Un4seen.Bass.Utils.FixTimespan(tLength, "FFF")
    14. _tickCounter += 1
    15. If _tickCounter = 1 Or _tickCounter = 3 Or _tickCounter = 5 Then
    16. lblStatusA.Text = Un4seen.Bass.Utils.FixTimespan(tElapsed, "HHMMSS")
    17. lblStatusB.Text = Un4seen.Bass.Utils.FixTimespan(tRemain, "HHMMSS")
    18. lblStatusC.Text = Un4seen.Bass.Utils.FixTimespan(tLength, "HHMMSS")
    19. End If
    20. If _tickCounter = 2 Or _tickCounter = 4 Or _tickCounter = 6 Then
    21. Fortschritt_Trackbar.Value = CInt(tElapsed)
    22. End If
    23. If _tickCounter = 6 Then
    24. _tickCounter = 0
    25. If bpm_detector = True AndAlso _aktBPM >= 25 AndAlso _aktBPM <= 230 Then : tbx_BPM.Text = CStr(Math.Round(_aktBPM, 2, MidpointRounding.AwayFromZero))
    26. Else : tbx_BPM.Text = "-"
    27. End If
    28. End If
    29. ElseIf CType(Bass.BASS_ChannelIsActive(_strm), BASSActive) = BASSActive.BASS_ACTIVE_PAUSED Then
    30. ElseIf CType(Bass.BASS_ChannelIsActive(_strm), BASSActive) = BASSActive.BASS_ACTIVE_STOPPED Then
    31. If HD_Schleife = True Then : GbtNext_Click(GbtNext, New System.EventArgs)
    32. Else : HDtimerUpdate_STOP()
    33. End If
    34. Else
    35. Exit Sub
    36. End If
    37. End Sub


    Deinen Stream erstellen und ab geht's:

    VB.NET-Quellcode

    1. _strm = Bass.BASS_StreamCreateFile(_HDfilename, 0, 0, BASSFlag.BASS_DEFAULT Or BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_SAMPLE_FLOAT)
    2. If _strm <> 0 AndAlso Bass.BASS_ChannelPlay(_strm, False) Then
    3. _tickCounter = 0 : _HDupdateTimer.[Start]()
    4. Else
    5. ...
    6. End If


    Der Code ist aus meinem Projekt, Du kannst den nicht 1:1 übernehmen, aber helfen könnte er Dir.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „OnkelR“ () aus folgendem Grund: hab was vergessen (Private peak(2) As Single)

    VB.NET-Quellcode

    1. currently = Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetPosition(stream, BASSMode.BASS_POS_BYTES))
    2. total = Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream))
    3. LabelAusgabe.Text = currently.ToString & " / " & total.ToString


    1. stell dein Projekt auf Option Strict On um
    2. benenne die Controls vernünftig
    3. benutze die TimeSpan-Struktur zur ausgabe der Zeiten, nicht irgendwelche integer variablen, in die ein long gecastet wird, die dann wieder zu strings gecastet werden :S

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

    Das weißt Du doch jetzt.
    Du hast die Länge Deines Streams : tLength = CSng(Bass.BASS_ChannelBytes2Seconds(_strm, Channel_Len))
    die vergangene Spielzeit : tElapsed = CSng(Bass.BASS_ChannelBytes2Seconds(_strm, Channel_Pos))
    die noch übrige Spielzeit : tRemain = tLength - tElapsed

    und mit Un4seen.Bass.Utils.FixTimespan(tElapsed, "HHMMSS") usw. in eine Textbox knallen.
    Timespan: msdn.microsoft.com/en-us/library/system.timespan.aspx
    kleiner Tipp auf der msdn Seite findest du generell alles was mit dem Framework zu tun hat.

    Kleine Zusammenfassung Timespan ist da um einfacher mit Zeit arbeiten zu können und sich das ganze Gerechne sparen zu können.
    z.B kann ich einfach sagen Timespan.FromSeconds(irgendnezahl) und dann sehr einfach z.b die Tage daraus ausrechnen.
    Außerdem wurde die ToString Methode überladen und man kann jetzt via eines Strings das Format angeben. genauere Infos hier:msdn.microsoft.com/en-us/library/dd992632.aspx


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Timespan geht selbstverständlich auch ganz gut dafür. Aber die Bass.dll bringt eigentlich alles mit was man braucht.
    Die ist natürlich sehr, sehr umfangreich und so auf die schnelle kommt man nur zu unbefriedigenden Ergebnissen.
    Ich kann nur sagen, es lohnt sich, sich näher und intensiver in die Dokumentation einzulesen. Beispielcodes sind in
    der Doku ebenfalls reichlich vorhanden.