CHAI SDK  Version 1.3
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
Controlling parameters

In addition to the messaging, CopperLan offers a high level interface to declare Controllers, Parameters, and bind them in a smart and easy way.

MIDI vs CopperLan: making target understanding the controller

In MIDI, the controller must be configured manually to send the Control Change expected by the target. In addition, the CC message must sent with the appropriate channel number to the right port/cable. An easiest way was devised: MIDI Learning. In this case, you don't change the Controller configuration; you still need to bring the MIDI messages to the target, which will learn the CC to be listen in order to control this or that parameter.

Conversely, in CopperLan, the Controller is learning the message expected by the Parameter and the connection is established automatically, no need to worry about message number, channel, port or even physical connection and location.

One advantage of this solution: it is possible to point several Controllers to the same Parameter since the listened message is not changing depending on the Controller. Controllers adapts to the target, not the reverse.

Additional information

In MIDI, the majority of targets do not send feedback, the main reason being that most controllers can't use such information. With some equipment and applications it is possible to send a back flow to the controlling device; however, you'll be lucky if the feedback acts in any meaningful way on the controller's display/led ring or motorized slider, without a carefully handcrafted configuration.

In CopperLan, the parameter feedback is part of the system's foundations. When the Parameter value changes, it is automatically notified to each and every connected Controller in term of knob position and display text. It means that if several Controllers are pointing to the same Parameters, a value change ordered by one Controller will be automatically replicated on each other Controller. You don't need to write a single line of code to get this working and no need for the end-user to configure anything.

Additional information