Import extrem kurzer MIDI-Files - diverse DAWs

fanwander

fanwander

************************
Ich habe MIDI-Files von ein paar sehr kurzen Sequenzen erstellt (probiert in Reaper und Logic 10.4). Die Sequenzen sind zum Teil nur zwei oder drei Sechzehntel lang.
Wenn ich so ein zwei-Sechzehntel MIDI-File in die gleiche oder eine andere DAW importiere, dann wird ein/e längere/s Item/Region erzeugt.
Bei Reaper ist wird das Item ein Viertel lang.
Bei Logic wird die Region einen 4/4-Takt lang.
Bei Live wird der Clip einen 4/4-Takt lang.

Ich kann dann zwar die Sektionen nachträglich auf die korrekte Länge bringen, aber eigentlich nervt das ziemlich, außerdem hab ich vor das mit relativ vielen Dateien zu machen, die auch nicht alles so super simpel sind, wie mein Beispiel und zudem zum Teil sehr wohl Pausen am Ende haben, zum Teil aber auch nicht.

Leider kann ich nicht verifizieren, ob das File nicht schon beim Export zu lange gemacht wird. Hat jemand von Euch die Fähigkeit, zu entziffern, wie lange das angehängte MIDI-File tatsächlich wäre?


Der Hex-Dump sieht wie folgt aus:

[FONT=courier new]$od -tx1a 34.mid 0000000 4d 54 68 64 00 00 00 06 00 01 00 02 03 c0 4d 54 M T h d nul nul nul ack nul soh nul stx etx ? M T 0000020 72 6b 00 00 00 19 00 ff 03 02 33 34 00 ff 58 04 r k nul nul nul em nul ? etx stx 3 4 nul ? X eot 0000040 04 02 18 08 00 ff 51 03 07 a1 20 00 ff 2f 00 4d eot stx can bs nul ? Q etx bel ? sp nul ? / nul M 0000060 54 72 6b 00 00 00 16 00 90 43 30 81 70 80 43 00 T r k nul nul nul syn nul 90 C 0 81 p 80 C nul 0000100 00 90 41 30 81 70 80 41 00 00 ff 2f 00 nul 90 A 0 81 p 80 A nul nul ? / nul 0000115[/FONT]

Any help appreciated ;-)
 

Anhänge

  • 34.mid
    77 Bytes · Aufrufe: 10
Zuletzt bearbeitet:
...besonders interessant wäre wohl 15.mid?...

...wahrscheinlich wird man das anhand eines Notenblattes manuell nacharbeiten müssen...
 
Leider kann ich nicht verifizieren, ob das File nicht schon beim Export zu lange gemacht wird. Hat jemand von Euch die Fähigkeit, zu entziffern, wie lange das angehängte MIDI-File tatsächlich wäre?

wenn ich die frage richtig verstehe, dann würde ich mal sagen du verwechselt das midi file mit der region/part und hast übersehen, dass das nicht das gleiche ist. die meisten DAWs dürften bei importiertem midi und audio inhalten einfach den part anhand der zur zeit eingestellten rasterung verlängern, sofern diese "eingeschaltet" ist.

sofern nicht irgendein meta mist drinsteht, den ein programm falsch interpretieren kann ist die "länge" eine midifiles die summe aller delta times.

und das einzige was dabei schief gehen kann ist die sache mit dem tempo. (grüße an digital performer!)


vielleicht kannst du mithilfe zweier unterschiedlich langer files ungefähr abmessen um wieviel prozent sie zu lang sind, dann weißt du, ob es prozentual immer gleich viel zu lang ist? und wenn es immer gleich viel ist, dann ist die wahrscheinlichkeit hoch, dass es etwas mit dem tempo multiplikator zu tun hat.

ich habe mit solchen sachen auch manchmal unerklärliche probleme und das endet dann meistens in workarounds.


ansonsten sag ich mal so: wie breit möchtest du ein midi track in einem editor dargestellt haben, was nur aus einem einzigen event besteht? ...
 
Zuletzt bearbeitet:
ansonsten sag ich mal so: wie breit möchtest du ein midi track in einem editor dargestellt haben, was nur aus einem einzigen event besteht? ...

…die ‚Länge‘ der Mididateien beschreibt in diesem Fall Pausen der Papiernotation…

…also: in dem Stück gibt es nach dem Ende der letzten Note Pausen, die essentiell wichtig für das Stück sind, beim Import in die DAW aber verändert werden - weil die Länge der importierten MIDI-Datei verändert wird…
 
was meinst du mit "pause" und wie erzeugt ihr die?

end of track in 34.mid haben beide delta time 00.

(end of track dürfte aber eine DAW nicht interessieren, jedenfalls dann nicht wenn das nicht das zeitlich letzte in einem arrangement ist.)
 
…das ist so ein Beispiel - die Länge der MIDI-Datei beschreibt die Note(n) inklusive der nachfolgenden Pausen:

77C2D217-8C55-4250-A474-E94047CA8A50.jpeg

…sorry, bin gerade unterwegs am iPad und kann damit hier im Forum die Bilder nicht kleiner ziehen…
 
