Showing posts with label midi. Show all posts
Showing posts with label midi. Show all posts

Sunday, July 13, 2025

The Complete MIDI 1.0 Detailed Specification 96.1 - Fully Bookmarked + missing OCR

I have been working on a MIDI project so I bookmarked the MIDI 1.0 standard and OCR'ed a missing section. 

If this sounds of use to you here is the link to the document

The internet archive was my original source for the MIDI 1.0 96.1 3rd ed document.

I also came across some MIDI 2.0 docs via AMEI (you will have to translate the Japanese in your browser). The English PDF’s are here. You can access the Github pages deployment via their github if you want to download all the pdf’s in one zip. The current v.0.1.16 deployment is here. The full official Association of Musical Electronics Industry (AMEI is based in Japan) home page also has some pdf’s scattered around it associated with their MIDI Standard Committee work.

As it was pointed out in comment on my reddit post, the "complete" document found around the internet is not current (but likely close enough for my purposes). I then went back and checked the versions on the MIDI association website and made the following tables. Current as of this post. Dates are based upon details in the documents, or online references or copyrights (marked with ?)

MIDI 1.0 Core

ref: https://midi.org/midi-1-0-core-specifications

Stanard Desc Download Details Filename Size Version Date
MIDI 1.0 DETAILED SPECIFICATION This is 1996 revision of the MIDI 1.0 specification.
This document is a combination of the MIDI 1.0 Detailed Specification v 4.1.1 and the MIDI 1.0 Addendum v 4.2
Download Details M1_v4-2-1_MIDI_1-0_Detailed_Specification_96-1-4.pdf 537.88 KB 4.2.1 February 1996
MIDI TIME CODE For device synchronization, MIDI Time Code uses two basic types of messages, described as Quarter Frame and Full.
This document is reprinted from the MIDI 1.0 Detailed Specification v 4.1.1 and the MIDI 1.0 Addendum v 4.2
Download Details RP-004-008_v4-2-1_MIDI_Time_Code_Specification_96-1-4.pdf
81.09 KB 4.2.1 1994?
MIDI SHOW CONTROL The purpose of MIDI Show Control is to allow MIDI systems to communicate with and to control dedicated intelligent control equipment in theatrical, live performance, multi-media, audio-visual and similar environments. Download Details RP-002-014_v1-1-1_MIDI_Show_Control_Specification_96-1-4.pdf 176.19 KB 1.1.1 1995?
MIDI MACHINE CONTROL MIDI Machine Control is a general purpose protocol which initially allows MIDI systems to communicate with and to control some of the more traditional audio recording and production systems. Download Details RP-013_v1-0_MIDI_Machine_Control_Specification_96-1-4.pdf
3.6 MB 1.0 January 1992


MIDI 1.0 Addenda

ref: https://midi.org/midi-1-0-addenda

