Galaxy programming

This section describes how to:
construct built-in commands
query and set control points
Built-in functionality

All of GALAXY’s built-in, external control functions manipulate snapshots (except ping), and assume the specified snapshot already exists (except create_snapshot). Each function explanation includes ASCII and OSC examples.
recall_snapshot

Recalls the snapshot specified by the integer argument. For example, to recall snapshot 3 on a GALAXY module:
ASCII MSG | :recall_snapshot 3 |
---|---|
ASCII Hex | 3a 72 65 63 61 6c 6c 5f 73 6e 61 70 73 68 6f 74 20 33 0a |
OSC MSG | /recall_snapshot,i 3 |
UDP OSC | 2f 72 65 63 61 6c 6c 5f 73 6e 61 70 73 68 6f 74 00 00 00 00 2c 69 00 00 00 00 00 03 |
TCP OSC | 00 00 00 1c 2f 72 65 63 61 6c 6c 5f 73 6e 61 70 73 68 6f 74 00 00 00 00 2c 69 00 00 00 00 00 03 |
Excluding snapshot settings
It is possible to exclude some settings when recalling a snapshot. This is done by appending a second integer argument after the snapshot ID. A value of 1 enables exclusion. Add 1 to each exclusion code shown in the table below to exclude that entity.
For example:
If the second integer argument is 1, exclusion is enabled but nothing is excluded. The snapshot is recalled with all settings.
If the second integer argument is 9, mute information is excluded. 1 signifies that exclusion is active, and 8 is the exclusion code. To recall snapshot 3 without mute settings:
ASCII MSG | :recall_snapshot 3 9 |
---|---|
ASCII Hex | 3a 72 65 63 61 6c 6c 5f 73 6e 61 70 73 68 6f 74 20 33 20 39 20 0a |
OSC MSG | /recall_snapshot,i 3 9 |
UDP OSC | 2f 72 65 63 61 6c 6c 5f 73 6e 61 70 73 68 6f 74 00 00 00 00 2c 69 69 00 00 00 00 03 00 00 00 09 |
TCP OSC | 00 00 00 20 2f 72 65 63 61 6c 6c 5f 73 6e 61 70 73 68 6f 74 00 00 00 00 2c 69 69 00 00 00 00 03 00 00 00 09 |
The following table shows the exclusion codes to use for each setting.
Exclusion Code | Excluded Setting |
---|---|
1 | Exclusion enabled, but nothing excluded |
2 | Input Channel Types |
4 | Input and Output Voltage Ranges |
8 | Input and Output Mute |
16 | Update active snapshot before recall |
32 | SIM3 Bus Address |
64 | SIM3 Probe Point |
128 | Clock Sync Mode |
256 | AVB Configuration |
Exclusion codes can be added together to exclude multiple types. For example:
To exclude everything but still save the active snapshot before recall, add all exclusion codes, which corresponds to updating the active snapshot: 1+2+4+8+16+32+64+128+256 = 511
update_snapshot

Updates all settings in the specified snapshot to current values. To update snapshot 6 to current device settings:
ASCII MSG | :update_snapshot 6 |
---|---|
ASCII Hex | 3a 75 70 64 61 74 65 5f 73 6e 61 70 73 68 6f 74 20 36 0a |
OSC MSG | /update_snaphot,i 6 |
UDP OSC | 2f 75 70 64 61 74 65 5f 73 6e 61 70 73 68 6f 74 00 00 00 00 2c 69 00 00 00 00 00 06 |
TCP OSC | 00 00 00 1c 2f 75 70 64 61 74 65 5f 73 6e 61 70 73 68 6f 74 00 00 00 00 2c 69 00 00 00 00 00 06 |
create_snapshot

Creates a new snapshot that contains the current control point settings. If one string argument is present, it is used as the new snapshot’s name. If a second string argument is present, it is used as the new snapshot’s comment.
To create a new snapshot named Sample with comment Hello:
ASCII MSG | :create_snapshot Sample Hello |
ASCII Hex | 3a 63 72 65 61 74 65 5f 73 6e 61 70 73 68 6f 74 20 53 61 6d 70 6c 65 20 48 65 6c 6c 6f 0a |
OSC MSG | /create_snapshot,ss Sample Hello |
UDP OSC | 2f 63 72 65 61 74 65 5f 73 6e 61 70 73 68 6f 74 00 00 00 00 2c 73 73 00 53 61 6d 70 6c 65 00 00 48 65 6c 6c 6f 00 00 00 |
TCP OSC | 00 00 00 28 2f 63 72 65 61 74 65 5f 73 6e 61 70 73 68 6f 74 00 00 00 00 2c 73 73 00 53 61 6d 70 6c 65 00 00 48 65 6c 6c 6f 00 00 00 |
delete_snapshot

