Ich schreibe derzeit einen Midi-Generator mit bereits vorhandenen Midi-Dateien. Ich bin verwirrt, da jede Midi-Datei, die ich herunterlade, in einem etwas anderen Format gespeichert zu sein scheint. Ich bin besonders verwirrt darüber, was Spuren sind und wie sie die Zeit beeinflussen. In den Midi-Dateien steht:
File Types
There are three types of MIDI files:
type 0 (single track): all messages are saved in one track
type 1 (synchronous): all tracks start at the same time
type 2 (asynchronous): each track is independent of the others
When creating a new file, you can select type by passing the type keyword argument, or by setting the type attribute:
mid = MidiFile(type=2)
mid.type = 1
Type 0 files must have exactly one track. A ValueError is raised if you attempt to save a file with no tracks or with more than one track.
Meine Fragen sind
1. Wenn zwischen synchronen und asynchronen Tracks unterschieden wird, bedeutet dies, dass synchron bedeutet, dass die Deltazeit für jeden neuen Track "neu von 0 beginnt", während asynchron in Bezug auf das Timing aufeinanderfolgend ist? Wenn nicht, was bedeutet das?
2. Wenn meine obige Annahme richtig ist, in welcher Situation würden Sie asynchrone Dateien verwenden?
3. Wie teilt man Tracks auf, wenn Typ 2?
Im Wesentlichen versuche ich, all die verschiedenen Arten der Formatierung von Midi-Dateien zu regulieren, damit ich die Daten zwischen den Typen leichter manipulieren kann. Jede Hilfe dabei wäre willkommen.
Beifall
asynchron bei Typ 2 bedeutet, dass jeder Track eine unabhängige Sequenz ist: Tracks vom Typ 2 sollen nicht gleichzeitig abgespielt werden. Dies unterscheidet sich von Typ 1, wo Tracks gleichzeitig abgespielt werden sollen. Beim Typ 1 beginnt die Zeitmessung jeder Spur zum Zeitpunkt Null. Typ 1 hat oft eine "Tempospur" als erste Spur, die alle Tempoinformationen enthält.
Ich habe nicht gesehen, dass Typ 2 sehr oft verwendet wird. Es ist nur eine Möglichkeit, mehrere Sequenzen in einem einzigen Midifile zu speichern. Betrachten Sie es als Archiv-Midifile.
Nicht dafür gedacht.
Ich denke also, Typ 0 ist das, was Sie brauchen, da Sie Ihre Split-Join-Operation nur für eine einzelne Spur durchführen müssen.
piiperi Setzen Sie Monica wieder ein
Tacker
piiperi Setzen Sie Monica wieder ein