Skip to content

Schema Definition: com.lawo.emberplus.micline (Version 2)

Kimon Hoffmann edited this page Jun 5, 2019 · 8 revisions

General

This schema is intended to provide a standard way for an Ember+ provider to publish data for analog inputs, to which both microphones or line level equipment may be connected.

Changes

Version 2.0

Breaking change to simplify the gain handling to a single controlling value, without introducing an order dependency.

Version 1.0

Initial schema definition.

Identifier

The identifier of this schema is com.lawo.emberplus.micline.v<VERSIONMAJOR>.<VERSIONMINOR>
The current major version is: 2
The current minor version is: 0

A consumer implementing this schema may expect that future versions of this schema are backwards compatible to the one it implements if the major version number is unchanged and the minor version number is greater than the one it implements. Changes to the major version number must be considered breaking changes.

Scope

This schema defines the layout of an Ember+ node, defining the parameters it must contain as direct children.

Rules

An Ember+ node that implements this schema MUST contain two subnodes:

  1. Name: Microphone
    A node that MUST contain the following parameters:

    1. Name: Gain
      Type: REAL
      Access: Read Only
      The current preamp gain in dB without any offsets caused by padding or other factors.
      This parameter primarily serves as a point of reference at which meta information, such as Minimum or Maximum specific to the microphone gain, can be attached. To actually change the input gain, see the parameter UniGain below.
      Please see the Notes section below for further semantics associated with this parameter.

    In addition the node MAY contain the following parameters:

    1. Name: Pad
      Type: BOOLEAN
      Access: Read / Write
      Switch to enable or disable padding.

    2. Name: PhantomPower
      Type: BOOLEAN
      Access: Read / Write
      Switch to enable or disable phantom power supply.

    3. Name: LowCutFrequency
      Type: ENUMERATION
      Access: Read / Write
      Description for a choice of low cut filters that can be applied to the microphone preamp. The special enumeration value 0 is reserved for switching off the low cut filter. The actual low cut frequencies are implementation specific and should be provided as a part of the enumeration string names.

  2. Name: Line
    A node that MUST contain the following parameters:

    1. Name: Gain
      Type: REAL
      Access: Read Only
      The current preamp gain in dB without any offsets caused by other factors.
      This parameter primarily serves as a point of reference at which meta information, such as Minimum or Maximum specific to the line gain, can be attached. To actually change the input gain, see the parameter UniGain below.
      Please see the Notes section below for further semantics associated with this parameter.

In addition, an Ember+ node that implements this schema MUST contain the following parameters:

  1. Name: LineMode
    Type: BOOLEAN
    Access: Read / Write
    A switch indicating whether this Mic/Line node is currently in line mode (TRUE) or in microphone mode (FALSE).

  2. Name: UniGain
    Type: REAL
    Access: Read / Write
    The LineMode dependent preamp gain in dB to apply, without any offsets caused by other factors. Please see the Notes section below for further semantics associated with this parameter.

  3. Name: EffectiveGain
    Type: REAL
    Access: Read Only
    The effective gain in dB currently applied depending on the setting of LineMode and including offsets caused by padding or other factors.

Notes

The UniGain value serves a the singular point at which the gain for either the microphone or the line preamp. Its Minimum and Maximum must be set so that the spanned interval includes the intervals of the parameters Microphone.Gain and Line.Gain. If Minimum and/or Maximum is unspecified for either of the three nodes it is considered unbounded. All values within the valid minimum and maximum must be accepted, and subsequently returned unmodified when read. More specifically the value must not be clipped due to constraints of the actual hardware preamp determined by the current setting of LineMode.

Any value set here must copied to Microphone.Gain and Line.Gain with individual clipping applied.

The EffectiveGain value serves as a point of reference to retrieve the currently active gain, as determined by LineMode, offsetting factors such as pad and clipped according to mode dependent constraints.

Example

Suppose we have the following starting state.

MicLine: {
  Mic: {
    Gain: {
      Value: 0,
      Minimum: 0,
      Maximum: 70
    },
    Pad: False
  },
  Line: {
    Gain: {
      Value: 0,
      Minimum: -20,
      Maximim: 20
    }
  },
  LineMode: False,
  UniGain: {
    Value: 0,
    Minimum: -20,    # = min(Mic.Gain.Minimum, Line.Gain.Minimum)
    Maximum: 70      # = max(Mic.Gain.Maximum, Line.Gain.Maximum) 
  },
  EffectiveGain: 0
}

Setting UniGain to -20 results in the following changes:

MicLine.UniGain   = -20
MicLine.Line.Gain = -20

Please note that:

  1. MicLine.Microphone.Gain stays at 0, because this is the microphone specific minimum.

  2. MicLine.EffectiveGain stays at 0, because LineMode is currently set to False, which means that the preamp is in microphone mode.

Setting Pad to True results in the following changes (assuming pad is a -10dB offset):

MicLine.Mic.Pad = True
MicLine.EffectiveGain = -10

Please note that:

  1. None of the Gain values changed, because all gains are interpreted without any offsetting factors.

Setting LineMode to True results in the following changes:

MicLine.LineMode = True
MicLine.EffectiveGain = -20

Toggling the LineMode switches the node into line mode, therefor the Line.Gain is now the current gain, which is reflected by the corresponding change of EffectiveGain.