Single Device without much need to constantly change settings of multiple channels => MAXX Control
Headstart without any additional installation? => MAXX Control
More than one Device? Recommendation => MAXX Remote
1 - IDFM
The Innosonix Device and Firmware Manager, find and update devices.
2 - Maxx Control
The single device control hosted on each device.
What we call MAXX-CONTROL is basically a static webpage hosted on each device for easy access out of every web browser. The webpage controls the amplifier by utilizing its fully open REST-API
2.1 - REST-API
The REST-API for Innosonix Devices
All function, the devices offers are available via the integrated REST-API.
The API is based on HTTP PUT / GET / OPTIONS / DELETE calls with JSON payload.
Every PUT / DELETE call has to be verified via a “Authentication Token” in the HTTP header.
The default token is: “f4005bf8507999192162d989d5a60823”
This documentation is more dedicated as general overview and description how to handle the API.
Each device includes the latest API-Documentation with all available calls.
It can be found on the lower right corner of the OVERVIEW page:
Overall Structure
It’s an hierarchical REST API with partial resource updates, structured per channel and it’s corresponding resources like DSP / EQ / VOLUME / etc.
That means you can basically update the whole device with up to 32 channels, with a single HTTP PUT call like a HTTP PUT on http://{IP}/rest-api/settings with a json payload containing the requested structure.
settings/
channel/
1/
ampenable
dsp/
delay
eq
fir
mute
2/
ampenable
dsp/
delay
eq
fir
mute
etc…
device/
dante/
etc…
On the other hand, update single resources down in the tree is also possible, e.g. http://{IP}/rest-api/settings/channel/1/ampenable
2.1.1 - Examples
Some REST-API use cases
Multizone Volume Control
Controlling the volume of several zones, consists of n-channels per device.
Let’s say a Zone consists of channel 1, 2, 3, 11, 12, 13. All volumes can be updated simultaneously by performing: HTTP PUT http://${ip}rest-api/settings/channel with the following payload, value: -10.2 representing the volume of -10.2 dB :
All those plugins utilizing the REST-API to aceess a SINGLE device.
2.2.1 - Loxone Maxx Control
Getting started with Loxone Maxx Control Plug-In
Due to the fact that Loxone can only combine either Virtual Inputs or Virtual Outputs in a Template file, two different Templates have to be installed:
MAXX-CONTROL which allows to set parameters to the amplifier
MAXX-STATUS fetches Data from the Amplifier, mainly intended for Channel and Device Status
It’s totally valid to use only one, depending on your needs.
Installation
Download the corresponding .LxAddon Files and install it into your Loxone Config by double clicking or via the Import wizard like:
General
Both Plugins can be instantiated multiple times, as often as you want to control physical devices.
Note
Please change the IP address for each device to its static-ip or hostname.local. Leading http:// must pre appended like http://amp1.local or http://10.77.178.20
Note
For MAXX-STATUS a trailing /rest-api/status is required as well, like http://10.77.150.60/rest-api/status
MAXX-CONTROL
Download the MAXX-CONTROL.Loxone example file from the Loxone Library
The Template basically provides the following predefined controls:
Channel Power
Channel Mute
Channel Volume
Device Identify
Device Master Mute
Device Master Volume
and some examples of how to create custom commands for improved performance.
Power / Mute
Simple digital outputs which can be grouped together in any desired combination.
Note
Since each state change will send out a single HTTP request, this might cause a slight delay when a lot of channels are changed simultaneously. So, this kind of control is only recommended for a few channels. See Combined Commands to improve performance
Volume
Similar to Power / Mute Volume will send out any changes for each output as a single http request.
The interesting part here is how to map the common Loxone Analog Values in a range of 0-10 to a dB value for the amplifiers. That can be easily done with the Correction field of each output. The default configuration will map the values of 0-10 to -72dB - +10dB
This will give you almost the full dynamic range of the volume value:
Note
It’s probably more useful to restrict the volume range accessible by the user to the desired listening levels like 0-10** to -20dB - -10dB or any other suitable range for your application
Combined Commands
A basic understanding of the REST-API interface is recommended to create those combined commands.
As a starting point, have a look at the three included examples:
Multichannel Mute
Multichannel Power
Multichannel Volume
Those commands send the same value to multiple channels within a single HTTP request, significantly improving performance when many channels are involved in a call.
Multichannel Mute
Let’s have a look at the HTTP body which is sent out when the DIGITAL OUTPUT is set to ON by clicking on the edit button of that line:
You basically see a JSON payload file containing an ARRAY of single JSON objects for the corresponding channels, indicated by the channel_id tag:
for each channel, you want to control and change the channel_id to the desired channel number.
Note
Don’t forget the trailing comma "," after each object, except the last one! Please use any JSON validator to verify the final JSON object before putting it back into Loxone Config
Note
Copy and paste the JSON payload to any text editor and replace the "value": true with "value": false and insert that object into the HTTP body for OFF
MAXX-STATUS
Download the MAXX-STATUS.Loxone example file from the Loxone Library
The MAXX-STATUS Template periodically polls the /rest-api/status URL of the amplifier and filters the response for each channel status/device status.
The raw CHxx STATUS value represents the default syslog severity levels like:
STATUS
Level
0
EMERGENCY
1
ALERT
2
CRITICAL
3
ERROR
4
WARNING
5
NOTICE
6
INFORMATIONAL
7
DEBUG
8
OK
In combination with the provided STATUS component with the following settings:
An easy virtualization can be achieved.
Combining the Val output of each STATUS component with an OR Gate, a simple GLOBAL STATUS can be generated when any channels or device assert any state higher than NOTICE ( see STATUS settings, State value).
2.2.2 - Q-SYS Maxx Control
Getting started with Q-SYS Maxx Control Plug-In
Introduction:
Innosonix GmbH has developed a plug-in to integrate our web based control page for Maxx Series called Maxx Control with QSC Q-SYS Ecosystems.
Innosonix Devices can be added to the Q-SYS Ecosystem with Q-SYS Designer Software.
You must be using Q SYS Designer 9.8 or above in order to use this plug-in
Innosonix Devices can then be controlled by Q-SYS Designer, Q-SYS compatible user-controlled interfaces and GPIO logic ports integrated into Q-SYS cores and peripherals.
Control features:
Ampenable
Ch Fault
Ch Name
Ch Status
Connection Status
Device Fault
Device Status
Disable
Device Fault
Input Meter Level
IP Address
Load Monitor Impedance
Mute
Output Meter Level
Output Meter Reduction
Volume
Innosonix devices must have firmware version V3.19.4 or above installed to be compatible with the Maxx Control Plug-in. If you are unsure what firmware you device is currently using, please download IDFM to help confirm and if need be install up to date firmware.
For further control and processing capabilties of your Maxx Device please download Maxx Remote
Getting Started:
Download the Innosonix Maxx Control Plug-in from the Third Party Downloads section of the Downloads section of our website.
Copy the insert name of plug-in here from into the My Documents/QSC/Q-Sys Designer/Plugins Folder
Open Q-SYS Desinger, the Plug-in can be found in the Schematic Elements/Plugins section on the right-hand side of the page:
Drag and drop the Plug-in into your design and select it by clicking once on the Plug-in icon.
Control pins can be enabled by ticking the check-boxes in the “Control Pins” section as required:
Go “Online” with your Q-Sys project. If devices are not connected you can use the “Emulate” function under the “File” tab in the menu above.
Double clicking the Plug-in icon brings up the device interface, select the “Global Tab”, and enter the amplifiers IP address. If you are having trouble find the IP address of your device it will appear on the front screen of your device Alternatively, use idfm to find the IP addressof your device:
The “Global Tab” notifies the user of important information on the Innosonix device including:
IP Address
Model
Software Version
Serial Number
Device Name
Device Location
Pole Counter
Device Status
Select the “Channels Tab”:
Within the “Channels Tab” the user has the facility to adjust a number of the devices features including:
Mute
Enable or Disable Channel
Volume
Further Assistance:
For any more information please visit feel free to Contact us!
3 - Maxx Remote
Maxx Remote Documentation
Work in progress documentation.
3.1 - Concept
Basic concept behind MAXX Remote
… is, and abstraction layer between devices and just channels. It doesn’t matter if 1000 channel are spread out over 32x 32 Channel amplifiers, or 125x 8 Channel Amplifiers or any other combination.
As a user, you normally don’t want to know on which amplifier channel your speakers are mapped during operation and tuning of the system. The only thing that’s interests is that you want to control this specific channel or a group of channels in a room for example.
Application / Server
MAXX Remote can be used in two different application forms:
Desktop Application (multiplatform Windows / MAC / Linux)
In both scenarios, the MAXX Remote system always consists of an SERVER and FRONTEND / USERINTERFACE / GUI part which is general a html webpage controlling the actual server.
The SERVER / Desktop application containing an integrated webserver where the USERINTERFACE is always accessible. Like on your local PC: http://localhost:8000
Objects
In MAXX Remote we distinguish between some basic object types:
CHANNELS or PROJECT CHANNELS
Represents a single amplifier channel which holds data for every possible DSP option.
GROUP
Groups can control every parameters the channels offers but will affect multiple channel at once.
DEVICES
Devices represents amplifier in your Project. Each Devices, depending on it’s type, offers a specific channel count like 8, 16, 24, 32.
HW CHANNELS
are those hardware channel, present on devices in your project, like CH1 @ AMP1
How does this relates?
CHANNELS could be seen like regular channel strips on an amplifier device itself. That means, you can control this specific channel like you want.
If a CHANNEL is part of one or multiple GROUPS, those groups could also add some values to that channel. Depending on the parameter type, the overall summation of the channel value and all assigned groups will be the final output value of that channel.
Source
Volume
Channel
-2dB
Group 1
-1dB
Group 2
+5dB
________
_______
OUTPUT
+2dB
If a CHANNEL is linked to a HW Channel (a channel on an Amplifier device), MAXX Remote will send the CHANNEL values to the device.
Since all channel settings are stored in the database of MAXX REMOTE, it’s easy to exchange a device or even reorder the channel assignment over devices.
OUT OF SYNC
Once a CHANNEL is linked to a device, MAXX REMOTE monitors those channel values on the device itself because it’s still possible to directly change channel values via MAXX CONTROL.
It’s not advisable to use MAXX CONTROL anymore if a device is controlled via MAXX REMOTE since the data direction is ALWAYS MAXX REMOTE to the device.
If any mismatch in data consistency is detected via the periodical check-in MAXX REMOTE, an OUT OF SYNC warning is asserted, which shows the affected parameters.
It’s the user’s responsibility to resolve those issues by either changing values in the MAXX REMOTE to align with the device or just overwriting the data in the device with those data stored in MAXX REMOTE.
Those applications are portable, which means no installation is required, just start them.
Server / Docker
Simple Start
docker run --detach --name maxx-remote --network host innosonix/maxx-remote:latest
Note
The option --network host is not necessarily required, except if you want to use device discovery which is performed on UDP broadcast message on port 9453
If not used, must add Devices manually via their IP address.
Once the Docker Container is running, the integrated web server can be accessed via the IP address of the Docker on port 8000.
Manage the persistence
Warning
When starting the Docker Container without any attached volume, your whole project configuration is stored in the container volume itself.
AND WILL BE LOST once you delete the container or a new one is started
Manage it on your own
You can manage the project files by downloading/uploading the current runtime configuration when switching to a new container.
Using Docker Volumes
The preferable way is to use a dedicated docker volume to store the runtime configuration of the server.
# create a new volume ( only has to be done once )docker volume create maxx-remote-volume
# start the container and mount the volumedocker run --detach \
--restart always \
--name maxx-remote \
--network host \
--mount source=maxx-remote-volume,target=/root \
innosonix/maxx-remote:latest
3.3 - Quick-Start
First music out of a device
Set up a simple demo scenario containing three speakers (Left / Right / Sub) connected to CH 1, 4, and 9 on an MA32/D², doing some equalization and routing music from a Dante Virtual Sound card.
Create Project
The first time you are going to Start the Maxx Remote, this splash screen appears. Click on Start a new project and type in any name.
Create Channels / Groups
Let’s create our three required channels and one group containing all channels.
Click on CHANNELS -> MAP | CREATE
Click on + CHANNEL and enter 3 in that CHANNELS TO ADD field. We can now directly assign names to those channels.
Finish that by clicking on CREATE CHANNELS
Our three PROJECT CHANNELS have now been created, as seen in the LINKED TO column; there is no link to an amplifier channel yet. Those channels can configure any settings without the need for actual hardware devices.
Perform the same steps to create one Group by clicking on + GROUP and name it ROOM 1, for example
Now assign the channels to that group by either Drag & Drop the selected channel to a group or selecting them and pressing the MAP button in the headline.
Hint
A channel can be member of multiple groups simultaneously
.
Connecting to an amplifier
Click on DEVICES -> ADD DEVICE. You can either add devices already found in your network or add them manually by specifying MODEL and HOSTNAME. Disable the GENERATE PROJECT CHANNELS since we don’t want to autogenerate all amplifier channels in our project.
Note
Adding an fixed IP is optional. If no IP is supplied, the hostname will be resolved via mDNS. But for fixed installations, adding an IP is recommended to speed up the connection process.
Once the Device is added, the Maxx Remote automatically tries to connect. The CONNECT switch can be used to disable any network activity.
We will link our PROJECT CHANNELS to the channels of the amplifier itself by clicking on the LINKED CHs icon.
To ensure we link the correct channels, an IDENTIFY function is available to play a test tone (like PINK NOISE with a certain level -40 dB) on the corresponding channel.
Once the correct channel is found, link a PROJECT CHANNEL** to that HW CHANNEL by Drag & Drop or via the LINK button.
Finish the linking of the remaining channels
The assignment can easily be reordered by Drag & Drop a HW CHANNEL to another empty slot or even swapping two channels by dragging one over an already assigned one.
Adjusting the Volume
Before doing anything else, let’s decrease the volume of our setup by -20dB. Navigate to GROUPS and click on the VOLUME field
Enter -20 and press ENTER or click on SET. This will update the Volume of all channels in that Group.
Let’s increase the Volume of the Subwoofer by +6dB to give us a little boost. Navigate to CHANNEL and click on the VOLUME field of the corresponding channel.
Note
The CHANNEL overview always represents the final output results of those channels; that’s the reason why it already shows -20dB (from the group value we’ve applied before)
Type in 6 and press ENTER. The new OUTPUT result is shown. (-20dB from GROUP Room 1 and +6dB from the CHANNEL itself results in -14dB )
Adjusting the EQ for the Subwoofer
Set an LP filter for the Subwoofer. Navigate to CHANNELS -> EQ Icon.
Drag & Drop a LOW PASS filter into the EQ windows
Click on the blue dot or the blue rectangle on the lower part of the eq windows to select the filter. Click on the GEAR icon to open the Low Pass type editor. For example, select a 24dB Butterworth characteristic and confirm via OK.
The frequency can either be changed by dragging the blue dot or entering the desired frequency in the textbox below and confirming via ENTER / SET
Add more filters as required.
Adjusting the EQ for the Group
Perform similar steps to add some overall EQs to GROUP Room 1, like:
Navigate back to the CHANNELS of GROUP Room 1 by using the ARROW button on the right, for example:
Open the EQ of the channel Subwoofer again and take a look. This will indicate the summation of all EQs applied to that channel.
Creating some INPUTs
We can use different approaches to supply some music to those channels. But for now, assume a stereo source coming from a Dante Device / Dante Virtual Soundcard.
By using INPUTS in the Maxx Remote, we can specify MONO or STEREO Sources in the Dante network. The required information can be found in the Dante Controller, containing the HOSTNAME and the Transmit Channel name. A Dante Stream will be represented by that combination Transmit Channel@HOSTNAME.
In the example below, 01@STEFFEN-PC
Click on INPUTS -> + INPUT SOURCES. Enter the required information.
SOURCE LABEL: Just to identify that SOURCE in the Maxx Remote
RECEIVE HOSTNAME: Hostname of the Dante Device
RECEIVE LABEL: The Transmit Channel name
Once the SOURCE is created, navigate to GROUPS -> INPUT and apply that SOURCE to that group, Room 1
All channels in that group will now assign that INPUT SOURCE based on their ROLE, like LEFT / RIGHT / MONO.
The channel Left is now performing a downmix from STEREO to MONO by using both INPUTS
Since this is not what we like to see here, change the CHANNEL ROLE to LEFT by clicking on CHANNEL -> ROLE -> LEFT
The Channel now receives only the desired Left Channel of that INPUT SOURCE
Looking at the Dante Controller should also indicate those dynamically assigned slots marked with a “D:”
Repeat those steps for the channel Right.
The Subwoofer is default set to MONO, so the downmix is performed correctly.
3.4 - Surround Input Sources
How to manage surround audio in Maxx Remote
For a basic explanation on how to handle Input Sources, please refer to the corresponding section in the
Quick-Start
chapter. Here we will have a more in-depth look on all the features regarding Surround audio.
Surround Channel Names
Since there is no uniform naming convention for the additional surround channels (The nomenclature will vary, depending on which resources you refer to), let’s quickly establish which designation in Maxx Remote refers to which speaker in a 5.1 and 7.1 surround setup:
5.1 Setup
{ width=300px }
Center (C)
Left (L)
Right (R)
Left Surround (Ls)
Right Surround (Rs)
Low Frequency Effect (LFE)
7.1 Setup
{ width=50% }
Center (C)
Left (L)
Right (R)
Left Surround (Ls)
Right Surround (Rs)
Back Surround Left (Bsl)
Back Surround Right (Bsr)
Low Frequency Effect (LFE)
Note
Of course the position of the LFE speaker(s) is not fixed within a surround setup and can vary for individual setups.
Creating Input Sources
Creating Surround Input Sources works just as described in the
Quick-Start
chapter. Naturally, there are a few more channels requiring a RECEIVE LABEL for surround setups.
Additional Channel Roles
Since Surround Setups are not just limited to “Left” and “Right” channels, there are now a few more roles available that you can assign to a CHANNEL.
Selecting NONE will result in this CHANNEL not being provided any INPUT SOURCE related Dante Streams at all.
With MONO, a CHANNEL will usually be assigned to all the streams included in an INPUT SOURCE, but more on that later.
Group Output-/Channel Setup
“Output-” or “Channel-Setup” is a new setting that has been added to the GROUP overview page. This setting should reflect the kind of speaker setup your GROUP is supposed to control.
To guarantee a correct output, all channel-roles included in a surround setup need to be assigned to at least one CHANNEL assigned to this GROUP.
Leaving out a necessary role or assigning a role that is not part of your selected output setup won’t throw any errors but will result either in a Dante stream not being assigned to any CHANNEL or in a CHANNEL not receiving any Dante stream.
Disabling the “Input” ability for a GROUP will hide the Output-Setup and Crossmix Settings
Crossmixes
Definition
In real world scenarios, not always will the channel setup of a GROUP and the INPUT SOURCE you assign to it be an exact match. Either your speaker setup might have fewer channels available than your input source would require, or an INPUT-SOURCE requires fewer channels than your speaker setup provides. In the first scenario, you’d have to create a DOWNMIX of all the Dante streams to the available channel roles in case you want all the information included in the source material to be played back on the available speakers. In the latter scenario, you’d have to create an UPMIX in case you want to guarantee that all speakers will always be provided with a Dante stream.
For ease of communication, we combined those two scenarios under the term CROSSMIX.
The Crossmix Overview Page
Maxx Remote will provide a set of predefined default crossmix strategies for all possible combinations of input- and output-setups that you can review and edit on the CROSSMIX page. Of course you can also define and add your own custom crossmix strategies.
Besides the usual text search, at the top of the page you will also find a couple of filters, to quickly limit the displayed crossmixes to the desired input- and/or output-setups.
Note
All pre-defined crossmix strategies are fully editable, i.e. you can change or even delete them in case you wanted to.
Assignment
Crossmix Strategies can be assigned at three levels to combinations of Input- and Output-Setups:
Global Default (lowest priority)
Since for every combination of Input- and Output-Setup there must always be a global default to fall back to. It is not possible to un-default or delete a crossmix strategy currently assigned the role of default. Rather, you’d first have to assign another strategy as default for this combination of Input- and Output-Setup before being able to do either.
For all Input-Setups on a specific GROUP (medium priority)
In case no specific strategy is assigned, the select box will display whichever strategy is globally assigned to this In-/Out combination.
For individual combinations of INPUT-SOURCE and GROUP (highest priority)
In case no specific strategy is assigned, the select box will display whichever strategy is applicable from either of the lower priority levels.
Programatically, a crossmix strategy is always used to determine which Dante streams should be routed to which output channels, not just in cases the input- and output setup do not match. Maxx Remote will check in reverse order (3. - 2. - 1.) to see, which strategy is applicable to the In-/Out combination at hand and distribute the Dante streams accordingly.
On all three levels, you can use the gear icon to open the EDIT view for the selected or applicable crossmix strategy.
The select boxes will only display the crossmix strategies befitting the Output Setup of the selected GROUP and whichever Input Setup is applicable.
Add-/Edit Crossmix
The Crossmix configuration is displayed in a 2D matrix view, with the rows representing the available output channels, whereas the columns represent the expected input channels.
You can set crosspoints, either by double-clicking a respective crosspoint, or selecting it via single-click and then clicking on the “Enable” switch.
The “Gain Offset” input field will only be available for activated crosspoints and display the volume offset value for the selected crosspoint.
For better and quicker readability, the most common offset values (0, +/-3, -6) are represented as color coded circles. All other values are displayed numerically.
When disabling a crosspoint, its last Gain Offset value will be remembered when it is reactivated
Enable the “Default” switch, in case you wish this Crossmix to be the new global default for the selected combination of Input- and Output-Setup
To unlock the “Add” button, you first must assign a name to your new Crossmix.
The Edit-Crossmix window offers both a “Save” and a “Save As New” function. While “Save” simply saves all changes made to the selected Crossmix (also name), “Save As New” will only be unlocked once you change the initially selected Crossmix’s name. All modifications will then be saved as a new Crossmix, while the Crossmix you initially selected will remain unchanged.
Changing either the Input- or Output-Setup for a Crossmix assigned as global default is not possible, as doing so, would result in loosing the last fallback option for a specific combination of Input- and Output-Setup.
On the other hand, on none default crossmixes, the setup can easily be changed
Changing the Input- or Output-Setup for a Crossmix that is already assigned as GROUP or GROUP/INPUT specific Crossmix will result in this assignment being removed, and Maxx Remote updating all Dante stream assignments according to the next Crossmix in the hierarchy tree.
Just as in the overview page, you can not un-default an existing Crossmix, but only select another Crossmix as Default instead.
Note
Crossmixing is the reason it is necessary to specifiy an Output Setup for each GROUP used for INPUT-SOURCE assignment. As an example, otherwise it would be impossible to realiably determine, wether a CHANNEL with the role “Left” would have to be assigned only the appropriate Dante stream, or any additional Dante streams transporting other Surround channels (i.e. a Surround to Stereo downmix)