GMU:Tutorials/Networking/Controlling MAX-MSP with TheCaptury: Difference between revisions
Line 41: | Line 41: | ||
After [udpreceive] we can route the out coming array of information by using the OSC-Syntax again. | After [udpreceive] we can route the out coming array of information by using the OSC-Syntax again. | ||
With the [route] object we can exactly determine what branch of the string we want to access, in this case we write "/route/John-Doe/blender/Root/vector" to get exactly what we asked for. Afterwards we unpack the containing floats, which represent the x, y and z value of our subscripted bone. | With the [route] object we can exactly determine what branch of the string we want to access, in this case we write "/route/John-Doe/blender/Root/vector" to get exactly what we asked for. Afterwards we unpack the containing floats, which represent the x, y and z value of our subscripted bone. | ||
[[img05.png|400px]] | |||
== Using the Data Stream from The Captury == | == Using the Data Stream from The Captury == |
Revision as of 18:27, 22 October 2016
Controlling Max-Msp with The Captury
Overview
UDP
UDP (User Datagram Protocol) is an internet protocol which provides communication which no handshaking. It also let you define which port on the destination IP you want to address. In our case it is used to transmit messages in OSC format.
In Max/Msp you set up an udpsend object. It need two parameters: IP address and port number (e.g.: "141.54.0.1." or "kosmos.uni-weimar.de" and "13000").
OSC-Syntax
OSC-messages are build up like an path in your PC (e.g.: "/Animal/Dog/Dackel/Colour/ brown" or "/Animal/Dog/Dackel/Amount/ 45"). Under this path syntax you can send any datatypes (symbol, integer, float as given in the example). This message order is important. Because you can only find what has been sent under the exact path. You would not search the amount of Dackels under path ".../Colour".
Custom Port Configuration
Since we can change the port number on that we want to receive messages (in case you want to split up channels on one machine or distribute messages to different receivers), we can configure the port we want to receive messages on. In our case we use this feature to tell "the Captury" software where we want to receive any kind of messages.
In Max we can make this work by calling the [udpsend] object with following message: "/configure/port $1" ($1 is the Max syntax style for variables).
Subscribe to any Skeleton
After we have been setting up the port we want to receive on, we can tell "the Captury" what we want to receive. We are doing this by calling the following message to [udpsend]: "/subscribe/John-Doe/blender/Root/vector 50. 0. 100.".
Since subscriptions will expire after a while, we call this message every 10 seconds. Therefore we use the Max own metronome object called [metro] which will repeat to put out bangs and so trigger the message. The toggle [X] will turn ON the metro.
Grabbing the Bone Vector Coordinates
The [udpreceive] object work the other way around. It can receive messages coming from a specific IP and port. After [udpreceive] we can route the out coming array of information by using the OSC-Syntax again. With the [route] object we can exactly determine what branch of the string we want to access, in this case we write "/route/John-Doe/blender/Root/vector" to get exactly what we asked for. Afterwards we unpack the containing floats, which represent the x, y and z value of our subscripted bone.