I recently read You Are Not a Gadget by Jaron Lanier. It’s a strange book, half-baked and infuriating, yet hard to put down. It’s great fun to contemplate the myriad ways in which Lanier’s arguments fall flat. There’s only one major point that I agree with: MIDI is a plague upon humanity. (Note: In this context, I mean MIDI as a way of representing music in software; MIDI as a way of connecting various pieces of hardware is great.)
I had been resisting repeated requests for MIDI support in libpd, but when Apple added CoreMIDI support to iOS 4.2, I finally caved and added basic MIDI functionality to libpd. My excuse is that sooner or later it would have happened anyway, and besides the goal is to create a tool that’s useful to many people, not a vehicle for my worldview.
The new functionality mirrors the message passing mechanism that has been part of libpd from the beginning: There are functions for sending MIDI events to libpd, and if you want to receive MIDI events from libpd, you implement handler functions and assign them to the appropriate hooks in libpd. Exchanging MIDI events with other components such as CoreMIDI is the responsibility of the client code. The new functionality is documented in the wiki.
I hope that developers will not have to support MIDI in their software in the not too distant future. I just made a small contribution to the entrenchment of MIDI in audio software. I’m experiencing a bit of cognitive dissonance right now.