[Delphi] MIDI Analyse fehlt der Längenwert der Note

  • Ja :fresse: Delphi aber ist ok.

    Also ich habe im Internet [url=http://www.delphi-forum.de/topic_Problem+…en_90542,0.html]Noodles[/url] Midi ausleseprocedure gefunden und bin dabei die Ausgabe für mich noch etwas zu modifizieren.

    Leider lies diese Procedure nur die Notenwerte auf den verschiedenen Channeln aus, aber woher weiss ich wie lange diese Note spielt? Das alles lässt sich ja binnen weniger Sekunden ausführen, also ist Zeit messen wohl nicht möglich.

    Bin ich wieder nur blind :ninja: oder ist die Procedure leicht unbrauchbar?

    HP DL-580 G7
    2x Intel Xeon E7-2870 (10 x 2,4GHz)
    96GB DDR3-1333 RAM
    NVIDIA GeForce GTX 1080 MSI (Blower)
    Samsung 850 Pro 512GB auf PCIe Karte
    4TB Seagate billigfieh
    72GB 10K HP Drive

    Einmal editiert, zuletzt von Magic94 (29. Februar 2012 um 13:37)

  • Das MIDI-Format definiert nicht Noten als Bestandteile von Spuren, sondern Ereignisse, die eines nach dem anderen vom Synthesizer abgearbeitet werden. Vereinfacht gibt es da, wie du auch aus dem Quelltext herauslesen kannst, zum Beispiel Note-On (= Ton spielen), Note-Off (= Ton sofort verklingen lassen), Key After-Touch (= Ton mit einer gewissen Geschwindigkeit verzögert verklingen lassen) oder Channel After-Touch (= Spur verzögert verklingen lassen).

    Das heißt, die Länge eines Tons ergibt sich nicht aus einem einzelnen (Note-on-)Events, wie es diese Prozedur nacheinander ausliest, sondern du musst dafür die Delta-Zeit (DeltaTimeTicks) des unmittelbar darauffolgenden Events auf derselben Spur heranziehen, das entweder den Ton ändert oder ausschaltet.
    Siehe auch eine übersetzte Dokumentation des MIDI-Formats.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!