Deletes an existing snapshot identified by the integer argument. To delete snapshot 6 from GALAXY memory:
ASCII MSG | :delete_snapshot 6 |
---|---|
ASCII Hex | 3a 64 65 6c 65 74 65 5f 73 6e 61 70 73 68 6f 74 20 36 0a |
OSC MSG | /delete_snapshot,i 6 |
UDP OSC | 2f 64 65 6c 65 74 65 5f 73 6e 61 70 73 68 6f 74 00 00 00 00 2c 68 00 00 00 00 00 00 00 00 00 06 |
TCP OSC | 00 00 00 20 2f 64 65 6c 65 74 65 5f 73 6e 61 70 73 68 6f 74 00 00 00 00 2c 68 00 00 00 00 00 00 00 00 00 06 |
ping

Send a ping command without an argument to maintain a current subscription.
ASCII MSG | :ping Hello World |
---|---|
ASCII Hex | 3a 70 69 6e 67 20 48 65 6c 6c 6f 20 57 6f 72 6c 64 0a |
OSC MSG | /ping,s Hello World |
UDP OSC | 2f 70 69 6e 67 00 00 00 2c 73 00 00 48 65 6c 6c 6f 20 57 6f 72 6c 64 00 |
TCP OSC | 00 00 00 18 2f 70 69 6e 67 00 00 00 2c 73 00 00 48 65 6c 6c 6f 20 57 6f 72 6c 64 00 |
After issuing a ping command, you will receive a pong response. Note that you cannot send a pong command. Attach a keyword(s) so you can identify the pong response to your ping command.
ASCII MSG | :pong Hello World |
---|---|
ASCII Hex | 3a 70 6f 6e 67 20 48 65 6c 6c 6f 20 57 6f 72 6c 64 0a |
OSC MSG | /pong,s Hello World |
UDP OSC | 2f 70 6f 6e 67 00 00 00 2c 73 00 00 48 65 6c 6c 6f 20 57 6f 72 6c 64 00 |
TCP OSC | 00 00 00 18 2f 70 6f 6e 67 00 00 00 2c 73 00 00 48 65 6c 6c 6f 20 57 6f 72 6c 64 00 |
?
Defines built-in GALAXY functionality. The resultant list, while extensive, is a subset of the full GALAXY commands, but may be viewed as a developer’s quick reference.
ASCII MSG | :? |
---|---|
ASCII Hex | 3a 3f 0a |
OSC MSG | N/A |
UDP OSC | N/A |
TCP OSC | N/A |
?

Defines built-in GALAXY functionality. The resultant list, while extensive, is a subset of the full GALAXY commands, but may be viewed as a developer’s quick reference.
ASCII MSG | :? |
---|---|
ASCII Hex | 3a 3f 0a |
OSC MSG | N/A |
UDP OSC | N/A |
TCP OSC | N/A |
Control point functions

The table below shows the ASCII control character used to enact each Function that sets or retrieves a control point value.
ASCII control character | Function |
---|---|
= | Set control point Value |
Get control point Value | |
? | Get control point Description |
+ | Subscribe to control point |
- | Unsubscribe from control point |
Set control point value (=)

Sets one or more control points to one or more values. The arguments indicate a set of one or more control point addresses, followed by a list of one or more control point values. The control point values are assigned to the control point addresses in the order listed. Note that the “=” control character is appended at the end of the address.
To mute input 1:
ASCII MSG | /processing/input/1/mute=true |
---|---|
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 3d 74 72 75 65 0a |
OSC MSG | /processing/input/1/mute,T |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 54 00 00 |
TCP OSC | 00 00 00 20 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 54 00 00 |
Get control point value

Retrieves the current value of a control point. Note that this function does not use a control character. Just specify the control point address as shown below.
To query the mute status of input 1:
ASCII MSG | /processing/input/1/mute |
---|---|
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 3d 74 72 75 65 0a |
OSC MSG | /processing/input/1/mute, |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 00 00 00 |
TCP OSC | 00 00 00 20 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 00 00 00 |
The mute status of input 1 returns:
ASCII MSG | /processing/input/1/mute=false |
---|---|
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 3d 66 61 6c 73 65 0a |
OSC MSG | /processing/input/1/mute,F |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 46 00 00 |
TCP OSC | 00 00 00 20 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 46 00 00 |
In OSC, if the get control point value was received from a:
TCP stream: The return packets are sent back to that TCP stream.
UDP packets: The return packets are sent back to the same IP address and port from which it was sent.
Get control point description (?)

