OSC or MIDI - which is superior?

  • This could perhaps be answered with some simple net searching, but it seems there are differing opinions and the jury is still out.

    I've posted this (potentially controversial) question here in hope of polling this board who are naturally more informed than most on this subject. Many thanks ahead of time for contributing to this thread.

    For reference:

    http://opensoundcontrol.org/what-difference-between-osc-and-midi

    More detail here: http://opensoundcontrol.org/introduction-osc

    And from Midi manufacturers association:
    http://www.midi.org/aboutmidi/midi-osc.php

  • I'm not entirely informed on the subject, but from what I think I know and have interpreted, one of the big things about OSC is that it can provide continuous, nonstop, accurate data, where MIDI is limited to steps and divisions. This would be important for something like my OSC Ondes Martenot project, where with MIDI I would be limited to data that is cut up and wouldn't flow as it should with the Ondes. I could be entirely wrong though, but that is what I got when posting about my project a while ago. It has been a while since I've looked at it though, so I do not know for sure.

    Edit: I just realized that I highlighted a difference without stating a position on it. From what I've heard from various people more well versed in that particular area of programming music, OSC is looking to become the new MIDI as interfacing and design is becoming easier and easier to understand. I'm inclined to agree with this idea. As I stated above with absolutely no knowledge on the subject, OSC's higher resolution data production could open up possibilities that weren't previously possible with MIDI.

  • the way i see it:

    MIDI: slow, limiting, but pervasive
    OSC: fast, expandable, not many things support it

    so if you're building your own world of music software/hardware and not planning on interfacing with anything then you will most likely choose OSC as your communication layer. if you're interfacing with existing hardware that doesn't support OSC then you don't really have a choice and have to use MIDI.

  • yes aldaraia, you're right, because MIDI supports very limited ranges of values (0-127 in most cases). with OSC you can use floating point values and are not limited by how many values you can interpolate between, giving you greater accuracy.

  • unfortunately, it doesn't look like MIDI is going anywhere, if only due to the insane number of devices in existence that use that coveted 5-pin connector.

    OSC has the potential to take over, but it needs some solid hardware solutions before that happens.

    wifi could be one of them, but antennas are more expensive than ethernet physical layers, so the rj45 connector seems like a logical choice.

    if you're working with modern controller hardware and computers for synthesis and sampling, then OSC is definitely more robust. if you're working with older gear that has MIDI ports, you're kindof trapped, unless you fire up the soldering iron and oscilloscope to do some reverse engineering.

  • and after reading that bit from the midi manufacturer's association, perhaps a "MIDI over OSC" also might make sense.

  • "MIDI supports very limited ranges of values (0-127 in most cases)"

    This isn't exactly accurate - you can double the resolution using NRPNs, or otherwise know as Non Registered Parameter Numbers.

    Instead of the 7 bits of the original MIDI standard, High resolution parameters can be achieved by combining a pair of control change messages. First message (coarse) transfers high seven bits of a 14-bit value and the second messages (fine) transfer the low seven bits. For example, My Alesis Micron utilizes NRPNs, but I have yet to figure out a way to send this kind of data from Abelton Live.


    Also, the Midi Manufacturing Association is working on a new and improved midi specification. Currently known as HD Midi or also sometimes referred to as "Midi 2.0"

    Read more here:
    http://www.midi.org/news/hd.php

  • You can send NRPNs via MAX quite easily. It's way more than double the resolution since it's 14 bits or 16384 values.

    But that doesn't mean I think we should be using NRPNs. OSC would be way better for this. NRPNs are mostly used for non-external facing (internal or proprietary) control of stuff.

    The other point about OSC is it's sent UDP over an IP connection, so it is inherently networkable via local and internet networks which is a huge advantage.

    That's why Lemurs are so good at OSC, they are network computers and connected via ethernet.

    The disadvantage is that hardware vendors need to integrate with an ethernet card for the networking directly OR use the monomeSerial approach of converting to a different protocol like USB.

  • "This isn't exactly accurate - you can double the resolution using NRPNs, or otherwise know as Non Registered Parameter Numbers."

    hence "in most cases" ;) there's sysex as well, but most hardware and software you encounter in everyday usage situations is going to use the 0-127 values and standard CC messages, notes, etc. good point though.

    imho, a more important question than 'which is superior' when setting out to engineer a project is 'which is more feasible' which usually comes down to 'which can this piece of hardware/software communicate with out of the box'.

    for purely academic purposes though it is an interesting discussion. i'll have to look into this "HD MIDI", this is the first i've heard of it.

  • You're right, "superiror" might not have been the best choice of words...

    I do think however, OSC gets touted as such quite often, so I thought this would be a beneficial and enlightening discussion. Thanks to everyone for their input and keep it coming!

  • I own an EMX 1 : I harbor a great dislike for NRPN.

    I own a Monome : I heart OSC

    This is not a great contribution to the conversation, i know, but i felt it needed to be shared

  • osc seems neat but so poorly supported that often the only thing i can think to do with it is control MIDI data, lol. in fact i don't really see any reason why the monome couldn't be MIDI-based (not that i would advocate such a thing, just saying it seems easily possible).

    i think it would be cool if osc just swallowed midi whole, IE if it accepted midi messages but also was expandable.

  • OSC is generally implemented via UDP packets, so delivery is not guaranteed, and neither is low latency. In practice I've never had a problem with it, and unless you're daft enough to do wireless you're unlikely to run into problems, but I still have a fondness for good old opto-isolated cable-based MIDI.

    (It's possible to do OSC over TCP/IP - I hacked together a library to do it, long ago - but I suspect it risks higher latency due to handshaking.)

    The monome doesn't do OSC, btw: it does serial over USB, but that didn't stop me writing a boxout about the pros and cons of OSC vs. MIDI in my monome review for Sound On Sound:

    http://www.soundonsound.com/sos/sep08/articles/monome.htm

  • knowing that this is an old post i would like to add another advantage of OSC which is the usage of paths. Midi sends only CC numbers for different parameters and in many situations, like large setups, can become really confusing. OSC can use different Paths for different controls , which is far more informative and modular.
    As for the hardware implementation for controllers, i think the solution of serial over usb with software, is a balanced solution. It's the cheapest and easier method, but it needs a good software to run properly and easily. Maybe a unified framework could be very useful. I know there are some academic proposals for a kind of framework but in either are a complicated or more oriented to "classical" music theory(such as midi).

  • The challenge isn't so much "hardware implementation for controllers" as "implementation for hardware synths" or rather, "connecting hardware devices directly to each other, without a task-specific app running on your computer to bridge the gap between them."

    The flexibility of OSC works against this scenario. Which is why MIDI is so rigidly defined -- to accomplish what it has, it had to be.

  • "connecting hardware devices directly to each other, without a task-specific app running on your computer to bridge the gap between them."

    I think it would be an interesting project to think about how to make the OSC computer-bridge as minimal as possible. Think of this idea as being similar to MIDI/CV converters.

    Atmel or Cortex chips could provide an inexpensive starting point.

  • Supposedly the QuNexus will have OSC support, which given it's MIDI and CV capability, makes it ostensibly a great example of a "minimal OSC computer-bridge". That being said, QuNeo was supposed to have OSC support as well, and it ended up getting implemented on top of a MIDI transport. Disappointing, unless a promised firmware upgrade provides high resolution MIDI in the future.

  • Maybe a Raspberry Pi could be a "solution"?
    A computer small and cheap enough to facilitate that "in-between" connection...

  • Ya, a Raspberry Pi has a Cortex in it, I believe. That's more or less what I meant, but it's just a starting point. The software is the hard part.