Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>On a <strong>MIDI cable</strong>, MIDI <em>messages</em> are transmitted at the instant they are intended to take place. A <strong>MIDI file</strong> is effectively a recording of timestamped MIDI messages for playback at a later time. The combination of a timestamp and a MIDI message is called an <em>event</em>. There are some differences between messages that appear on a MIDI cable and events that appear in a MIDI file.</p> <p>You're correct that on a MIDI cable, the one-byte Real-Time messages can occur in the middle of bytes of other messages. However, in a MIDI file, keeping track of the exact number of bytes for each event is important, so Real-Time messages can't be stored in a MIDI file in the middle of other events.</p> <p>System Exclusive events are useful to store in a MIDI file, but in general, it doesn't make sense to store any of the other System Common or System Real-Time messages in a MIDI file.</p> <ul> <li><p><strong>$FF Reset:</strong> In a MIDI cable, the status byte $FF means Reset. However, when you are playing a MIDI file, resetting the receiving MIDI device during playback generally doesn't make sense. So in a MIDI file, a status byte of $FF is redefined to indicate a Meta Event.</p></li> <li><p><strong>$F6 Tune Request:</strong> If a device responds to this message, I think it does some internal tuning calibration that would interrupt any playback in progress. So similar to the Reset message, it doesn't make sense to interrupt the playback inside of a MIDI file.</p></li> <li><p><strong>Clock, position, and start/stop messages</strong> ($F1 MIDI Time Code Quarter Frame, $F2 Song Position Pointer, $F3 Song Select, $F8 Clock, $FA Start, $FB Continue, $FC Stop): A device or software that records a MIDI file typically won't record these incoming messages into the MIDI file. However, the device may have an option to interpret these messages to actually reposition, start, stop, or control the speed of the playback or recording. A device or software that plays a MIDI file may have options to send these messages to the MIDI output port to control other MIDI devices that are playing their own parts in addition to the MIDI file notes. Because of this usage, the MIDI player is responsible for sending these clock, position, and start/stop messages, not the MIDI file.</p></li> <li><p><strong>$FE Active Sensing:</strong> If a sending device sends this message, it's used as an idle filler to suggest the cable is still connected properly. If receiving device starts seeing Active Sensing messages and then they stop, it can interpret that as a cable getting disconnected and silence hung notes. It's not useful to store idle filler in a MIDI file. And it would be a function of a sending device to send it, not the MIDI file's responsibility.</p></li> </ul> <p>If you really need to store System Common or System Real-Time messages in a MIDI file, I believe they can be stored in an $F7 event in the MIDI file. My understanding is the data bytes stored in the $F7 event will be transmitted verbatim on the MIDI cable. The <a href="http://www.sonicspot.com/guide/midifiles.html" rel="nofollow">Sonic Spot document</a> calls this usage of $F7 an "Authorization SysEx" event (scroll to the bottom of the document). The <a href="http://home.roadrunner.com/~jgglatt/" rel="nofollow">MIDI Technical Fanatic's Brainwashing Center</a> document <a href="http://home.roadrunner.com/~jgglatt/tech/midifile.htm" rel="nofollow">MIDI File Format</a> calls this usage of $F7 an "Escaped" event (see page "Events in an MTrk"). MIDI sequencer software <a href="http://openmidiproject.sourceforge.jp/Sekaiju_en.html" rel="nofollow">Sekaiju</a> calls $F7 a "SysEx (Arbitrary)" event.</p> <hr> <p>General caveat: On the <a href="http://www.midi.org/" rel="nofollow">MIDI Manufacturers Association</a> site you can find some <a href="http://www.midi.org/techspecs/index.php" rel="nofollow">official information</a> (tables and addendums to the standards) or ask questions on the <a href="http://www.midi.org/cgi-bin/forum/forum.pl/" rel="nofollow">forum</a>. But as you're probably aware, the main content of the <a href="http://www.midi.org/store/docsales.php" rel="nofollow">official MIDI standards cost money</a>. I haven't purchased them, so my understanding above is based on descriptions from third party websites and general usage of MIDI software. You should always remain aware that third parties might have interpreted something differently than the official standards intended. (For example, Jeff Glatt's MIDI Technical Fanatic's Brainwashing Center document <a href="http://home.roadrunner.com/~jgglatt/tech/midispec.htm" rel="nofollow">MIDI Specification</a> says $F9 is a Tick message, but the MMA says that message <a href="http://www.midi.org/cgi-bin/forum/forum.pl/forum.pl?m-1321861191/" rel="nofollow">$F9 is undefined and reserved</a>. Glatt says <a href="http://home.roadrunner.com/~jgglatt/tutr/gm.htm" rel="nofollow">General MIDI program 47 is Orchestral Strings</a>, the MMA says <a href="http://www.midi.org/techspecs/gm1sound.php" rel="nofollow">program 47 is Orchestral Harp</a>.)</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload