Xilica API for Third-Party Control
Xilica devices use an intuitive, human-readable network protocol that enables third-party control systems such as Crestron, AMX, and others to communicate directly with your hardware.
Compatible devices:
Solaro processors (FR1, FR1-D, QR1, QR1-UC)
Gio devices (USB, Bluetooth, XLR)
Legacy Neutrino and Uno devices
Note: Third-party control of Gio devices is supported in Designer version 4.8 and later and does not require a DSP processor to be present in your system.
Download the full API document as a PDF: Xilica Solaro API Guide (PDF)
The complete API reference is also provided inline below.
1. Connection Overview
For Ethernet connections:
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 will need to reconfigure all subscriptions and group settings.
2. Command 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
$)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 (
TRUEorFALSE)
3. Responses
The device responds to all commands. If you do not receive a response, check your connection. All responses end with <CR>.
Scenario | Response Format |
|---|---|
Invalid command |
|
GET or GETRAW command |
|
REFRESH command |
|
KEEPALIVE command | No response |
REBOOT (Neutrino) |
|
REBOOT (Solaro) | No response (device reboots immediately) |
All other commands |
|
4. Subscriptions
Subscribe to control objects to receive automatic notifications when values change:
SUBSCRIBE <CONTROL OBJECT> ["TCP"/"UDP"] <CR>
UNSUBSCRIBE <CONTROL OBJECT> <CR>Notifications are sent automatically via TCP Unicast or UDP Broadcast in this format:
#<CONTROL OBJECT>=<DATA><CR>Set the notification interval with:
INTERVAL <TIME in milliseconds> <CR>The minimum interval value is 100 ms. In Neutrino Series processors, the interval applies to individual TCP connections. In Solaro Series processors, the interval applies globally to all connections.
5. 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>Ensure parameters in a group are the same type and support the same commands. Groups persist only during active connections. The $ sign is automatically added when the group is created.
6. Password Protection
For password-protected devices, unlock before sending commands:
LOGIN <PASSWORD> <CR>Authentication persists only for the duration of the connection.
7. Setting Up Control Objects in Xilica Designer
Before you can send commands to specific parameters, you must assign control object names in 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 view all defined control object names, select Project → Device third party control elements from the menu. You can export this list to Excel for reference.
Related article: Exporting Third-Party Control Information from Xilica Designer
8. Commands Reference
SET
Sets a control object or group to a specific value.
SET <CONTROL OBJECT/GROUP> <DATA - number/string/Boolean>Example | Description |
|---|---|
| Set "gain1" to -3.2 dB |
| Set "polarity1" to ON position |
| Set "filter1" to Butterworth filter |
| Set all parameters in group1 to -15.7 dB |
SETRAW
Sets a control object or group using raw integer values.
SETRAW <CONTROL OBJECT/GROUP> <DATA - number>Example | Description |
|---|---|
| Set "gain1" to -3.2 dB |
| Set "polarity1" to ON position |
| Set "filter1" to Butterworth filter |
| Set all parameters in group1 to +1.0 dB |
GET / GETRAW
Retrieves the current formatted or raw value of a control object or group.
GET <CONTROL OBJECT/GROUP>
GETRAW <CONTROL OBJECT/GROUP>Example | Description |
|---|---|
| Get "EQslope" formatted value |
| Get "EQslope" raw value |
| Get formatted value for all parameters in group1 |
INC / INCRAW
Increases a control object or group value by the specified amount.
INC <CONTROL OBJECT/GROUP> <DATA - number>
INCRAW <CONTROL OBJECT/GROUP> <DATA - number>Example | Description |
|---|---|
| Increase "fader3" by 0.5 dB |
| Increase "fader3" by 0.5 dB (raw) |
| Increase all parameters in group1 by 1 dB |
DEC / DECRAW
Decreases a control object or group value by the specified amount.
DEC <CONTROL OBJECT/GROUP> <DATA - number>
DECRAW <CONTROL OBJECT/GROUP> <DATA - number>Example | Description |
|---|---|
| Decrease "fader3" by 0.5 dB |
| Decrease "fader3" by 0.5 dB (raw) |
| Decrease all parameters in group1 by 1 dB |
TOGGLE
Toggles the state of a Boolean control object or group.
TOGGLE <CONTROL OBJECT/GROUP>Example | Description |
|---|---|
| Toggle "mute1" state |
| Toggle all parameters in group2 |
PRESET
Recalls a preset by number or name.
PRESET <DATA - number/string>Example | Description |
|---|---|
| Recall preset #4 |
| Recall preset by name |
SUBSCRIBE / UNSUBSCRIBE
Subscribes to or unsubscribes from control object value changes.
SUBSCRIBE <CONTROL OBJECT/GROUP> ["TCP"/"UDP"] <CR>
UNSUBSCRIBE <CONTROL OBJECT/GROUP> <CR>Example | Description |
|---|---|
| Subscribe to "meter6" via TCP Unicast (default) |
| Subscribe to "meter6" via UDP Broadcast |
| Unsubscribe from "meter6" |
KEEPALIVE
Sends a no-operation message to maintain the TCP connection.
KEEPALIVELOGIN
Authenticates for control access on password-protected devices.
LOGIN <DATA - string>Example | Description |
|---|---|
| Log in with password "password" |
REBOOT
Remotely reboots the device.
REBOOTREFRESH
Retrieves formatted data values for all control objects at once.
REFRESHCREATE / REMOVE
Creates or removes a control group.
CREATE <CONTROL GROUP>
REMOVE <CONTROL GROUP>Example | Description |
|---|---|
| Create a group named "$group1" |
| Remove the group "$group1" |
JOIN / LEAVE
Adds or removes a control object from a group.
JOIN <CONTROL GROUP> <DATA - string>
LEAVE <CONTROL GROUP> <DATA - string>Example | Description |
|---|---|
| Add "gain1" to group1 |
| Remove "mute2" from group2 |
9. Data String Values
When using SET commands with string-type parameters, use these predefined values:
Parameter | Valid 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 |
10. 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 |