Zuletzt bearbeitet:
Pausen sind aber, wenn ich das richtig sehe, keine definierten Events im Midi File Format.
Eine Pause wird implizit interpretiert aus der delta time.
Ich hab den Standard nicht zur Hand, vielleicht gibt’s da ne Fußnote oder Anmerkung zu, wie das am Ende des Files ist, wenn kein weiteres Event folgt.

Vermutlich liest den aber sowieso niemand, also würde ich mich auf so eine Konvention ohnehin nicht verlassen, denn wie man sieht, wird es ja tatsächlich unterschiedlich interpretiert.
 
Meinem Verständnis nach ist die Länge einer Midi-Datei-Sequenz in der Midi Spec implizit durch die letzte Note definiert (die Länge einer Datei wäre ja eine Art "Metainformation"). Da Midi keine "Pausen"-Events kennt, kannst du keine Pause am Schluss einer Midi-Datei-Sequenz als Note abbilden. Ein Workaround könnte sein, dass du auf die folgende 1 eine "leere" CC Message o.ä. setzt, das sollte dann beim Importieren in eine DAW zur gewünschten Länge führen (habe ich jetzt aber nicht explizit ausgetestet).

Wäre interessant zu schauen, wie eine DAW im Notationsmodus eine Pause am Schluss in Midi umsetzt. Ich vermute, dass das als Meta-Information in das DAW-spezifische Datenformat geht und beim Export in Midi verloren geht.
 
Zuletzt bearbeitet von einem Moderator:
Da Midi keine "Pausen"-Events kennt, kannst du keine Pause am Schluss einer Midi-Datei als Note abbilden.

…ja, das beschreibt wohl eines der Probleme mit unserer Erwartung* und im Gegensatz den Realitäten** des Formats…

*automatischer Import ohne Hand-Nacharbeit
**Datenformat für diese Information nicht ausgelegt

Ein Workaround könnte sein, dass du auf die folgende 1 eine "leere" CC Message o.ä. setzt, das sollte dann beim Importieren in eine DAW zur gewünschten Länge führen (habe ich jetzt aber nicht explizit ausgetestet).

…ein interessanter workaround - hier geht es leider eher darum, dass

- die MIDI-Dateien schon fertig vorliegen
- und wenn sich schon jemand die Arbeit macht und diese händisch nachbearbeitet, man diese Arbeit problemlos mit anderen austauschen kann (Datei-Anhang an Email)

…das Problem entsteht in dem Moment in dem diese MIDI-Dateien nicht nur in einer DAW (Reaper) importiert und nachbearbeitet werden, sondern dann von dort exportiert und in andere DAWs (Ableton Live) und Hardware-Sequencer (Oxi One, Hapax) übertragen werden sollen; dabei geht die Information aus der händischen Nachbearbeitung (nämlich wieder) verloren…

…im Moment fürchte ich: das geht so nicht wie wir uns das vorstellen - wahrscheinlich muss jeder der Beteiligten in seiner Umgebung (DAW, Hardware-Sequencer) die Information händisch nachbearbeiten…
 
…ja, das beschreibt wohl eines der Probleme mit unserer Erwartung* und im Gegensatz den Realitäten** des Formats…

*automatischer Import ohne Hand-Nacharbeit
**Datenformat für diese Information nicht ausgelegt



…ein interessanter workaround - hier geht es leider eher darum, dass

- die MIDI-Dateien schon fertig vorliegen
- und wenn sich schon jemand die Arbeit macht und diese händisch nachbearbeitet, man diese Arbeit problemlos mit anderen austauschen kann (Datei-Anhang an Email)

…das Problem entsteht in dem Moment in dem diese MIDI-Dateien nicht nur in einer DAW (Reaper) importiert und nachbearbeitet werden, sondern dann von dort exportiert und in andere DAWs (Ableton Live) und Hardware-Sequencer (Oxi One, Hapax) übertragen werden sollen; dabei geht die Information aus der händischen Nachbearbeitung (nämlich wieder) verloren…

…im Moment fürchte ich: das geht so nicht wie wir uns das vorstellen - wahrscheinlich muss jeder der Beteiligten in seiner Umgebung (DAW, Hardware-Sequencer) die Information händisch nachbearbeiten…

Du vergisst @fanwander Talente neben der Musik :) Vielleicht liesse sich da ein kleines Script basteln, mit dem die "Track end" message automatisch ans Ende aller Midi Datein eingefügt werden kann. Das ist auch nicht ganz ohne Aufwand, aber vielelicht nur ein Mal und danach ist's nur noch ein batch über einen Ordner laufen lassen.
 
Als Alternative zum Dekodieren der binären Midi Messages: Haben die verwendeten DAWs allenfalls die Möglichkeit zum Scripting? Vielleicht liesse sich da ein Script erstellen, das automatisch einen entsprechenden Midi-Event anhängt? Dann wär's vielleicht nur ein "Klick" in der DAW vor dem Export?
 
Haben die verwendeten DAWs allenfalls die Möglichkeit zum Scripting?

