Network MIDI Updates and Changes in OSX Yosemite

Apple’s Yosemite has received a lot of attention for the addition of Bluetooth MIDI over Bluetooth LE.  What has gotten less attention are the updates to Network Midi.  Here are a few things I have learned.

Network Midi has been included in Mac OSX since about 2004.  It allows computers to find one another over the LAN via Bonjour and to join each others’ MIDI sessions.  The protocol spoken by Network MIDI is defined in a IETF doc: RFC 6295, which was ratified in 2011.  An earlier version of this document (RFC 4695) was ratified in 2006.  It seems that this protocol standard has had a long and very slow evolution.

Apple’s implementation of Network MIDI has been sometimes criticized as “buggy.”  I myself had been able to isolate a bug in the implementation of the protocol.  I was delighted to find that Yosemite not only fixes that one specific bug, but seems to include a Network MIDI stack with entirely different characteristics from the previous versions.

  • Receive latency is much lower overall.
  • An erroneous delta timestamp format has been fixed (comex algorithm).
  • Realtime commands are sent (active sense, MTC).

I’ll keep this post updated as I learn more.

9 thoughts on “Network MIDI Updates and Changes in OSX Yosemite”

  1. Do you know if Yosemite Network Midi can work with Windows MIDI over ethernet? How can I connect a Mac OSX to Windows8 for music?

  2. RTP MIDI is an IETF standard, not a W3C standard.

    RFC 4695 had a very long gestation period, with the
    hope that it would be the first and last edition of the
    standard. MIDI 1.0 DIN cables are very mature, and
    RTP is also very mature, and the scope of the standard
    was purposely set to be narrow.

    And for the most part, we succeeded. RFC 6295 fixed
    errata that escaped the first review process, and almost
    all of them concerned the SDP part of the RFC, which
    Apple doesn’t use. At this point, I would be surprised
    if a successor to RFC 6295 is needed by the community.

  3. Thanks for the updates and clarification. (i’ll fix the reference to W3C.) RFC 6295 is a very clear spec … i’ve used it to successfully implement part of the protocol and I agree that the spec seems to be very very complete.

  4. As you said, Apple doesn’t use the SDP part. It uses a simplified protocol suitable for use on a LAN with Bonjour.
    Your original work used SDP/SIP for allowing endpoints to find one another. I think there is an interesting corollary to they way WebRTC has progressed. SDP is used for describing endpoints, but signaling (ala SIP) is not part of the spec. (As an aside: Chrome has support for midi, but doesn’t implement a transport. )
    Regards, T

  5. Is network MIDI in Yosemite compatible with older versions of Mac OS X? I tried to synchronize a 10.6.8 machine with a 10.10.x machine via network MIDI and it failed. If they are incompatible is there a solution?

    Best
    Mark

  6. Do you know if Network MIDI supports event timestamps?
    In my tests I cannot schedule MIDI events in advance by using this technique (events are just sent immediately). This currently makes this protocol not viable to transmit a precise clock signal…

  7. I believe the RTP-MIDI protocol itself supports timestamps, and Network MIDI uses the RTP-MIDI protocol.

    But that does not mean that an interface to Network MIDI is using the timestamp capability properly. Maybe you could be more explicit about the interface, device or program you are using and see if anyone here has any suggestions.

Leave a Reply

Your email address will not be published. Required fields are marked *