MIDI - jkominek/piano-conversion GitHub Wiki
Public Specifications
Note: Everybody seems to think that the MIDI specifications cost money. They do not. Perhaps that was the case in the past, but they're all free now. You just have to register for an (also free) account.
https://www.midi.org/specifications
MIDI 1.0 Detailed Specification
Covers MIDI 1.0 messages, and the classic 5 pin DIN connector
5 Pin DIN Electrical Specs
Just the DIN connector portion, updated to cover 3.3V electronics. (You need to refer to this when looking at / working on our MIDI board.)
USB MIDI 1.0 Device Class Specification
RTP-MIDI
- https://www.midi.org/specifications/midi-transports-specifications/rtp-midi
- https://john-lazzaro.github.io/rtpmidi/
MIDI over the Internet Protocol
MIDI File Specification
MIDI 2.0
That's the pointer to the root of all of the MIDI 2.0 specs. There's a lot more than there were for 1.0
Project Internal Specification
We've got a number of I2C boards to which the main board might want to send MIDI. The spec is: if at all possible, the device should receive a stream of MIDI as bytes written to register 0x00. If the device would like to send MIDI to the main board, the stream should be available for reads at register 0x00. Boards should also listen to the I2C broadcast address, so that we can send MIDI to every device on the I2C line simultaneously.
That should cover the MIDI board, the networking board(s), a synthesizer board, and potentially a lot of other stuff. MIDI has demonstrated itself to be a useful protocol, we might as well leverage it internally as well as externally.