Retrieves the current value and range of possible values of a control point. All control point types are shown in Control points, but this command lists all possible values, not just the default value.
To request the control point description for Input 1 Mute:
ASCII MSG | ?/processing/input/1/mute |
---|---|
ASCII Hex | 3f 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 0a |
OSC MSG | NA |
UDP OSC | NA |
TCP OSC | NA |
The control point description for Input 1 Mute is returned:
ASCII MSG | ?{'/processing/input/1/mute': { 'description' : 'Input 1 Mute', 'read_only' : 'false', 'name' : 'item_1_1', 'value' : 'false', 'minimum' : 'true', 'maximum' : 'false', 'default' : 'false', 'step' : '255', 'units' : ''}} |
---|---|
3f 7b 27 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 27 3a | |
20 7b 20 27 64 65 73 63 72 69 70 74 69 6f 6e 27 20 3a 20 27 49 6e 70 75 74 20 31 20 | |
4d 75 74 65 27 2c 20 27 72 65 61 64 5f 6f 6e 6c 79 27 20 3a 20 27 66 61 6c 73 65 27 | |
ASCII Hex | 2c 20 27 6e 61 6d 65 27 20 3a 20 27 69 74 65 6d 5f 31 5f 31 27 2c 20 27 76 61 6c 75 65 27 20 3a 20 27 66 61 6c 73 65 27 2c 20 27 6d 69 6e 69 6d 75 6d 27 20 3a 20 27 74 |
72 75 65 27 2c 20 27 6d 61 78 69 6d 75 6d 27 20 3a 20 27 66 61 6c 73 65 27 2c 20 27 | |
64 65 66 61 75 6c 74 27 20 3a 20 27 66 61 6c 73 65 27 2c 20 27 73 74 65 70 27 20 3a | |
20 27 32 35 35 27 2c 20 27 75 6e 69 74 73 27 20 3a 20 27 27 7d 7d 20 | |
OSC MSG | NA |
UDP OSC | NA |
TCP OSC | NA |
Subscribe to control point (+)

This command subscribes to a set of control point addresses for live updates, which allows the client to keep track of the current state of the specified addresses, without constantly querying their state.
Note that subscriptions are handled per control point address, so it is possible to build up your subscription set via multiple subscribe commands. You can also unsubscribe from a single control point or an arbitrary subset at any time.
A client cannot subscribe to the same control point more than once. Trying to subscribe to a control point to which you already subscribed causes the server to re-send the control point’s current value, but has no other effect.
Subscriptions for TCP clients remain active until they are countermanded by an unsubscribe command, or until the client’s TCP connection is broken.
A UDP subscription remains active until it is countermanded by an unsubscribe command, or the server does not receive any UDP packets from the client for at least 30 seconds. To keep a UDP subscription active in the absence of GALAXY activity, use the keepalive tactic by sending an empty ping OSC message to the server.
Subscribe commands can take an optional argument that sets the time between values being returned. If no value is included, the default update rate is 30 ms. The time range for updates can be 0-100 ms. If your control point changes at a faster rate than your setting, your update rate determines how often you receive new values. Conversely, if your control point changes at a slower rate than your setting, values are returned only when the control point value changes.
To subscribe to Input 1 Mute status with an update rate of 100 ms:
ASCII MSG | +/processing/input/1/mute 100 |
---|---|
ASCII Hex | 2b 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 20 31 30 30 0a |
OSC MSG | /subscribe/processing/input/1/mute,i 100 |
UDP OSC | 2f 73 75 62 73 63 72 69 62 65 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 2c 69 00 00 00 00 00 64 |
TCP OSC | 00 00 00 2c 2f 73 75 62 73 63 72 69 62 65 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 2c 69 00 00 00 00 00 64 |
Unsubscribe from control point (-)