Standard Description Download Details Filename Size Version Date
MIDI Implementation Chart version 2 This revised version of the standard MIDI Implementation Chart is designed as a quick reference guide that allows users to identify at a glance which MIDI messages and functions are implemented by the device. Download Details midi_chart-v2.pdf 72.63 KB 2.0 25 June 2019 or earlier ????
Renaming of CC91 and CC93 Due to the fact that so many manufacturers use Control Change #91 and #93 in the same way, they should be renamed according to their common usage. Download Details rp23.pdf 26.82 KB Approved by MMA 02/99 / Approved by AMEI 05/99. Contents Copyright 1999-2004
Sound Controller Defaults (Revised) CC 70 through 79 are defined as Sound Controllers. Some have default names, and some are left undefined. Control Change (CC) #75-78 (Sound Controllers 6-9) have been given default names. Download Details rp21.pdf 28.12 KB
Approved by MMA 02/99 / Approved by AMEI 05/99. Contents Copyright 1999-2004
Response to Data Increment/Decrement Controllers This is a recommendation for expected response to Data Increment (MIDI controller #96) and Data Decrement (MIDI controller #97) MIDI messages. Download Details rp18.pdf 31.86 KB Approved by MMA 9/97 / Approved by AMEI 10/97. Contents Copyright 1997-2004
Response to Reset All Controllers Defines a consistent response to the Reset All Controllers Channel Mode message (#121) Download Details rp15.pdf 32.88 KB Approved by MMA 11/98 / Approved by AMEI 05/99. Contents Copyright 1997-2004
File Reference SysEx Message This message allows computer based MIDI devices to access files on a shared file system or network using a URL-style file specification. It allows the sounds in these files to be played using simple MIDI messages. Download Details ca18.pdf 51.96 KB 11/4/98 (Revised 10/27/99)
Three Dimensional Sound Controllers This specification defines MIDI Registered Parameter Number (RPN) controllers corresponding to the parameters that would be involved in order to allow synthesizers to render MIDI in 3D, and to allow content authors to create compelling 3D MIDI sequences. Download Details rp49public.pdf 124.82 KB 1.0 July 23, 2009
High Resolution Velocity Prefix Defines MIDI Continuous Controller 88 (58H) as High Resolution Velocity Prefix to the subsequent Note On / Note Off message. Download Details ca31.pdf 29.68 KB 22 Feb 2013 or earlier ????
Default Pan Formula Over the course of the development of MIDI, different manufacturers have implemented their own responses to CC#10. In addition, various AMEI/MMA Specification (such as GM2 and DLS2) have recommended response curves that are not all the same. Download Details rp36.pdf 29.33 KB Approved by MMA 08/02 / Approved by AMEI 11/02. Contents Copyright 2002-200
MIDI Bank Index Offset Extension to File Reference SysEx Message This is an extension to the File Reference SysEx message (“CA-018”) providing a means of offsetting the mapping information in a DLS file by a MIDI bank index offset. Download Details ca28.pdf
46.18 KB Jan 21 2001
Redefinition of RPN01 and RPN02 (Channel Fine/Coarse Tuning) With the approval of CA-025 (“Master Fine/Coarse Tuning”) there arises a naming conflict with existing Registered Parameter Numbers (RPNs) in the MIDI 1.0 Detailed Specification called Master Tuning. Download Details rp22.pdf 27.31 KB Approved by MMA 02/99 / Approved by AMEI 05/99. Contents Copyright 1999-2004
Sample Dump Size/Rate/Name Extensions This CA adds an Extended Dump Header, capable of handling sample object sizes up to 32 GB (Gigabytes) with greater precision in calling out the sample rate; a new Extended Loop Point message for longer loops; and a Sample Name Transmission / Request pair, all implemented under the Sample Dump Extensions command tree. Download Details ca19.pdf 56.63 KB 11/5/98 (rev 8/24/99 & 12/01/00)
MIDI Visual Control This specification defines a way for MIDI to be used for control of visual presentation devices or systems. MIDI has expanded far beyond its original intention of being a control language for musical instruments. Download Details rp50 MIDI Visual Control.pdf 154.17 KB 1.0 February 15, 2011
MIDI Tuning (Updated Specification) The MIDI Tuning specification allows the sharing of “microtunings” (user-defined scales other than 12-tone equal temperament) among instruments, and the switching of these tunings during real-time performance. Download Details MIDI Tuning Updated Specification.pdf 71.26 KB Approved by MMA 02/99 / Approved by AMEI 05/99. Contents Copyright 1999-2004
Controller Destination Setting This proposal enables selecting the destination for Control Change messages, plus Channel Pressure and Polyphonic Key Pressure, using Universal Real Time System Exclusive messages. Download Details ca22 Controller Destination SysEx Message.pdf 49.97 KB 2/28/99
Key-Based Instrument Controllers The Key-Based Instrument Controller message is intended to be a standard method of providing individual key-based instruments with the same performance control that is available for Channel-based instruments. Download Details ca23 Key-based Instrument Controller SysEx Message.pdf 47.15 KB 2/28/99
Global Parameter Control This proposal allows the editing of global parameters in a device using Universal Real-Time System Exclusive messages. Download Details ca24 Global Parameter Control SysEx Message.pdf 55.81 KB 3/05/99
Master Fine/Course Tuning These two new Universal Real Time SysEx messages are additional Device Control messages which control the overall tuning of a device. Download Details ca25 Master Fine & Coarse Tuning SysEx Message.pdf 49.08 KB 3/02/99
Modulation Depth Range RPN This proposal defines Registered Parameter Number (RPN) #05 as Modulation Depth Range to be used to scale the effective range of Control Change 1 (Modulation Wheel). Download Details ca26 RPN05 Modulation Depth Range.pdf 47.35 KB 3/02/99
5 Pin DIN Electrical Specs The MIDI 1.0 Specification includes an Electrical Specification which uses a 5-Pin DIN connector and 5 Volt electronics as was common at that time. Download Details ca33 5 PIn DIN Electrical Spec.pdf
240.21 KB 2014

Tuesday, May 14, 2019

rtpMIDI & iOS MIDI Controllers

I have been mucking around looking at MIDI controllers and DAW (Digital Audio Workstations). I have lashed out and got myself a Korg nanoKEY Studio and a Zoom R24 USB Recorder.

But it was bugging my mind ... why not get something cool like Ableton Push 2 for some serious creative input and equally serious $$$ or  would Novation Launchpad Pro be a good compromise to get some notation and creative input (velocity, after-touch) without all the bells and whistles ... do I really need notion and expressive input so would a Novation Launchpad Mini Mk2 do???

My conclusion was I really didnt want to break the bank with the Push 2. Even though it will probably be a good investment. I didnt want to pay for a part solution like Launchpad Pro. Which left me with the cheap option of a

With my Hacker hat on .... I thought there must be a way to intercept controller messages and make them do what I want. Step 1 .. see what I can SWIPE (stands for Steal with Integrity and Pride from Everywhere). what I found was some people doing things in python like a hack that allows you to script functions to the Lunchpad 8x8 buttons (using lunchpad.py). Looking around a bit more there are expensive and free MIDI controllers on iOS that seem to use a protocol on OSX called CoreMidi.

Immediate question ... does CoreMidi work on Windows. Well of course not but someone has written a generic server rtpMIDI that just appears like a virtual MIDI device to the rest of windows. It can automatically discover (Peter's Ipad Mini 4) or you can manually add your device (iPadMini4) with its IP and port 5004 if it doesnt show up.

rtpMIDI

Next step i needed to see if a DAW can connect to this. I have mucked around with the Ableton Live Lite (unathorised so no save) and LMMS a free fully functioning open source DAW.

I paired this up with expressionPad (iOS only) on the iPad. This is all over notation as you can choose between key appearance (piano, hex, square), colour (white, rainbow, red, blue) and heaps of custom options about choosing key scales between the columns and tuning between the rows and overall octave base note offset. It also uses multi touch, slide between notes and pitch bending/vibrato.

Expression pad is best for notation as its UI can define layouts by scale (columns) arpeggiated chords (rows) and is more expressive with swiping between notes.


expressionPad (Blues columns & 5 semi rows)

This set up seamlessly sends MIDI notation data to your DAW of choice like LMMS or Ableton Live.  This can be used to fake an Ableton Drumpad control by setting it to an 4 x 4 grid with a C1 base note, columns separated by a semitone and rows by 4 semitones.

I have found Aftertouch • 3D MIDI Controller (iOS only) is probably better direct control as you can save you layouts and switch between pad layouts easily. It is okay for notation as it does aftertouch for controlling pitch bend (X axis), modulation (Y Axis) and velocity (Z Direction) but does not cleanly swipe between notes like expresionPad.

Aftertouch • 3D MIDI Controller (1 semi Columns, 4 semi Rows)

This should be enough to get you started with MIDI controllers and DAW's for free on iOS. No android solutions at this time but I will look into some alternative approaches soon and add it here.