Xilica API for Third-Party Control

Edited

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 message

  • CONTROL 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 (TRUE or FALSE)


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

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 (Neutrino)

OK<CR>

REBOOT (Solaro)

No response (device reboots immediately)

All other commands

OK<CR>


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:

  1. In Project Design Mode, select the DSP module

  2. Double-click to open the module control panel

  3. Hold Ctrl and select the control object

  4. Right-click and select "Create third party control object name"

  5. 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 -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.7 dB

SETRAW

Sets a control object or group using raw integer values.

SETRAW <CONTROL OBJECT/GROUP> <DATA - number>

Example

Description

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.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

Get "EQslope" formatted value

GETRAW EQslope

Get "EQslope" raw value

GET $group1

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

INC fader3 0.5

Increase "fader3" by 0.5 dB

INCRAW fader3 500

Increase "fader3" by 0.5 dB (raw)

INC $group1 1

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

DEC fader3 0.5

Decrease "fader3" by 0.5 dB

DECRAW fader3 500

Decrease "fader3" by 0.5 dB (raw)

DEC $group1 1

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

Toggle "mute1" state

TOGGLE $group2

Toggle all parameters in group2

PRESET

Recalls a preset by number or name.

PRESET <DATA - number/string>

Example

Description

PRESET 4

Recall preset #4

PRESET "preset name"

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 meter6

Subscribe to "meter6" via TCP Unicast (default)

SUBSCRIBE meter6 "UDP"

Subscribe to "meter6" via UDP Broadcast

UNSUBSCRIBE meter6

Unsubscribe from "meter6"

KEEPALIVE

Sends a no-operation message to maintain the TCP connection.

KEEPALIVE

LOGIN

Authenticates for control access on password-protected devices.

LOGIN <DATA - string>

Example

Description

LOGIN "password"

Log in with password "password"

REBOOT

Remotely reboots the device.

REBOOT

REFRESH

Retrieves formatted data values for all control objects at once.

REFRESH

CREATE / REMOVE

Creates or removes a control group.

CREATE <CONTROL GROUP>
REMOVE <CONTROL GROUP>

Example

Description

CREATE group1

Create a group named "$group1"

REMOVE $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

JOIN $group1 "gain1"

Add "gain1" to group1

LEAVE $group2 "mute2"

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