Here's (quite) a few pages detailing the MIDI language. MIDI is an acronym for Musical instruments Digital Interface and is the language in which synthesizers, samplers, computers and other digital musical gear communicate with each other. On the internet there are plenty of introductory articles on MIDI, so I won't offer any here. Just search the archives if you need a beginners document, tutorial or other introductory text. The pages listed below are more technically oriented and descibe in detail stuff like the official MIDI specificaton, the MIDI file format, the MIDI Sample Dump Stand\ard, and MIDI Time Code.
Years ago, I found these articles on various ftp-sites and newsgroups on the internet (in the good old Atari days, when the world-wide-web was still years away). I've had them on my computer(s) ever since, and over the years they've been an invaluable resource of essential information whenever I was searching for the "really deep end" of MIDI. I believe these articles are free to distribute and share, and putting them on this website doesn't violate any copyrights. If I'm mistaken and some of them should be taken offline, please tell me by email. I've attributed the articles to their original authors as far as possible, and they retain the copyrights where applicable. If someone feels I've omitted something essential in this respect, then also please let me know.
A complete listing of all possible MIDI messages on one page, divided in a couple of tables:
BNF (Backus Normal Form or Backus Nauer Form) is a concise way to specify in a formal way what constitutes a legal "sentence" in a given language. In this case the language is MIDI and the sentences are MIDI messages. BNF is very similar to a context free grammar. A set of production rules specify how non-terminals in the grammar may be rewritten.
An excellent (and critical) treatment by Bob McQueer on MIDI in general, why it was conceived, electrical specifications, and what the various messages mean. Required reading for anyone wanting to learn MIDI.
Almost every MIDI program allows you to save MIDI data in so-called "standard MIDI files" (or read data from such files). This way different programs have a way to share MIDI data. This article explains in great technical detail the format of such files. If you want to program your own MIDI file reading/writing routines, you'll need this info.
Like the MIDI file standard is used to facilitate the exchange of MIDI data, the Sample Dump Standard is meant as a universal protocol for the exchange of sound samples. This document describes the technical details of the MIDI Sample Dump Standard. Required reading if you want to write software that should be able to send or receive sound samples through MIDI.
One way to synchronize MIDI devices is by using MIDI Time Code. This document describes in detail the various flavours of MIDI Time Code.
(c) H.J. Veenstra 2001.
