Je lisais cet article: https://www.midikits.net/midi_analyser/running_status.htmComment différencier DeltaTime (VLQ) de l'état en cours Midi Spécification
Je lis un fichier MIDI, ici le dernier extrait en octets:
00 B2 07 64 00 0A 40 00
5B 00 00 5D 00 00 FF 21
01 00 83 5F 90 3C 00 01
FF 2F 00
au lieu
page de lecture 91, Delta Time
n'est pas envoyé apparemment, envoyer deux octets en rapport avec « Running Status »
Voici mon interprétation (je sais est mauvais en raison de je ne considérais comme Running Status)
00 B2 07 64
// track event size: '4', delta time: '0', event: 'status byte 'B2',
// data length: '2', data: '0764', description: 'Controller Change',
// channel: '2 - Midi Event Type'
00 0A // track event size: '2', delta time: '0', event: ' - '
40 00 // track event size: '2', delta time: '64', event: ' - '
5B 00 // track event size: '2', delta time: '91', event: ' - '
00 5D // track event size: '2', delta time: '0', event: ' - '
00 00 // track event size: '2', delta time: '0', event: ' - '
FF 21 01 // track event size: '3', delta time: '16289', event: ' - '
00 83 5F 90
// delta time: '0', event: 'status byte '83', data length: '2', data: '5F90',
// description: 'Note Off', channel: '3 - Midi Event Type'
3C 00 // track event size: '2', delta time: '60', event: ' - '
01 FF 2F 00
//track event size: '4', delta time: '1', event: 'type: '2F',
// data length: '0', data: '', description: 'End of Track - Meta Event Type'
Comme vous pouvez le voir dans 00 0A
ligne 00
est traité comme Delta Time, mais 0A
n'est pas lié à un type d'événement. (Je pense que c'est un état en cours), la même situation se produit avec 3C 00
ligne.
Question:
Quelle est la moindre idée de faire la différence Quand exécution Etat et quand est delta time
?
EDIT 1:
Dans mon exemple, peut être interprété comme Control Changes Messages
:
0A 40 // 0A Pan
Vérifiez l'exemple lié dans le lien Web.
Supposons que le même Delta Time
00
00 // Delta Time
90 3C 7F // Note ON, Channel 0, Key 3C , Velocity 7F
00 // Delta Time
90 40 7F // Note ON, Channel 0, Key 40 , Velocity 7F
00 // Delta Time
90 43 7F // Note ON, Channel 0, Key 43 , Velocity 7F
Avant exemple se transforme comme
00 // Delta Time
90 3C 7F // Note ON, Channel 0, Key 3C , Velocity 7F
00 // Delta Time
40 7F // Note ON, Channel 0, Key 40 , Velocity 7F
00 // Delta Time
43 7F // Note ON, Channel 0, Key 43 , Velocity 7F
Mais, comme je ne pas confondre avec CONTROL CHANGE MESSAGES (DATA BYTES)
40 7F // 40 Damper Pedal on/off (Sustain)
43 7F // 43 Soft Pedal On/Off
Merci, j'ai trouvé la interprétation pour Running Status ... https: //www.midi.org/specifications/item/table-3-control-change-messages-data-bytes-2 –
L'état d'exécution peut être utilisé pour n'importe quel type d'événement; vous devez vous souvenir du dernier octet d'état actuel. –
Mais, comment savoir quelle interprétation doit être appliquée lorsque vous lisez des octets à partir d'un fichier? a-t-il des messages de changement de contrôle ou d'état en cours de limitation? (pour ne pas avoir d'octets de données ambiguos) –