Disclaimer

Copyright © Glensound Electronics Ltd and individual contributors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Glensound nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Content based on github.com/github/opensource.guide used under the CC-BY-4.0 license.

DARK8MAI Protocol

The common Glensound protocol is documented in GsProtocol.html and defined in common header files Gs*.h. This document refers to device-specific details of the Glensound DARK8MAI, defined in the file Dark8Mai.h.

Analogue Gain Indices

Analogue inputs feature discrete gain control. Gain values are expressed as indices to internal gain tables. The range and number of available gain steps depends on the input mode as follows:

Index range of 0 to 6 maps to gain of -9.0 to +9.0 dB, in 3 dB steps

Index range of 0 to 17 maps to gain of +10.0 to +61.0 dB, in 3 dB steps

Status

The status structure extends Gs::Status (file GsStatus.h). The generations table in the base status use four entries, indexed with ReportId::Preset, ReportId::Device, ReportId::InChannelNames and ReportId::OutChannelNames.

The following fields are specific to DARK8MAI:

uint8_t outputMeters[cNumDanteOutChannels]

Meter values of all the Dante output channels, ordered by channel index. Note that Dante output channels transmit audio taken from the local device inputs so the meters reflect the levels on the device inputs.

uint8_t gains[cNumInputs]

Current gain indices for all the analogue inputs, ordered by input index.

uint16_t inputModes

Current modes of all the analogue inputs. The value has eight two-bit fields of the type AnalogueInputMode packed in an integer as follows:
bits 0..1: input 1
bits 2..3: input 2
...
bits 14..15: input 8

Commands

The following standard commands are supported (file GsCommands.h):

Device-specific commands are:

Sets gain index for the specified analogue input. Each input remembers gain indices for all three analogue modes (line, mic and phantom). This command sets the gain for the current mode of the input. As stated in [Analogue Gain Indices] the valid range of gain indices depend on the mode. The device will coerce values out of range.

The message is a GainIndexMsg structure with the following fields:

command = Dark8Mai::Command::GainIndex
index = input index (0 to 7)
gainIndex = gain index value

Sets analogue input mode for an input. When switching modes the device will automatically apply the gain index previously stored for this mode.

The message is a InputModeMsg structure with the following fields:

command = Dark8Mai::Command::InputMode
index = input index (0 to 7)
mode = the selected mode (enum AnalogueInputMode)

Reports

The following standard reports are supported (file GsReports.h):

Presets

The following standard presets are supported (file GsPresets.h):

The following device-specific preset types are defined:

Sets modes and gains for all the inputs.

Factory Defaults

The following standard factory defaults are supported:

The following device-specific settings parts are defined:

Restores modes and gains for all the inputs.



Updated 19/Jun/2023