Thursday, March 17, 2011

MIDI vs OSC, with a dash of CV

This post is motivated by a few things:

  • I've heard a lot of discussion on the topic that seems to suggest that there is a difference in capability or effectiveness between these two protocols that a musician should be concerned with.
  • The Eigenharp is capable of generating a lot of data and applying it in various ways (internally, via AU/VSTs, via MIDI) with more arriving
  • I use various soft synths, AUs, hard synths and a a couple of CV-capable devices
  • I do not develop musical hardware or software solutions
So the question is; Are the distinctions between MIDI and OSC material to what matters to me? I think the answer is no.

I'm planning to do some experiments with the stuff I have at hand, but those will focus on MIDI and CV, specifically addressing the best way for me to use the eigenharp to control some Moogerfoggers and a Moog Voyager. 

So this post is separate from that effort.

What does http://opensoundcontrol.org/ say? Look Here: What is the difference between osc and midi?

What does http://www.midi.org/ say? Look Here: A Comparison of MIDI and OSC

What can one make of this:
  • MIDI DIN transport is a red herring. It enabled several generations of hardware to talk to each other (filling a void), some are still limited to that but there are a lot of other transports available today. Nothing in this statement has any bearing on the effectiveness of capability of a data protocol
  • MIDI events are useful simply because they are well known and universally used. OSC can do this but both 'ends' of the exchange need to agree in advance on meaning. A standard event model for music will certainly arise. At that time, this will be a red herring (for new devices) as well.
  • OSC is more extensible, MIDI exclusive messages work (but are perversely opaque). This does not seem to matter to someone simply wanting to play music on devices communicating using either protocol. Further, it will be interesting to see if musicians are motivated to use OSC extensibility once it has a rich event model (any more than they craft sysex messages in MIDI now).
  • MIDI messages are more efficient than OSC with respect to total data transferred per message. Well that probably matters for every device that uses a MIDI DIN plug and is less significant for other transport settings. Also, It is probably only true where the majority of traffic consists of standard events (vs exclusive messages)
  • MIDI is typically lower resolution. IMHO 7bits is enough for some control info and 14 is enough for anything I need. It might seem silly to contemplate crafting a sysex message to carry a 64bit floating point number but one could and it is hard to see much practical difference between the use of such a structure and  something similar crafted in OSC (except to the person doing the crafting, perhaps ;-). (but consider that there are still people coding Fortran with delight hehehe))
Conclusion: 

  1. The brouhaha is mostly sound and thunder signifying nothing.
  2. A nice shiny new protocol is a good thing. Nobody would reasonably use MIDI in the context of things like the widgets of Eigenlabs Stage application (although adding MIDI capability to Stage would be a good thing for bringing together the control of other devices).
  3. Actual users probably do not want any visibility into either protocol (I'm glad Stage works so well but I'm glad there is a GUI for me to use)
  4. MIDI itself does not limit resolution but the MIDI event model's 14bit capability is not widely implemented. 14bits is likely not a practical limitation but an OSC implementation could easily allow more.
Final thoughts: I'll need MIDI for a long time (always) as I have MIDI DIN equipment. OSC will be a valuable addition, particularly in contexts like Stage. Whatever expressiveness I'm capable of can be delivered by either





Friday, January 21, 2011

Music Unfolding - Sympathetic Strings

Here is a little demo of string resonance applied to the cello model of EigenD

Music Unfolding Sympathetic strings behind a cello model by Mike Milton

The first bit is the dry cello model, the second has the effect, and the last bit is the effect minus the cello itself.

The 'strings' were tuned As shown in the scree cap below. One can also set the string frequency as notes (eg: c1) which are then converted to Hz. and, indeed this is how the setting below were derived (CGDA)


If you are having an issue with the player above,  view it directly at SoundCloud

Friday, December 31, 2010

Eigenharp


Eigenharp
Originally uploaded by mikemilton
Yet another shot of the alpha with the mic on the breathpipe

Friday, December 24, 2010

Eigenharp Alpha with DPA Microphone

The DPA Microphone is a great addition to the Alpha. It plugs in just beside the breathpipe and includes a mount on a new breath pipe mouthpiece which the mic can clip to.

It is an electret mic for which the Alpha provides the polarizing voltage (the voltage levels can be selected either by belcanto or by the control keys as can the various controls such as vol, pan, effect send, etc)

Friday, November 26, 2010

Winter Studio


Winter Studio
Originally uploaded by mikemilton
The Alpha and Pico with all their friends.

Click on the picture to see this in Flickr with notes!

Tuesday, August 3, 2010

Root Lights Chromatic

NEOLOGIC (http://twitter.com/neologicjapan) shared some belcanto to light up the root notes on split 1, Alpha factory 3, set to chromatic. It can be found here: NEOLOGIC Blog.

This can be turned into a script for easy use. See the details on scripts at the Eigenlabs WIKI here: http://eigenlabs.com/wiki/Belcanto_Scripts/.

And here it is as a script (you can cut and past this into textedit and store / use it as described at the link above)


description
Script by NEOLOGIC to light led root notes on keygroup1, chromatic scale
script
gain create


it to light gain name ify


talker create


it to light talker name ify


kgroup 1 output 41 to light talker connect
kgroup 1 output 42 to light talker connect
kgroup 1 output 63 to light talker connect
kgroup 1 output 64 to light talker connect
kgroup 1 output 65 to light talker connect
kgroup 1 output 85 to light talker connect
kgroup 1 output 86 to light talker connect
kgroup 1 output 87 to light talker connect
kgroup 1 output 88 to light talker connect
kgroup 1 output 107 to light talker connect
kgroup 1 output 108 to light talker connect
kgroup 1 output 109 to light talker connect
kgroup 1 output 110 to light talker connect


light talker listen


light gain listen


volume to 0 when 13 set
volume to 0 when 31 set
volume to 0 when 43 set
volume to 0 when 49 set
volume to 0 when 61 set
volume to 0 when 79 set
volume to 0 when 97 set
volume to 0 when 115 set