This command has the same syntax as subscribe but the opposite effect: it unsubscribes from a set of control point addresses. Subscription records for all control point addresses specified in this command that are currently subscribed to by this client will be removed from the server. This command does not affect control points that your client is not currently subscribed to.
To unsubscribe from Input 1 mute state:
ASCII MSG | -/processing/input/1/mute |
---|---|
ASCII Hex | 2d 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 0a |
OSC MSG | /unsubscribe/processing/input/1/mute, |
UDP OSC | 2f 75 6e 73 75 62 73 63 72 69 62 65 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 00 00 00 |
TCP OSC | 00 00 00 2c 2f 75 6e 73 75 62 73 63 72 69 62 65 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 00 00 00 |
Command | Type | String |
---|---|---|
Mute Output 1 | ASCII MSG | /processing/output/1/mute=true |
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 6d 75 74 65 3d 74 72 75 65 0a | |
OSC MSG | /processing/output/1/mute, T | |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 2c 54 00 00 | |
TCP OSC | 00 00 00 20 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 2c 54 00 00 | |
Unmute Output 1 | ASCII MSG | /processing/output/1/mute=false |
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 6d 75 74 65 3d 66 61 6c 73 65 0a | |
OSC MSG | /processing/output/1/mute, F | |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 2c 46 00 00 | |
TCP OSC | 00 00 00 20 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 2c 46 00 00 | |
Mute Input 1 | ASCII MSG | /processing/input/1/mute=true |
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 3d 74 72 75 65 0a | |
OSC MSG | /processing/input/1/mute, T | |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 54 00 00 | |
TCP OSC | 00 00 00 20 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 54 00 00 | |
Unmute Input 1 | ASCII MSG | /processing/input/1/mute=false |
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 3d 66 61 6c 73 65 0a | |
OSC MSG | /processing/input/1/mute, F | |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 46 00 00 | |
TCP OSC | 00 00 00 20 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 6d 75 74 65 00 00 00 00 2c 46 00 00 | |
Set Input 1 gain to -90 dB (-inf) | ASCII MSG | /processing/input/1/gain=-90 |
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 67 61 69 6e 3d 2d 39 30 0a | |
OSC MSG | /processing/input/1/gain,f -90.0 | |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 67 61 69 6e 00 00 00 00 2c 66 00 00 c2 b4 00 00 | |
TCP OSC | 00 00 00 24 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 67 61 69 6e 00 00 00 00 2c 66 00 00 c2 b4 00 00 |
Command | Type | String |
---|---|---|
Set Input 1 gain to 0 dB (unity) | ASCII MSG | /processing/input/1/gain=0 |
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 67 61 69 6e 3d 30 0a | |
OSC MSG | /processing/input/1/gain,f 0.0 | |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 67 61 69 6e 00 00 00 00 2c 66 00 00 00 00 00 00 | |
TCP OSC | 00 00 00 24 2f 70 72 6f 63 65 73 73 69 6e 67 2f 69 6e 70 75 74 2f 31 2f 67 61 69 6e 00 00 00 00 2c 66 00 00 00 00 00 00 | |
Set Output 1 gain to -90 dB (-inf) | ASCII MSG | /processing/output/1/gain=-90 |
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 67 61 69 6e 3d 2d 39 30 0a | |
OSC MSG | /processing/output/1/gain,f -90.0 | |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 67 61 69 6e 00 00 00 2c 66 00 00 c2 b4 00 00 | |
TCP OSC | 00 00 00 24 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 67 61 69 6e 00 00 00 2c 66 00 00 c2 b4 00 00 | |
Set Output 1 gain to 0 dB (unity) | ASCII MSG | /processing/output/1/gain=0 |
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 67 61 69 6e 3d 30 0a | |
OSC MSG | /processing/output/1/gain,f 0.0 | |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 67 61 69 6e 00 00 00 2c 66 00 00 00 00 00 00 | |
TCP OSC | 00 00 00 24 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 31 2f 67 61 69 6e 00 00 00 2c 66 00 00 00 00 00 00 | |
All Outputs Mute Note: ([1-9]|1[0-6]) equals 1-9, 10-16 | ASCII MSG | /processing/output/([1-9]|1[0-6])/mute=1 |
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 28 5b 31 2d 39 5d 7c 31 5b 30 2d 36 5d 29 2f 6d 75 74 65 3d 31 0a | |
OSC MSG | /processing/output/([1-9]|1[0-6])/mute, T | |
UDP OSC | ?2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 28 5b 31 2d 39 5d 7c 31 5b 30 2d 36 5d 29 2f 6d 75 74 65 00 00 2c 69 00 00 00 00 00 00 | |
TCP OSC | ?00 00 00 30 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 28 5b 31 2d 39 5d 7c 31 5b 30 2d 36 5d 29 2f 6d 75 74 65 00 00 2c 69 00 00 00 00 00 00 | |
Outputs 1-8 and 11- 16 Muted & Output 9-10 Unmuted | ASCII MSG | /processing/output/([1-8]|1[1-6])/mute=0 |
ASCII Hex | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 28 5b 31 2d 38 5d 7c 31 5b 31 2d 36 5d 29 2f 6d 75 74 65 3d 30 0a | |
OSC MSG | /processing/output/([1-8]|1[1-6])/mute, F | |
UDP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 28 5b 31 2d 38 5d 7c 31 5b 31 2d 36 5d 29 2f 6d 75 74 65 00 00 2c 69 00 00 00 00 00 01 | |
TCP OSC | 2f 70 72 6f 63 65 73 73 69 6e 67 2f 6f 75 74 70 75 74 2f 28 5b 31 2d 38 5d 7c 31 5b 31 2d 36 5d 29 2f 6d 75 74 65 00 00 2c 69 00 00 00 00 00 01 |