Genelec Smart IP Drivers for PIXILAB Blocks
Two drivers are available for the Genelec Smart IP API v1 (revision 0.8.4). They can be used independently or together, depending on the required functionality.
| Driver | Controls | Transport | Feedback |
|---|---|---|---|
GenelecSmartIPUnicast (2.0.0) | Individual speakers | TCP/HTTP, port 9000 (Network Device type: TCP) | Yes. Reads and polls speaker status. |
GenelecSmartIPMulticast | Entire multicast groups | UDP datagrams, default port 49152 (Network Device type: UDP) | None. One-way communication. |
The legacy single-speaker driver, driver-archive/GenelecSmartIP (1.01), was renamed to GenelecSmartIPUnicast in version 2.0.0. Do not run both versions simultaneously.
Multicast requires speaker firmware 1.3.25 or later. Testing has been performed on a Genelec 4420 running firmware 1.4.9.
Source files
script/driver/GenelecSmartIPUnicast.tsscript/driver/GenelecSmartIPMulticast.ts
If this document conflicts with the source code, the header comments in the respective driver files take precedence.
1. Which Driver Should You Use?
- Unicast: Use for individual speaker control and whenever you need feedback about a speaker's state, including power, level, mute, profile, inputs and zone.
- Multicast: Use to control an entire group with a single datagram per command. For example, a single volume slider can control every speaker in a room. Multicast does not provide feedback.
- Both together: Configure one Unicast device per speaker and one Multicast device per group. Each Unicast device reads its speaker's multicast group address and can follow Multicast devices addressing that group. Group commands for volume, mute and profiles are reflected immediately in the corresponding Unicast properties and then confirmed by reading the speaker.
2. GenelecSmartIPUnicast
Device setup
Create a TCP Network Device with the following settings:
- Address: Speaker IP address
- Port:
9000
Driver options
The driver accepts authentication credentials and additional settings through the driver options.
The simplest configuration is the username and password:
admin:admin
Alternatively, use JSON:
{
"auth": "admin:admin",
"pollSec": 30,
"followMulticast": true
}
Available options:
| Option | Default | Description |
|---|---|---|
auth | admin:admin | Speaker HTTP API credentials in user:password format. |
pollSec | 10 | Polling interval in seconds for power, level, mute and profile. Setting this to 0 disables routine polling. While contact is lost or the speaker has not yet been fully read, the driver still checks every 30 seconds. |
followMulticast | false | Enables following of GenelecSmartIPMulticast devices addressing the speaker's group. The speaker's group is read regardless of this setting, so group is populated and recallProfile(…, alsoStartup) can still locate the speaker. |
Important: Set the speaker's sleep delay to 0 in Smart IP Manager. ISS (Intelligent Signal Sensing) auto-sleep is not supported.
Properties
| Property | Type | Description |
|---|---|---|
connected | Boolean, read-only | Indicates whether communication with the speaker is available. |
active | Boolean | true wakes the speaker; false puts it into standby. Becomes true when the speaker reports ACTIVE, after which all properties are re-read. Does not change mute. |
boot | Boolean, momentary | Restarts the speaker. Returns to false after 5 seconds. The speaker may be unavailable for up to one minute. |
level | Number, dB, -130 to 0 | Exact volume value with 0.1 dB resolution. Use for text readouts and tasks. |
volumeFader | Number, 0-1 | Normalized fader representation of the volume setting. Bind sliders to this property. See the volume curve below. |
mute | Boolean | Controls mute. The setting is retained in standby. |
profile | Number, 0-5 | Recalls a profile immediately without changing the startup profile. |
startupProfile | Number, 0-5 | Sets the profile used after reboot. Setting it also recalls the profile immediately because the API has no separate command for changing only the startup profile. |
enableAoIP01 | Boolean | Enables or disables the AoIP 01 input. |
enableAoIP02 | Boolean | Enables or disables the AoIP 02 input. |
enableAnalog | Boolean | Enables or disables the analog input. Speakers without an analog input reject this setting. |
group | String, read-only | Multicast group in ip:port format. Empty if the speaker is not in a group. |
zone | String, read-only | Speaker zone, read once at startup. |
aoipName | String, read-only | Speaker AoIP name, read once at startup. |
Volume curve
The driver exposes two volume properties for different use cases:
level: Exact volume in dB, suitable for text readouts and tasks.volumeFader: Normalized value from 0 to 1, suitable for sliders and other graphical controls.
The fader follows this logarithmic curve:
dB = 60 * log10(volumeFader)
volumeFader | Approximate volume |
|---|---|
| 1.0 | 0 dB |
| 0.5 | -18 dB |
| 0.1 | -60 dB |
| 0 | -130 dB |
Behaviour
- The speaker is authoritative. Settings are read at startup and polled periodically. Changes made elsewhere, including in Smart IP Manager or through multicast, become visible within one polling interval.
- Commands are rate-limited. Commands are sent one at a time, with a minimum interval of 100 ms. If a newer value arrives before a pending command is sent, it replaces the pending value. This prevents a dragged slider from flooding the speaker, which has a limit of four connections.
- Properties update immediately. When a property is changed, its value updates immediately. If the speaker rejects the command, the property reverts to its last known value.
- Sleeping speakers. When the speaker is in standby or ISS sleep, audio-related requests return HTTP 503. The driver marks the speaker as inactive rather than disconnected. Commands sent while the speaker is in standby are lost and are not automatically applied when it wakes.
- Following multicast. Volume, mute and profile commands sent through a group device are reflected immediately in the Unicast properties. After the group has been quiet for 0.5 seconds, the driver performs one read to confirm the resulting state. Power commands are not mirrored because
BOOTrestarts the speaker; power state is read instead. Newly discovered group devices are found during the next read.
3. GenelecSmartIPMulticast
Device setup
Create a UDP Network Device with the following settings:
- Address: The group's multicast IP address, in the range
224.0.0.0to239.255.255.255. - Port: The group's multicast port.
- Configuration: Use one device per multicast group.
The multicast IP and port are configured in Smart IP Manager.
They can be retrieved from the following sources:
volIpandvolPortinGET /public/v1/network/ipv4on any speaker in the group.mcastportin the speaker's mDNS record (_smart_ip._tcp).
The default port is 49152, as used in the protocol specification's example. However, the specification's mDNS example uses 49153 as the zone ID, so verify the actual multicast port rather than assuming the default.
A speaker configured with volIp set to 0.0.0.0 ignores multicast commands.
Properties and callables
| Item | Type | Description |
|---|---|---|
connected | Boolean, read-only | true while the device is enabled, meaning it is available to send commands. Multicast cannot confirm receipt. |
groupAddress | String, read-only | Multicast group IP address. Used by Unicast devices to identify the group. |
groupPort | Number, read-only | Multicast group port. Used by Unicast devices to identify the group. |
level | Number, dB, -130 to 0 | Last volume value sent, rounded to 0.1 dB. |
volumeFader | Number, 0-1 | Normalized fader representation of the volume setting. Bind sliders to this property. |
mute | Boolean | Last mute value sent. |
profile | Number, 0-5, read-only | Last profile value sent. |
recallProfile(profile, alsoStartup) | Callable | Recalls a profile across the entire group. When alsoStartup is enabled, the Unicast devices in the group also set the startup profile, since multicast has no startup-profile command. |
standby | Boolean, momentary | Sends STANDBY to the group. Remains true for 5 seconds. |
boot | Boolean, momentary | Sends BOOT, restarting every speaker in the group. Audio may be interrupted for up to one minute. Remains true for 5 seconds. |
lastPowerSent | String, read-only | STANDBY or BOOT. Indicates the last requested power command, not the actual state of any speaker. |
Behaviour and limitations
- No feedback. Properties reflect the last values sent, not confirmed speaker states. A speaker that is offline or rebooting when a command is sent may miss it. Set the property again to resend the command. Every property set sends a command, even if the value has not changed.
- Command pacing. Each command is sent as one UDP datagram in the format
{"mcast":{"ver":1,<name>:<value>}}. There is a minimum interval of 100 ms between datagrams. Updates to the same command received during this interval are merged, retaining the latest value. The constructor does not send any commands.
- Disabled devices. No commands are sent, and property sets are ignored while the device is disabled.
- Power control.
STANDBYis the only power state that multicast can set reliably. Thestate: ACTIVEcommand is ignored, as observed on a Genelec 4420 running firmware 1.4.9. Waking a group without rebooting therefore requires Unicast commands, sent to each speaker individually. Power commands do not change mute. - Startup profiles. Speakers without a corresponding Unicast device in the group can still recall the selected profile, but their startup profile remains unchanged.
- Profile contents. Profiles contain acoustic and input settings, not volume. Profiles are stored and managed through Smart IP Manager.
4. Changes from the Legacy GenelecSmartIP 1.01 Driver
The following changes apply when migrating from the old GenelecSmartIP driver to GenelecSmartIPUnicast 2.0.0.
- The old 0-1
volumeproperty, which used a linear mapping over -200 to 0 dB, has been replaced bylevelandvolumeFader. Rebind all volume sliders tovolumeFader. profileno longer automatically changes the startup profile. UsestartupProfilewhen that is the intended behaviour.- Setting
active = trueno longer unmutes the speaker. - Fixed issues involving speakers offline at startup, stale values dropping matching commands, AoIP 01/02 input states not being read back, overlapping requests, rejected values still being displayed, and profile values above 5 incorrectly recalling profile 5.
- Added
boot,startupProfile,group, polling and multicast following.