irrKlang 1.0.3b Problem

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von YaPh1l.

    irrKlang 1.0.3b Problem

    Hallo liebe Community :D

    Dies ist mein erster Beitrag und ich hoffe, ich wählte den richtigen Bereich für mein Anliegen.
    Nun aber zum wesentlichen, ich beschäftige mich seit ca. zwei Wochen mit VisualBasic, hab
    jedoch Erfahrungen durch andere Sprachen.

    Nun wollte ich in einem Projekt zwei Sounds parallel abspielen lassen, da das ja mit:

    Quellcode

    1. My.Computer.Audio.Play(My.Resources.Go, AudioPlayMode.Background)

    nicht geht, beschäftigte ich mich wie hier und in anderen Boards empfohlenen Alternativen
    und entschied mich letztendlich für irrklang. Die in dem zipfile enthaltenen Demos
    sind auch echt gut und bekräftigten mich eigentlich auch nur in meiner Entscheidung. Jedoch
    ergaben sich für mich einige Probleme, bei der Implementierung, da ich eine Resource
    wiedergeben möchte, welche ich nicht extra extrahieren möchte. Kann irrKlang das überhaupt? Denn:

    Quellcode

    1. Dim engine As New ISoundEngine
    2. engine.Play2D("My.Resources._357_shot1")

    funktioniert nicht. Mit einer sich auf dem PC befindlichen Audiodatei hatte ich hingegen kein Problem, außer wenn es sich um
    ein mp3-File handelte, in diesem fall hörte man nur einen einzigen dumpfen "Schlag" aus den Lautsprechern,
    hoffe ihr könnt mir weiterhelfen, fand nur "C++" Beispielcode, mit dem ich nicht wirklich etwas anfangen
    konnte.




    Und dann hab ich noch ein "Problem" in einem anderen Projekt, sollte aber eigentlich auch in diesen Bereich passen.
    Ich habe viele pictureboxen welche ich zur besseren Ansteuerung in ein Array gepackt habe, funktioniert soweit auch
    ganz gut, nur könnte ich mir vorstellen, dass es einen besseren Weg gibt, das Array zu füllen, außer meinen doch sehr
    unschönen Weg:

    Quellcode

    1. allebilder(0) = PictureBox1
    2. allebilder(1) = PictureBox2
    3. allebilder(2) = PictureBox3
    4. allebilder(3) = PictureBox4
    5. allebilder(4) = PictureBox5
    6. allebilder(5) = PictureBox6
    7. allebilder(6) = PictureBox7
    8. allebilder(7) = PictureBox8
    9. allebilder(8) = PictureBox9
    10. allebilder(9) = PictureBox10
    11. allebilder(10) = PictureBox11
    12. allebilder(11) = PictureBox12
    13. allebilder(12) = PictureBox13
    14. allebilder(13) = PictureBox14
    15. allebilder(14) = PictureBox15
    16. allebilder(15) = PictureBox16
    17. allebilder(16) = PictureBox17
    18. allebilder(17) = PictureBox18
    19. allebilder(18) = PictureBox19
    20. allebilder(19) = PictureBox20
    21. allebilder(20) = PictureBox21
    22. allebilder(21) = PictureBox22
    23. allebilder(22) = PictureBox23

    Vielen Dank für eure Hilfe im Voraus.
    sysop
    Zu IrrKlang:
    1. Sollte die Datei in den Ressourcen als Stream vorliegen, gehe direkt zu 2.
    Andernfalls ist es wohl ein Byte-Array. Erzeuge dann einfach einen MemoryStream mit den Daten des Byte-Arrays.
    2. Erzeuge mittels ISoundEngine.AddSoundSourceFromIOStream(Stream, String) eine SoundSource von dem Stream.
    3. Spiele den Sound mittels ISoundEngine.Play(ISoundSource) ab.
    EDIT: Um MP3 abspielen zu können, musst du die "ikpMP3.dll" in den Ordner deiner Anwendung kopieren. Allerdings rate ich zu Ogg Vorbis, da bei MP3 möglicherweise Lizenzkosten auf dich zukommen, Ogg dagegen ist frei und 100% kostenlos.
    Zu den PictureBoxen:
    Du könntest sie dynamisch in einer Schleife erzeugen.

    Viele Grüße, Phil.
    Danke für deine schnelle Antwort, jedoch stell ich mich grad blöd an:

    Quellcode

    1. Dim isoundengine As New ISoundEngine
    2. Dim soundsource As String
    3. isoundengine.AddSoundSourceFromIOStream(My.Resources._01_NEW, soundsource)
    4. isoundengine.Play2D(soundsource)

    Problem:


    Warnung 1 Die soundsource-Variable wird verwendet, bevor ihr ein Wert zugewiesen wird. Zur Laufzeit kann eine Nullverweisausnahme auftreten.

    was mach ich falsch ? (~36h nicht geschlafen xD könnte eine Ursache sein)

    sysop schrieb:

    Quellcode

    1. allebilder(0) = PictureBox1
    2. allebilder(1) = PictureBox2
    3. allebilder(2) = PictureBox3
    4. allebilder(3) = PictureBox4
    5. allebilder(4) = PictureBox5
    6. allebilder(5) = PictureBox6
    7. allebilder(6) = PictureBox7
    8. allebilder(7) = PictureBox8
    9. allebilder(8) = PictureBox9
    10. allebilder(9) = PictureBox10
    11. allebilder(10) = PictureBox11
    12. allebilder(11) = PictureBox12
    13. allebilder(12) = PictureBox13
    14. allebilder(13) = PictureBox14
    15. allebilder(14) = PictureBox15
    16. allebilder(15) = PictureBox16
    17. allebilder(16) = PictureBox17
    18. allebilder(17) = PictureBox18
    19. allebilder(18) = PictureBox19
    20. allebilder(19) = PictureBox20
    21. allebilder(20) = PictureBox21
    22. allebilder(21) = PictureBox22
    23. allebilder(22) = PictureBox23

    VB.NET-Quellcode

    1. For i As Integer = 0 To allebilder.Length - 1
    2. 'zuerst Picturebox herausfinden
    3. Dim pbName = "PictureBox" + (i + 1).ToString 'Name der Picturebox
    4. For Each pb As Object In Me.Controls
    5. If pb.Name = pbName Then
    6. allebilder(i) = CType(pb, PictureBox)
    7. End If
    8. Next
    9. Next

    Dann muss allebilder ein Picturebox-Array sein.
    Vielen Dank,

    musste es zwar auf meine Bedürfnisse anpassen aber läuft :D :thumbsup:

    Quellcode

    1. Private Sub pictureboxen_array_zuweisen()
    2. For i As Integer = 0 To allebilder.Length - 1
    3. Dim pbName = "PictureBox" + (i + 1).ToString
    4. For Each pb As Object In Me.Panel1.Controls 'Hab es in einem Panel, vergessen zu erwähnen. ^^
    5. If pb.Name = pbName Then
    6. allebilder(i) = CType(pb, PictureBox)
    7. End If
    8. Next
    9. Next
    10. End Sub

    sysop schrieb:

    was mach ich falsch ? (~36h nicht geschlafen xD könnte eine Ursache sein)
    Die Methode AddSoundSourceFromIOStream() gibt ein ISoundSource zurück, das man an Play2D() übergeben kann.
    PS: Als Namen der Soundsource muss du auch was angeben, z. B. nehme ich immer den Namen der Audiodatei, auf jeden Fall darf es nicht leer oder Nothing sein.

    Viele Grüße, Phil.