…grundsätzlich: jain - es sind ja auch noch Hardware-Sequencer beteiligt - und ausser dem Squarp Pyramid (den ich jetzt mal ausnahmsweise nicht habe) können die anderen MIDI gar nicht importieren sondern nur recorden

…so ein script wäre (auf dem Mac) im Prinzip sonst schnell erstellt…
 
Pausen sind aber, wenn ich das richtig sehe, keine definierten Events im Midi File Format.
Eine Pause wird implizit interpretiert aus der delta time.

ich bin mir auch nicht sicher ob ich es verstanden habe, aber ich denke es geht darum, dass man zurecht erwarten könnte, dass wenn man zwischen rechten und linkem begrenzungspföstchen in einer DAW das midi exportieren will, dass dann das ende aller MTrk´s eben nicht beim letzten note off ist sondern das korrekt in 4/4 entsprechenden PPQs in die datei geschrieben wird, und zwar als track lenght soundso, und dass das dann zu gleich langen parts beim reimport führt.

Meinem Verständnis nach ist die Länge einer Midi-Datei-Sequenz in der Midi Spec implizit durch die letzte Note definiert

jedes track endet zwingend mit FF 2F 00 end of track, und das hat ja eine delta time und die stellt die "pause" zwischen dem letzten note on und dem "ende" dar.

da braucht man zum beispiel dann, wenn man ein midi file anhand seiner länge, die vorher unbekannt bzw. variabel ist, loopen will.

das bei im- und export von programmen und geräten korrekt interpretiert zu bekommen scheint nicht so easy zu sein.
hier liegt ja die pause in der datei bei 0 und trotzdem wird der part im gerät sogar länger als geplant.
 
Zuletzt bearbeitet:
ich bin mir auch nicht sicher ob ich es verstanden habe, aber ich denke es geht darum, dass man zurecht erwarten könnte, dass wenn man zwischen rechten und linkem begrenzungspföstchen in einer DAW das midi exportieren will, dass dann das ende aller MTrk´s eben nicht beim letzten note off ist sondern das korrekt in 4/4 entsprechenden PPQs in die datei geschrieben wird, und zwar als track lenght soundso, und dass das dann zu gleich langen parts beim reimport führt.
Ja, das ist mein Gedanke

jedes track endet zwingend mit FF 2F 00 end of track, und das hat ja eine delta time und die stellt die "pause" zwischen dem letzten note on und dem "ende" dar.

da braucht man zum beispiel dann, wenn man ein midi file anhand seiner länge, die vorher unbekannt bzw. variabel ist, loopen will.
Das FF 2F 00 sagt aber nur: "das gerade eben waren jetzt die letzten Daten". Ich weiß nicht, ob das mit einer Timestamp-Angabe verbunden ist.

Die MIDI-File Spec 1.0 sagt gleich auf Seite 3
"A MIDI file always starts with a header chunk, and is followed by one or more track chunks:
MThd <length of header data>
<header data>
MTrk <Length of track data>
<track data>
MTrk <Length of track data>
<track data>
...
"

Eigentlich sollte also die Länge definiert sein.

Eine kurzform der Spec gibt hier: http://www.music.mcgill.ca/~ich/classes/mumt306/StandardMIDIfileformat.html

Ich hab die Langform leider nur auf Papier.
 
Zuletzt bearbeitet:
auf die gefahr hin, dass das ein zirkelschluss ist, weil wir ja nicht wissen ob deine datei korrekt ist und den specs entspricht, aber auf dem bild von algomatic oben siehst du ja, dass das EoT eine delta time hat und das EoT ist auch nicht optional sondern pflicht.
allerdings dürften die meisten geräte das darauf folgende MTrk trotzdem finden wenn es fehlt weil man ja normalerweise immer nach den ersten bytes sucht um was zu finden.

was passieren würde und was wann und wo "gilt" wenn eine track length UND eine EoT in einer datei stehen und diese vonander abweichen gehört zu den sachen, die ich auch nie kapieren werde. man hofft halt, dass es irgendwie geht und ansonsten bastelt man halt irgendwas herum. notfalls fällt dein konzert eben aus. :)

ich selbst benutze schon lange lieber mein eigenfomat, was erst gar keine delta time benutzt, man kann sich dabei allzu leicht verrechnen.
 
Zu FF 2F 00:

This message belongs to the category of MIDI meta messages. Since this is a meta message the MIDI event that carries this message may exist in MIDI files, but it is never sent over MIDI ports to a MIDI device.

Wenn ich @fairplay richtig verstanden habe, dann habt ihr auch Geräte, denen ihr die Sequenz nur via Midi Realtime und nicht via import/export übertragen könnt? Dann würde FF 2F 00 folglich nicht funktionieren.
 
auf die gefahr hin, dass das ein zirkelschluss ist, weil wir ja nicht wissen ob deine datei korrekt ist und den specs entspricht, aber auf dem bild von algomatic oben siehst du ja, dass das EoT eine delta time hat und das EoT ist auch nicht optional sondern pflicht.

Es geht wohl beides: eine absolute oder eine relative Zeitangabe.
Die absolute könnte hilfreich sein, falls der Bedarf besteht, die Zeitangabe im nachhinein noch zu ändern.
 


News

Zurück
Oben