back to Index
Control Proxy is built from a single JSON configuration file (named cp_config.json).
The file contains three top-level code blocks:
1. The "netReceivers" block
-where the user defines one or more network message receivers
2. The "netSenders" block
-where the user defines one or more network message senders
3. The "netBridges" block
-where the user defines the routing of messages from receivers to senders
------------------------------------------------------------
The "netReceivers" block:
example:
"netReceivers" : {
<receiver name> : {
"protocol" : <protocol type: tcp, udp, osc-udp, multicast> ,
"port" : <port number> ,
"ip" : <ip address, if a multicast receiver> ,
"patch" : <maxpatch or object name (i.e. sample_patch.maxpat)>
}
}
In the netReceivers code block, a user defines receiver objects that will listen for incoming network messages. Each object is assigned a unique name, port number, and ip address (if multicast), as well as the network protocol used. Control Proxy can send and receive messages of the following protocols:
-UDP
-TCP/IP
-OSC over UDP
-UDP multicast
In the protocol field of each netReceiver object, the user enters one of the following strings (case-sensitive):
"tcp" for TCP/IP
"udp" for UDP
"osc-udp" for OSC over UDP
"multicast" for UDP Multicast
The optional patch field allows the user to pass incoming messages through a custom patch or object. This field can be deleted or set to 'null' if not needed.
------------------------------------------------------------
The "netSenders" block:
example:
"netSenders" : {
<sender name> : {
"protocol" : <protocol type: tcp, udp, osc-udp, multicast> ,
"port" : <port number> ,
"ip" : <ip address> ,
"patch" : <maxpatch or object name (i.e. sample_patch.maxpat)>
}
}
In the netSenders code block, a user defines sender objects that will send out network messages to various destinations. Each object is assigned a unique name, port number and ip address, as well as the network protocol used (same protocols as netReceivers).
The optional patch field allows the user to pass outgoing messages through a custom patch or object prior to being sent. This field can be deleted or set to 'null' if not needed.
------------------------------------------------------------
The "netBridges" block:
example:
"netBridges" : {
<bridge_name> : {
"receivers" : <array of receivers> ,
"senders" : <array of senders>
}
}
In the netBridges code block, a user defines which receivers connect to which senders. This area acts as a kind of text-controlled matrix, where all input to output routing is established. A single receiver can pass to multiple senders, multiple receivers can pass to the same sender, and so on. For each netBridge object defined (at least one sender is required), a corresponding console window will be built (see figure below), allowing a user to manually send commands to various destinations on the fly. The window title for each console will be the same as the name of the bridge defined in the config file. Console windows can be opened via the dropdown menu in the Control Proxy main window.
If no receivers are defined in a netBridge object (see sample cp_config.json), then you simply have a console window that sends messages out its associated senders - a quick way to communicate with remote destinations!
------------------------------------------------------------
Reloading the configuration file:
To reload a new version of the configuration file without restarting the software, go to Settings-->Load Config File (as shown below).