— TFM
— LambdaMikel
Das ist eine Möglichkeit, ja. Oder Du machst einfach ein "Record to RAM" der einkommenden MIDI-Messages (plus Zeitstempel). Wahrscheinlich einfacher.
Kommt darauf an wie präzise das sein soll. So einfach ist das eben nicht. Denn wenn ich etwas von der SIO lesen, wie lange ist es schon unterwegs? Wenn ich eine Eintrag ins RAM schreibe, wie lange 'wartet' das nachfolgende Datenpaket schon auf mich?
Und warum eigentlich das Einlesen? Ist in der MID Datei so viel Zeug drin, dass wir es nicht brauchen? Bin heute mit MP3 fertig geworden und fange dann jetzt mit MIDI richtig an. Hoffe nach etwas Lektüre das besser zu durchblicken.
Wenn ich also vom PC 'aufnehme' dann muss ich ja auch wissen welche Daten (pro Zeiteinheit) zusammen gehören. Schau mer mal.
Du, so genau hört der Mensch das nicht... wenn Du all 1000stel Sekunde nachschaust ob nen neues Byte für Dich da ist, und Du schreibst den Delta zum vorherigen Byte rein, ist das genau genug. MIDI ist "per Design" ein serielles Interface. D.h., selbst Noten (Akkorde) die "zusammengehören", kommen nun mal nacheinander seriell an. Du kannst sogar ausrechnen, wie ungenau das ist.
MIDI = 31250 Baud. Eine Note On Message hat 3 Bytes. Wobei jeweils 1 Byte gesparrt werden kann für nachfolgende Messages vom gleichen Typ - d.h., ein Dreiklang hat 3 Note On Messages, also 3 + 2 + 2 = 7 Bytes. Und das bei 31250 BPS = 3904 Bytes pro Sekunde. D.h., die 2. Note vom Dreiklang kommt genau 2 * 1 / 3904 Sekunden später als die erste, also ca. ne halbe tausendstel Sekunde. Und eine tausendstel Sekunden für die 3. Note. Also - kein Mensch hört das.
> Und warum eigentlich das Einlesen? Ist in der MID Datei so viel Zeug drin, dass wir es nicht brauchen? Bin heute mit MP3 fertig geworden und fange dann jetzt mit MIDI richtig an. Hoffe nach etwas Lektüre das besser zu durchblicken.
Wahrscheinlich nicht. Aber im MIDI Datenstrom der erzeugt wir wenn eine MID Datei abgespielt (und evtl. aufgenommen) wird schon. Die MIDI Clock Messages z.B.