OSC and DMXControl


Published on

This presentation discusses the use of OSC in Lighting Control.

Published in: Technology, Business
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

OSC and DMXControl

  1. 1. OSC – O pen S ound C ontrol Protocol A candidate for lighting applications? Frank Burghardt, Markus Minini 2010-Jan-23 www.DMXControl.org
  2. 2. The OSC story – some examples (sound applications) www.DMXControl.de 2010 If you want the ultimate in external control of Resolume, the Open Sound Control (OSC) protocol is the answer. OSC is becoming increasingly popular and is used by programs like MAX/MSP, VVVV and Reaktor (Native Instruments) OSC can be seen as a successor of MIDI and offers a much higher accuracy and is more flexible because it can be sent over a network including wifi. (Resolume Manual) Well, my wish has been granted, the latest AlgoScore supports OSC, and I'm a happy guy . … most controllers have to overcome a technical legacy , namely MIDI. Because many controllers can be connected via USB, it is possible to use protocols with higher resolution, of course in particular OSC. OSC opens a new era in the field of real-time control and human-machine interfaces (Lumor Manual)
  3. 3. Content <ul><li>What is OSC? </li></ul><ul><ul><li>comparison of DMX, MIDI and OSC </li></ul></ul><ul><ul><li>popular uses of OSC </li></ul></ul><ul><li>How OSC works? </li></ul><ul><ul><li>example configurations </li></ul></ul><ul><ul><li>basic concepts: messages, addresses etc. </li></ul></ul><ul><li>Where OSC is supported? </li></ul><ul><ul><li>devices and tools supporting OSC </li></ul></ul><ul><li>How to apply OSC in lighting? </li></ul><ul><ul><li>discussion of OSC schemas for lighting control </li></ul></ul><ul><li>Summary and live demo </li></ul>www.DMXControl.de 2010
  4. 4. What is OSC? www.DMXControl.de 2010 <ul><li>An alternative concept for: </li></ul><ul><ul><li>MIDI (focuses on sound)) </li></ul></ul><ul><ul><li>MediaControl (focuses on video) </li></ul></ul><ul><ul><li>DMX (focuses on lighting control) </li></ul></ul>Sound synthesizer Computer other multimedia devices IP A protocol for communication between computers, sound synthesizers and other multimedia devices
  5. 5. Comparison of MIDI, DMX and OSC www.DMXControl.de 2010 144 60 64 (MIDI Note-on) /wii/ir/x 0.1503 /play-note 15 0.9 MIDI DMX OSC name Musical Instruments Digital Interface Digital Multiplex Open Sound Control defined in 1983 1986-1990 2002-2004 protocol serial serial independent (e.g. UDP) Speed/rate 31.25kB/sec 250 kbit/sec IP net depended resolution 128 levels 256 levels arbitrary (e.g. float) extensions (IP) RFC4695 ArtNet Spec 2.0 in progress comment predefined messages (byte code) derived from keyboard use RDM improves functionality, but remains in low level concept provides useful improvements, e.g. better resolution, standard network IF
  6. 6. What is Open Sound Control? <ul><li>A message oriented frame work, </li></ul><ul><ul><li>but there are no predefined messages and features </li></ul></ul><ul><ul><li>-> flexible and open ... … benefit or drawback ? </li></ul></ul><ul><li>New properties: </li></ul><ul><ul><li>intuitive addressing schema, </li></ul></ul><ul><ul><li>capability to schedule events in future </li></ul></ul><ul><ul><li>variable data types </li></ul></ul><ul><li>Works with embedded devices, PDA, iPhone, Wii, ... via internet. </li></ul><ul><li>OSC is not a physical transport medium </li></ul><ul><ul><li>can be based on arbitrary transport medium </li></ul></ul><ul><ul><li>OSI layer 6 “presentation”, uses mainly UDP </li></ul></ul><ul><li>OSC doesn’t replace MIDI, due to missing automatic connect-and-play (or plug-and-play) concept </li></ul><ul><ul><li>connected devices (via Ethernet, WLAN, Bluetooth etc) cannot scan each other and learn about each others capabilities </li></ul></ul><ul><ul><li>A file format such as standard MIDI file for exchange of data does not exist </li></ul></ul>www.DMXControl.de 2010
  7. 7. Popular uses of OSC <ul><li>Sensor/Gesture-Based Electronic Musical Instruments </li></ul><ul><li>Mapping nonmusical data to sound </li></ul><ul><li>Multiple-User Shared Musical Control </li></ul><ul><li>Web interfaces </li></ul><ul><li>Networked LAN Musical Performance </li></ul><ul><li>WAN performance and Telepresence </li></ul><ul><li>Virtual Reality, games </li></ul><ul><li>Wrapping Other Protocols inside OSC </li></ul>www.DMXControl.de 2010 <ul><li>Remote control: Transport of values from sliders, encoders, (drum) pads, fader wings and touch screen data for input </li></ul><ul><li>“ command transfer” between tools </li></ul><ul><li>Media control, VJing </li></ul><ul><li>Table-top tangible user interfaces, see [TUIO] </li></ul>from [1] Control of light -> ??? -> missing!
  8. 8. OSC applications www.DMXControl.de 2010 see: [3] Quintet.net VJing VirtualDJ
  9. 9. Configuration www.DMXControl.de 2010 Client Server OSC packets via IP Here the messages are received <ul><li>receives OSC messages from clients </li></ul><ul><li>executes methods, that are assigned to addresses </li></ul><ul><ul><li>sends OSC messages to one or more servers </li></ul></ul><ul><ul><li>address can contain wildcards </li></ul></ul><ul><ul><li>one OSC message can trigger several methods on a server </li></ul></ul><ul><li>data transfer in one direction (but OSC can be used in a bidirectional way) </li></ul><ul><li>packet can contain an OSC message or an OSC bundle </li></ul><ul><li>packet includes info on the length of data as well as the data itself </li></ul>
  10. 10. Network concepts <ul><li>Based on IP infra-structure and OSC routing mechanisms for message distribution </li></ul><ul><li>source: [2] </li></ul>www.DMXControl.de 2010 star architecture mesh (decentralized) OSC
  11. 11. Basics: messages, bundles, addresses <ul><li>OSC address schema provides 3 important capabilities: </li></ul><ul><ul><li>intuitive names for raised addresses, </li></ul></ul><ul><ul><li>unrestricted number of name spaces, </li></ul></ul><ul><ul><li>address areas within messages (incl. wildcards, patterns) are supported </li></ul></ul>www.DMXControl.de 2010 <ul><li>addresses starts with / </li></ul><ul><ul><li>often defined in hierarchical way (-> name space) </li></ul></ul><ul><ul><li>can contain wildcards </li></ul></ul><ul><ul><li>represents one or several methods on a server </li></ul></ul><ul><li>examples: /device/module/control-element </li></ul><ul><li>/fader/1/value </li></ul>
  12. 12. <ul><li>Leaves of tree are </li></ul><ul><li>methods on the server </li></ul><ul><li>/fader/1/1 </li></ul><ul><li>/fader/2/6 </li></ul><ul><li>/buttons/1/parsfront </li></ul><ul><li>/buttons/2/parsback </li></ul><ul><li>examples for p atterns : </li></ul><ul><li>/fader/?/[1-3] </li></ul><ul><li>/buttons/1/pars* </li></ul><ul><li>Other levels: container(-methods) </li></ul><ul><li>Name space reflects object model </li></ul><ul><li>proper name space benefits for pattern matching </li></ul>Basics: addresses www.DMXControl.de 2010 source: [1]
  13. 13. Basics: message www.DMXControl.de 2010 <ul><li>OSC message consists of: </li></ul><ul><ul><li>OSC address </li></ul></ul><ul><ul><li>OSC type tag -> (integer, float, string ... [arrays]) </li></ul></ul><ul><ul><li>-> data types of arguments </li></ul></ul><ul><ul><li>OSC arguments -> (values) </li></ul></ul><ul><li>OSC arguments are optional </li></ul><ul><li>examples: </li></ul><ul><ul><li>/oscillator/4/frequency ,f 440 </li></ul></ul><ul><ul><li>/layer1/clip2/video/effect ,ii 3 35 </li></ul></ul><ul><ul><li>/track1/start </li></ul></ul>
  14. 14. Basics: bundles <ul><li>A Group of OSC messages, containing one or more OSC messages and a time tag </li></ul><ul><li>OSC methods are called when the time tag is “reached” </li></ul><ul><li>Hierarchical concept: bundle can contain other bundles </li></ul><ul><li>Processing of OSC messages occurs in sequence, as they are listed in the bundle </li></ul><ul><li>But quasi-simultaneous processing of messages in the bundle occurs </li></ul>www.DMXControl.de 2010 Open Sound Control Message : [ address type-tags (i,f,s,b) arguments . . . ] Open Sound Control Bundle : [ “#bundle” timestamp integer-length packet-1 packet-2 . . . ]
  15. 15. Examples of OSC router <ul><li>junXion © (Mac OS) is a software tool, processing data from USB devices (joysticks, touchscreens, mouse), MIDI / OSC messages, audio inputs, WiiRemote controllers, Arduino sensor boards and video image tracking. Output data (MIDI or OSC) can be routed to other MIDI/OSC controllers (SW or HW). </li></ul><ul><li>OSCulator </li></ul><ul><li>GlovePie </li></ul>www.DMXControl.de 2010
  16. 16. Devices and applications with OSC <ul><li>Audio-/video area: </li></ul><ul><ul><li>Reaktor, MAX/MSP </li></ul></ul><ul><ul><li>Mirage, MADJack, Resolume </li></ul></ul><ul><ul><li>Traktor, Ableton, VirtualDJ </li></ul></ul><ul><ul><li>MXWendler, Ventuz, VVVV, VDMX </li></ul></ul><ul><li>Hardware: </li></ul><ul><ul><li>Make Controller Kit, Monome, KISS Box </li></ul></ul><ul><ul><li>WiSE Box, uOSC </li></ul></ul><ul><ul><li>Lemur </li></ul></ul>www.DMXControl.de 2010
  17. 17. OSC based (remote-)controler www.DMXControl.de 2010 Lemur iPhone with OSC applications
  18. 18. OSC software tools <ul><li>OSC Monitors: </li></ul><ul><ul><li>http://www.frieder-weiss.de/OSC/index.html </li></ul></ul><ul><ul><li>http://sourceforge.net/projects/braun/ </li></ul></ul><ul><li>iPhone clients: </li></ul><ul><ul><li>http://poly.share.dj/projects/#mrmr </li></ul></ul><ul><ul><li>http://hexler.net/software/touchosc </li></ul></ul><ul><li>Other clients: </li></ul><ul><ul><li>Mouse2OSC </li></ul></ul><ul><li>Development packages: </li></ul><ul><ul><li>Processing: osp5, Python: SimpleOSC </li></ul></ul><ul><ul><li>C# : Bespoke OSC, Open Sound Control for .NET (http://luvtechno.net) </li></ul></ul><ul><ul><li>C/C++: oscpack, OCS-Kit, etc. </li></ul></ul><ul><ul><li>Java: JavaOSC, NetUtil, etc. </li></ul></ul>www.DMXControl.de 2010
  19. 19. Name space for lighting control <ul><li>intended use to be clarified! </li></ul><ul><li>definition of name space is required! </li></ul><ul><li>3 variants for discussion </li></ul><ul><ul><li>elementary (DMX level) concept </li></ul></ul><ul><ul><li>control oriented concept </li></ul></ul><ul><ul><li>abstract fixtures concept </li></ul></ul><ul><li>Attention : concepts are intended as a software interface for controllers, not for input signaling of DMX fixtures! ( OSC within lighting fixtures will need some more time, but would be possible.) </li></ul>www.DMXControl.de 2010
  20. 20. Examples for schemas <ul><li>Typical OSC control elements: </li></ul><ul><ul><li>objects : deck, mixer, track, layer, composition, device, playlist, fader, rotary, button </li></ul></ul><ul><ul><li>parameters: value, direction, speed, mode, volume, position, pan, scale, rotate, opacity, size </li></ul></ul><ul><ul><li>operations: select, clear, solo, connect </li></ul></ul><ul><li>Hierarchical name space (vs. flat name space) </li></ul><ul><ul><li>address for volume of layer 1: </li></ul></ul><ul><ul><ul><li>/layer1/audio/volume/values </li></ul></ul></ul><ul><ul><li>first video effect of clip 2 in layer 1: </li></ul></ul><ul><ul><ul><li>/layer1/clip2/video/effect1 </li></ul></ul></ul><ul><ul><li>instruction, that the system sends a status update every 500 ms: </li></ul></ul><ul><ul><ul><li>/constraint/motor/force/magnitude/get 500 </li></ul></ul></ul>www.DMXControl.de 2010
  21. 21. OSC name space for Lighting (1) - elementary level (DMX level) - <ul><li>example OSC name space for OSC - MIDI mapping: </li></ul><ul><ul><li>/midi/out/noteOn [channel] [key] [velocity] </li></ul></ul><ul><ul><li>/midi/out/noteOff [channel] [key] [velocity] </li></ul></ul><ul><li>for DMX, the following name space on elementary level is conceivable, see [2]: </li></ul><ul><ul><li>/dmx/out ,ii [chn] [val] - set channel [chn] to value [val] </li></ul></ul><ul><ul><li>/dmx/in ,ii [chn] [val] </li></ul></ul><ul><li>or: </li></ul><ul><ul><li>/dmx/set ,ii  [chn] [val] - set channel [chn] to value [val] </li></ul></ul><ul><ul><li>/dmx/fade ,iif  [chn] [val] [s] - fade channel [chn] to value [val] with a period of [s] seconds </li></ul></ul><ul><li>Disadvantage : too little abstraction “only” alternative representation for DMX-IN restricted use of OSC routing features </li></ul>www.DMXControl.de 2010
  22. 22. OSC name space for Lighting (2) - control oriented concept- <ul><li>Definition on the level of remote controls : </li></ul><ul><ul><li>/dmxc/submaster/<number>/value </li></ul></ul><ul><ul><li>/dmxc/button/<number>/value </li></ul></ul><ul><ul><li>/dmxc/fader/<number>/value </li></ul></ul><ul><li>generic concept, from the view of a remote controller (such as iPhone touchOSC) </li></ul><ul><li>server (DMX controller) is responsible for mapping to control logic </li></ul><ul><li>Disadvantage: </li></ul><ul><ul><li>Clients are “stupid” -> “Faderwings”, no intelligence </li></ul></ul>www.DMXControl.de 2010
  23. 23. OSC name space for Lighting (3) - abstract fixtures concept - <ul><li>Definition on the level of HAL (“Hardware Abstraction Layer”): </li></ul><ul><ul><li>/dmxc/group/devices/beam/“property“ </li></ul></ul><ul><ul><li>groups: Moving Lights, Dimmer, Switch, <own groups> </li></ul></ul><ul><ul><li>beam: fixtures can provide multiple beams </li></ul></ul><ul><ul><li>properties: color, position, gobo, intensity </li></ul></ul><ul><ul><li>example: /dmxc/MovLights/*/beam?/color blue sets all Moving Lights to color “blue” </li></ul></ul><ul><li>Advantage : </li></ul><ul><ul><li>clients are able to take over intelligent tasks </li></ul></ul><ul><ul><li>good interworking by several components in distributed control </li></ul></ul><ul><ul><li>DMX controller cares for mapping of logical view to physical view (DMX values) and acts as OSC router for media control etc. </li></ul></ul>www.DMXControl.de 2010
  24. 24. Extract of Lighting name space www.DMXControl.de 2010 /dmxc /commands /cuelists /groups /PARs /MovLights /<fixtures> /freeze /dmxin /select /start /beam1 /<property> /color /gobo /position /controls /fader /button /... /... /... /... <ul><ul><li>abstract fixtures </li></ul></ul><ul><ul><li>concept </li></ul></ul><ul><ul><li>control oriented </li></ul></ul><ul><ul><li>concept </li></ul></ul><ul><ul><li>elementary (DMX level) concept </li></ul></ul>
  25. 25. Summary <ul><li>Use of OSC in Lighting Control: </li></ul><ul><ul><li>interesting alternative concept for remote control (OSC capable devices / input devices) </li></ul></ul><ul><ul><li>can be used in similar way as MIDI is applied today </li></ul></ul><ul><ul><li>OSC will not replace MIDI, but complement it, see [4] </li></ul></ul><ul><ul><li>promising concept for distributed control concepts </li></ul></ul><ul><ul><li>very helpful for multimedia interaction, if DMX controller works as OSC client </li></ul></ul><ul><li>Problems from today’s point of view: </li></ul><ul><ul><li>reliability (UDP/TCP), jitter and missing plug & play behavior </li></ul></ul><ul><ul><li>no standardized OSC name schema for control of DMX fixtures </li></ul></ul><ul><li>Proposal: </li></ul><ul><ul><li>start initiative for OSC name space for lighting control </li></ul></ul><ul><ul><li>Who joins? </li></ul></ul>www.DMXControl.de 2010
  26. 26. Live demo <ul><li>OSC-Apps (iPhone) </li></ul><ul><li>WiiMote (via vvvv) </li></ul><ul><li>Mouse2OSC (Windows) </li></ul><ul><li>Receiver is DMXControl with </li></ul><ul><li>OSC receiver plugin </li></ul>www.DMXControl.de 2010 vvvv bluetooth
  27. 27. links / sources <ul><li>[1] http://opensoundcontrol.org/ </li></ul><ul><li>[2] http://users.informatik.haw-hamburg.de/~ubicomp/arbeiten/diplom/sukale.pdf </li></ul><ul><li>[3] http://www.slideshare.net/GamerSize/open-sound-control-as-middleware-for-games-accessibility-and-bodymovement-controlled-gaming </li></ul><ul><li>[4] http://www.midi.org/aboutmidi/midi-osc.php </li></ul><ul><li>[5] http://www.linuxjournal.com/content/introduction-osc </li></ul><ul><li>[6] http://www.steim.org/steim/junxion_v4.htm </li></ul>www.DMXControl.de 2010
  28. 28. Questions ? <ul><li>www.DMXControl.org </li></ul>www.DMXControl.de 2010 Please send questions, comments and contributions to info [at] dmxcontrol.org
  29. 29. Appendix: address patterns <ul><li>Pattern Syntax: </li></ul><ul><ul><li>* – matches zero or more characters </li></ul></ul><ul><ul><li>? – matches any single character </li></ul></ul><ul><ul><li>[characters] – matches characters </li></ul></ul><ul><ul><li>Minus, e.g. [1-3] matches range of characters </li></ul></ul><ul><ul><li>Leading !, e.g. [!0-9] negates the match </li></ul></ul><ul><ul><li>{string1,string2,string3} – match a string in list </li></ul></ul><ul><li>If more than one destination matches address pattern: </li></ul><ul><ul><li>Send copy of message arguments to each node </li></ul></ul><ul><ul><li>Fanout to unknown destinations </li></ul></ul><ul><ul><li>For example: control all “voices” with volume pe dal </li></ul></ul>www.DMXControl.de 2010
  30. 30. Appendix: acknowledgments <ul><li>Thanks for support, contribution or encouragement: </li></ul><ul><li>Arne L., Mark A., kuni, Fabian E., Julian M., Matthias D., </li></ul><ul><li>… </li></ul><ul><li>… </li></ul><ul><li>… </li></ul><ul><li>(will hopefully continued) </li></ul>www.DMXControl.de 2010