by CopperPhil » 09 Mar 2012, 16:32
Hi,
Well, the Connector panel of CopperLan Manager can be used to connect Outputs to compatible Inputs. That's it. It does not care about message identity, it just ensures that the input is able to receive the kind of message emitted by the output.
The Editor panel is different, it allows to point to some input on the network, then it perform parameter exploration to get information about supported messages. Finally, it creates graphic controllers matching each parameter. This Editor is generic and provide dynamic controller set depending on the target.
The XY-controller is more close to a hardware controller, or a controller with fixed set of knob/sliders/... It has two "sliders" able to send "modifier" mesages (the type of message carrying continuous value). But it does not know what message to send by itself, even you connect the X or Y outputs to a target, simply because this target input can support multiple messages. A choice must be done. There are multiple solutions:
- the more complex: on connection, the controller explores the target input to enumerate supported messages, then allows the user to select the expected message in a list
- the more simple: the controller always send the same message, a kind of hard-coded slider. But it will have not effect if the target is unable to process this message.
- intermediate: the CopperLan Directed Learning feature. The controller learns which message to send to the target. This is the solution implemented in the XY-controller sample. When you select the "ModXY" mode, a small button (L) appear next to each axis. Example of usage: first connect the ModX output to Vex Section1 input using the CopperLan Manager, then click on (L), then change a parameter on Vex Part 1 GUI. The X axis is then assigned. Explanation: when you click on the (L) button, the controller uses the current value feedback coming from the target to assign the related message. Very easy to put in place!
- intermediate++: the CopperLan Global Learning feature. It is implemented in the CopperLan Controller (available for Mac/PC from the web site download section, and for crap/iPad). This solution does not require to create connection before. Just click on the (Learn) button, move a slider to tell which one will be assigned, then update a parameter somewhere on the network (CopperVex, Dummy-App...). That's it. The output related to the assigned slider is automatically directed to the target input hosting the parameter, and the slider is assigned with the right message identity. The implementation of Global Learning is quite easy, it is based on Signal messages and handled by the helper classes.
- the brand new one that will be exhibited for the 1st time at the Musikmesse 2012: the SmartConnect! In this case, when a controller is aiming a remote application, it is able to determine automatically which connection to establish and which message to send. In our example, we have modified a commercial keyboard. It has multiple outputs (for the keyboard and for each knob, so each knob can point to any parameter all over the network). 4 knobs are reserved for Global Learning, the keyboard and 4 other knobs are handled by SmartConnect. When you select a SmartConnect able target on the network (we have added a display to the keyboard), the keyboard find itself how to connect its outputs to the target inputs and receives the knob assignation from the target. So finally, you get a very flexible controller, auto-assignable from its target, and providing global controls independent of the current target (Learned knobs). Implementation is also very easy, CopperLan does almost all the work. With this new feature, in conjunction with the Global Learning, you no longer need the CopperLan Manager, except for advanced control.
That's it for the high level explanations. Tell me if you want to elaborate some point, or if you want to know more in a programming point of view.