API for Third-Party Control
1. Introduction
This API enables third-party control of the Solaro, Gio, Neutrino & Uno products.
2. Overview
For Ethernet connection:
Send messages using TCP port #10007
The server responds using the same TCP connection
Send a keep-alive message every 60 seconds to maintain the connection
You can also use UDP port #10008 to listen to Subscription messages. Choose whether parameters send changes via TCP Unicast or UDP Broadcast when issuing a subscription command. By default, parameters notify via TCP Unicast.
A separate TCP connection is required for status updates, and keep-alive messages must be sent continuously even when using UDP Broadcast. If the TCP connection drops, you'll need to reconfigure all subscriptions and group settings.
3. Syntax
The third-party controller string uses human-readable ASCII characters with this format:
COMMAND [CONTROL OBJECT/GROUP] [DATA]<CR>
Fields are separated by a single white space
A carriage-return (
<CR>
) marks the end of the messageCONTROL OBJECT: Up to 32 characters assigned in software (first character cannot be a dollar sign)
CONTROL GROUP: Up to 32 characters created with the CREATE command (always begins with '
apos;)For strings with spaces, encapsulate with double quotes
COMMAND and CONTROL OBJECT/GROUP are case-sensitive
DATA can be a number, string (in double quotes), or Boolean (TRUE or FALSE)
4. Responses
The device responds to all commands. If you don't receive a response, check your connection. All responses end with <CR>
.
Response formats:
Invalid command:
ERROR=<ERROR CODE><CR>
GET or GETRAW command:
<CONTROL OBJECT>=<DATA><CR>
REFRESH command:
<CONTROL OBJECT>=<DATA><CONTROL OBJECT>=<DATA> … <CR>
KEEPALIVE command: No response
REBOOT command:
Neutrino system: Replies "OK<CR>"
Solaro system: No response (device reboots)
All other commands:
OK<CR>
5. Subscriptions
Subscribe to control objects to receive notifications when values change:
SUBSCRIBE <CONTROL OBJECT> ["TCP"/"UDP"] <CR>
UNSUBSCRIBE <CONTROL OBJECT> <CR>
SUBSCRIBE <CONTROL OBJECT> ["TCP"/"UDP"] <CR> UNSUBSCRIBE <CONTROL OBJECT> <CR>
Notifications are sent automatically via TCP Unicast or UDP Broadcast with this format: #<CONTROL OBJECT>=<DATA><CR>
Set the notification interval with: INTERVAL <TIME in milliseconds> <CR>
6. Control Groups
Control multiple parameters at once using groups:
CREATE <CONTROL GROUP> <CR>
JOIN <CONTROL GROUP> <CONTROL OBJECT> <CR>
LEAVE <CONTROL GROUP> <CONTROL OBJECT> <CR>
REMOVE <CONTROL GROUP> <CR>
CREATE <CONTROL GROUP> <CR> JOIN <CONTROL GROUP> <CONTROL OBJECT> <CR> LEAVE <CONTROL GROUP> <CONTROL OBJECT> <CR> REMOVE <CONTROL GROUP> <CR>
Ensure parameters in a group are the same type and support the same commands. Groups persist only during active connections.
7. Password Protection
For password-protected devices, unlock before sending commands:
LOGIN <PASSWORD> <CR>
Authentication persists only for the duration of the connection.
8. Verbose/Simple Mode
Future implementation to configure response detail levels.
9. Control Objects Setup
Set up control object strings using Xilica Designer:
In Project Design Mode, select the DSP module
Double-click to open the module control panel
Hold Ctrl and select the control object
Right-click and select "Create third party control object name"
Enter a unique control object name
A small red indicator appears in the top left corner of objects with third-party control names defined.
To see all defined control object names, select "Project" → "Device third party control elements" from the menu. You can export this list to Excel for reference.
10. Commands List
SET <CONTROL OBJECT/GROUP> <DATA - number/string/Boolean>
Examples:
SET gain1 -3.2
(Set "gain1" to -3.2 dB)SET polarity1 TRUE
(Set "polarity1" to ON position)SET filter1 "Butterworth"
(Set "filter1" to Butterworth Filter)SET $group1 -15.7
(Set all parameters in group1 to -15.7dB)
SETRAW <CONTROL OBJECT/GROUP> <DATA - number>
Examples:
SETRAW gain1 -3200
(Set "gain1" to -3.2 dB)SETRAW polarity1 1
(Set "polarity1" to ON position)SETRAW filter1 1
(Set "filter1" to Butterworth Filter)SETRAW $group1 1000
(Set all parameters in group1 to +1.0dB)
GET <CONTROL OBJECT/GROUP>
Examples:
GET EQslope
(Get "EQslope" formatted value)GET $group1
(Get formatted value for all parameters in group1)
GETRAW <CONTROL OBJECT/GROUP>
Examples:
GETRAW EQslope
(Get "EQslope" raw value)GETRAW $group1
(Get raw value for all parameters in group1)
INC <CONTROL OBJECT/GROUP> <DATA - number>
Examples:
INC fader3 0.5
(Increase "fader3" by 0.5 dB)INC $group1 1
(Increase all parameters in group1 by 1dB)
INCRAW <CONTROL OBJECT/GROUP> <DATA - number>
Examples:
INCRAW fader3 500
(Increase "fader3" by 0.5 dB)INCRAW $group1 1000
(Increase all parameters in group1 by 1dB)
DEC <CONTROL OBJECT/GROUP> <DATA - number>
Examples:
DEC fader3 0.5
(Decrease "fader3" by 0.5 dB)DEC $group1 1
(Decrease all parameters in group1 by 1dB)
DECRAW <CONTROL OBJECT/GROUP> <DATA - number>
Examples:
DECRAW fader3 500
(Decrease "fader3" by 0.5 dB)DECRAW $group1 1000
(Decrease all parameters in group1 by 1dB)
TOGGLE <CONTROL OBJECT/GROUP>
Examples:
TOGGLE mute1
(Toggle "mute1" state)TOGGLE $group2
(Toggle all parameters in group2)
PRESET <DATA - number/string>
Examples:
PRESET 4
(Recall preset #4)PRESET "preset name"
(Recall preset with name "preset name")
SUBSCRIBE <CONTROL OBJECT/GROUP> <DATA - string>*
Examples:
SUBSCRIBE meter6
(Subscribe to "meter6" via TCP Unicast)SUBSCRIBE meter6 "TCP"
(Subscribe to "meter6" via TCP Unicast)SUBSCRIBE meter6 "UDP"
(Subscribe to "meter6" via UDP Broadcast) *DATA - string is optional, TCP Unicast used by default
UNSUBSCRIBE <CONTROL OBJECT/GROUP>
Example:
UNSUBSCRIBE meter6
(Unsubscribe "meter6")
KEEPALIVE Example:
KEEPALIVE
(No operation. Used to keep the TCP connection alive)
INTERVAL <DATA - number>
Example:
INTERVAL 100
(Set subscription interval to minimum 100ms) Minimum value is 100 ms In Neutrino Series processors, Interval applies to individual TCP connections *In Solaro Series processors, Interval applies globally to all connections
LOGIN <DATA - string>
Example:
LOGIN "password"
(Login for external control with "password")
REBOOT Example:
REBOOT
(Remotely reboot device)
REFRESH Example:
REFRESH
(Get formatted data value for all control objects)
CREATE <CONTROL GROUP>
Example:
apos; sign is automatically added when the group is createdCREATE group1
(Create a group with the name "group1") *The '
REMOVE <CONTROL GROUP>
Example:
REMOVE $group1
(Remove the group with name "group1")
JOIN <CONTROL GROUP> <DATA - string>
Example:
JOIN $group1 "gain1"
("gain1" will join group1)
LEAVE <CONTROL GROUP> <DATA - string>
Example:
LEAVE $group2 "mute2"
("mute2" will leave group2)
11. Data String
String Values
Filter Type: Butterworth, LR, Bessel
Filter Slope: 6db/Oct, 12db/Oct, 18db/Oct, 24db/Oct, 30db/Oct, 36db/Oct, 42db/Oct, 48db/Oct
AFS Sensitivity: Very Low, Low, Medium, High, Very High
AFS Type: Dynamic, Fixed
Control Ramp Type: Linear, Log, Audio
12. Error Codes
Error Code | Description |
101 | Invalid Command |
102 | Bad Arguments |
103 | Invalid Data Format |
104 | Control Object Not Found |
105 | Parameter Not Found |
106 | Data Value Not Found |
107 | Max Subscription Reached |
108 | Password Error |
109 | Not Yet Login |
110 | Command Not Supported for Control Object |
111 | Invalid Group Name |
112 | Max Control Group Reached |
113 | Max Control Object in Group Reached |
114 | Object Already in Group |
115 | Object Not in Group |
116 | Conflicting With Other Objects in Group |
117 | Invalid Preset # |
118 | Invalid Preset Name |