MIDI

The near-adequate compromise for digital music that we are stuck with

October 3, 2015 — November 20, 2019

music
standards
Figure 1: Joe Wolfe’s excellent MIDI note summary.

Source: Joe Wolfe

More-or-less working since the 1980s; still the best idea, if you can live with 7-bit scalars as your lingua franca.

1 Handy things

Luis Lloret’s OSMID aims to provide a lightweight, portable, easy-to-use tool to convert MIDI to OSC and OSC to MIDI.

Mark Francombe’s browser MIDI/OSC converter, Midi Message Generator?

JackAss routes MIDI from jack-blind hosts:

JackAss is a VST plugin that provides JACK-MIDI support for VST hosts. Simply load the plugin in your favourite host to get a JACK-MIDI port. Each new plugin instance creates a new MIDI port.

2 Python

  • Magenta’s MIDI interface shows how Google does it so they can be cool.
  • RtMIDI (homepage)
  • MIDO “is a library for working with MIDI messages and ports. It’s designed to be as straightforward and Pythonic as possible.”

3 Javascript

Chrome supports Javascript MIDI natively. See also synestizer.

It doesn’t work in Firefox, but jazz-soft makes a variety of weird plugins that might enable Firefox MIDI although the install process looks flaky.

4 Java

Scripting Processing with MIDI.

5 Network MIDI

Various interacting standards, of course.

5.1 RTP MIDI

RTP-MIDI is an open MIDI standard that Apple (partially?) implements.

Mclaren audio sells some MIDI apps for rpi for Linux desktop that do easy interaction with Apple network MIDI, notably rtpmidi which could perhaps simplify things if it worked, although on my Ubuntu 19.04 install it fails with an error:

/opt/rtpmidi_0.5.0-ubuntu18.04/bin/rtpmidi: error while loading shared libraries: libicui18n.so.60: cannot open shared object file: No such file or directory

Open source, free: Qmidictl (Android) and qmidinet (Linux).

ipmidi for Windows is 69€.

5.2 ALSA native

Really easy MIDI over Network.

# on one computer
aseqnet
# on the other:
aseqnet ip.of.first.computer
# You can use the "-v" option to see info about what’s happening.

# A new MIDI device will appear on each computer:
aconnect -i
# Use aconnect to connect MIDI devices/synths:
aconnect input# output#

5.3 Jack native

Jack supports some complicated network protocol mess which apparently also includes MIDI?

6 Hardware

6.1 Keith McMillan fancy controllers

e.g. QUNexus, multi-dimensional MIDI controllers. (Ongoing project — find out how to work them in Bitwig.)

6.2 Midi fighter twister

16 knobs in a grid what is not to love? The refurbs are affordable.

7 GM percussion codes

Figure 2: EZ-drums
  • 35 Bass Drum 2
  • 36 Bass Drum 1
  • 37 Side Stick/Rimshot
  • 38 Snare Drum 1
  • 39 Hand Clap
  • 40 Snare Drum 2
  • 41 Low Tom 2
  • 42 Closed Hi-hat
  • 43 Low Tom 1
  • 44 Pedal Hi-hat
  • 45 Mid Tom 2
  • 46 Open Hi-hat
  • 47 Mid Tom 1
  • 48 High Tom 2
  • 49 Crash Cymbal 1
  • 50 High Tom 1
  • 51 Ride Cymbal 1
  • 52 Chinese Cymbal
  • 53 Ride Bell
  • 54 Tambourine
  • 55 Splash Cymbal
  • 56 Cowbell
  • 57 Crash Cymbal 2
  • 58 Vibra Slap
  • 59 Ride Cymbal 2
  • 60 High Bongo
  • 61 Low Bongo
  • 62 Mute High Conga
  • 63 Open High Conga
  • 64 Low Conga
  • 65 High Timbale
  • 66 Low Timbale
  • 67 High Agogô
  • 68 Low Agogô
  • 69 Cabasa
  • 70 Maracas
  • 71 Short Whistle
  • 72 Long Whistle
  • 73 Short Güiro
  • 74 Long Güiro
  • 75 Claves
  • 76 High Wood Block
  • 77 Low Wood Block
  • 78 Mute Cuíca
  • 79 Open Cuíca
  • 80 Mute Triangle
  • 81 Open Triangle