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.tsIf this document conflicts with the source code, the header comments in the respective driver files take precedence.
Create a TCP Network Device with the following settings:
9000The 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.
| 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. |
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 |
BOOT restarts the speaker; power state is read instead. Newly discovered group devices are found during the next read.Create a UDP Network Device with the following settings:
224.0.0.0 to 239.255.255.255.The multicast IP and port are configured in Smart IP Manager.
They can be retrieved from the following sources:
volIp and volPort in GET /public/v1/network/ipv4 on any speaker in the group.mcastport in 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.
| 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. |
{"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.
STANDBY is the only power state that multicast can set reliably. The state: ACTIVE command 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.
The following changes apply when migrating from the old GenelecSmartIP driver to GenelecSmartIPUnicast 2.0.0.
volume property, which used a linear mapping over -200 to 0 dB, has been replaced by level and volumeFader. Rebind all volume sliders to volumeFader.profile no longer automatically changes the startup profile. Use startupProfile when that is the intended behaviour.active = true no longer unmutes the speaker.boot, startupProfile, group, polling and multicast following.