From 8d43ff4ba879ce7992b4875a9da28af8a2073464 Mon Sep 17 00:00:00 2001 From: Moritz Staffel Date: Sun, 11 Feb 2024 14:14:42 +0100 Subject: [PATCH 01/18] Speaker Geometry --- gdtf-spec.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gdtf-spec.md b/gdtf-spec.md index 6521e8d9..80a89279 100644 --- a/gdtf-spec.md +++ b/gdtf-spec.md @@ -1208,6 +1208,7 @@ of geometry collect are specified in [table 34](#user-content-table-34 ). | [Structure](#user-content-geometry-type-structure ) | Any | Geometry that describes the internal framing of an object (like members). | | [Support](#user-content-geometry-type-support ) | Any | Geometry that describes a support like a base plate or a hoist. | | [Magnet](#user-content-geometry-type-magnet ) | Any | Geometry that describes a point where other geometries should be attached. | +| [Speaker](#user-content-geometry-type-audio ) | Any | Geometry that describes a audio source. | @@ -1778,6 +1779,32 @@ defined XML attributes of a magnet geometry are specified in | Position | [Matrix](#user-content-attrtype-matrix ) | Relative position of geometry; Default value: Identity Matrix | +### Geometry Type Speaker + +This type of geometry is used to describe a speaker in a audio device. (XML node ``). The currently +defined XML attributes of a speaker geometry are specified in +[table 55](#user-content-table-XX ). + + +
+ +#### Table XX. *Magnet Attributes* + +| XML Attribute Name | Value Type | Description | +|----|----|----| +| Name | [Name](#user-content-attrtype-name ) | The unique name of the geometry. | +| Model | [Name](#user-content-attrtype-name ) | Link to the corresponding model. | +| Position | [Matrix](#user-content-attrtype-matrix ) | Relative position of geometry; Default value: Identity Matrix | +| LinkedConsumer | [Node](#user-content-attrtype-node ) | Name of the Wire Geometry that this speaker is connected to. Need to an consumer type. | +| Impedance | [Float](#user-content-attrtype-float ) | Impedance of the speaker. Note that Power consumption is defined be the LinkedConsumer consumptions. | +| VerticalCoverage | [Float](#user-content-attrtype-float ) | Vertical Coverage of the X db drop of the speaker in vertical distance. | +| HorizontalCoverage | [Float](#user-content-attrtype-float ) | Horizontal Coverage of the X db drop of the speaker in horizontal distance. Note that this values are defined in the Global Coordinate System of the GDTF. | +| FrequencyRangeMin | [Float](#user-content-attrtype-float ) | Minimum Frequency that the speaker supports. | +| FrequencyRangeMax | [Float](#user-content-attrtype-float ) | Maximum Frequency that the speaker supports. | +| MaxSPL | [Float](#user-content-attrtype-float ) | Maximum SPL of the speaker in the center of distribution. | + + +
The magnet geometry has the same children types as the geometry From a4ab9d0e11d083cbcf09a20d8722b2e9a722b03a Mon Sep 17 00:00:00 2001 From: Moritz Staffel Date: Sun, 11 Feb 2024 14:21:27 +0100 Subject: [PATCH 02/18] Create proposal.md --- proposal/audio-support/proposal.md | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 proposal/audio-support/proposal.md diff --git a/proposal/audio-support/proposal.md b/proposal/audio-support/proposal.md new file mode 100644 index 00000000..38173038 --- /dev/null +++ b/proposal/audio-support/proposal.md @@ -0,0 +1,33 @@ +# Support for Audio Devices in MVR and GDTF + +## Linked Issue + + +# Problem + +We want to fully express audio devices in GDTF and MVR. + +We need to express the relevant data for: +- Speakers +- Amplifiers +- Signal Processors +- Cabling +- Power Calculation +- Networking + + +# Proposal + + +## GDTF + +### New Geometry Type Speaker + +We will add a new geometry type speaker. This represents one speaker inside the device and will act like the origin of the audio source. By default a audio device with two "real-world" speakers will have one GDTF Geometry speakers, as the properties for visualization and planning will be combined by this two things. + + + +## MVR + + + From 7f6335d987a5f3503ebce1acdbe5a4b2521aa32f Mon Sep 17 00:00:00 2001 From: Moritz Staffel Date: Fri, 5 Apr 2024 14:00:48 +0200 Subject: [PATCH 03/18] Update proposal.md --- proposal/audio-support/proposal.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/proposal/audio-support/proposal.md b/proposal/audio-support/proposal.md index 38173038..52ce9aca 100644 --- a/proposal/audio-support/proposal.md +++ b/proposal/audio-support/proposal.md @@ -29,5 +29,8 @@ We will add a new geometry type speaker. This represents one speaker inside the ## MVR +We need to add data for the venue transfer. + +We need to add data how the individual speakers, amps usw are placed and wired. From 8aa14bc91a44db7d7aea00097075c62d6797cbbc Mon Sep 17 00:00:00 2001 From: Moritz Staffel Date: Thu, 18 Apr 2024 12:20:03 +0200 Subject: [PATCH 04/18] Add Properties of Speaker --- proposal/audio-support/proposal.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/proposal/audio-support/proposal.md b/proposal/audio-support/proposal.md index 52ce9aca..aeee8793 100644 --- a/proposal/audio-support/proposal.md +++ b/proposal/audio-support/proposal.md @@ -25,6 +25,16 @@ We need to express the relevant data for: We will add a new geometry type speaker. This represents one speaker inside the device and will act like the origin of the audio source. By default a audio device with two "real-world" speakers will have one GDTF Geometry speakers, as the properties for visualization and planning will be combined by this two things. +| Attribute Name | Value Type / Unit | Description | +|----|----|----| +| Frequency Min | Number / Hertz | Minimal Frequency of the Speaker (-5db ??) | +| Frequency Max | Number / Hertz | Maximal Frequency of the Speaker (-5db ??) | +| AngleVertical | Number / Degree | Angle of the vertical distribution | +| AngleHorizontal | Number / Degree | Angle of the horizontal distribution | +| MaxSPL | Number / dB | Max Sound Pressure (1m ??) | +| Impedance | Number / Ohm | Nominal impedance of the speaker | + +### New Geometry Type Listening Plane ## MVR From 6196614bfdacd1757fc9cfaf4e584f9f51b4ef4a Mon Sep 17 00:00:00 2001 From: Moritz Staffel Date: Thu, 18 Apr 2024 12:41:42 +0200 Subject: [PATCH 05/18] Add listenting plane --- proposal/audio-support/proposal.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/proposal/audio-support/proposal.md b/proposal/audio-support/proposal.md index aeee8793..a709cbea 100644 --- a/proposal/audio-support/proposal.md +++ b/proposal/audio-support/proposal.md @@ -25,6 +25,8 @@ We need to express the relevant data for: We will add a new geometry type speaker. This represents one speaker inside the device and will act like the origin of the audio source. By default a audio device with two "real-world" speakers will have one GDTF Geometry speakers, as the properties for visualization and planning will be combined by this two things. +The attributes in addition to the default geometry attributes are: + | Attribute Name | Value Type / Unit | Description | |----|----|----| | Frequency Min | Number / Hertz | Minimal Frequency of the Speaker (-5db ??) | @@ -34,8 +36,25 @@ We will add a new geometry type speaker. This represents one speaker inside the | MaxSPL | Number / dB | Max Sound Pressure (1m ??) | | Impedance | Number / Ohm | Nominal impedance of the speaker | + ### New Geometry Type Listening Plane +Wer will add a new geometry that defines a listening plane. A listening plane is an area that will be used the calculate acoustics data at the given point. We will add this to GDTF, so that you can define spots of interest directly in a GDTF. An example for a use case is a chair, where you define the Listening Plane in the position where the ears of an person sitting normally are. + +The use case is here that any application can define this zones of interest and programs that can calculate this can export additional result data for this. We will define the Listening plane format in such a way it is parametric, to that it is easy for all software to modify this. + +The attributes in addition to the default geometry attributes are: + +| Attribute Name | Value Type / Unit | Description | +|----|----|----| +| TypeOfListeningPlane | Enum | Rectangle, Triangle, ArcSegment, Eleptic, Cube | +| PR | Array of 8 Points for Rectangle | Defines the 2D points of the | +| PT | Array of 6 Points for Triangle | | +| PA | Array of Points for ArcSegment | | +| PE | Array of Points for Eleptic | | +| Height | Number | For Cubes | +| Width | Number | For Cubes | +| Depth | Number | For Cubes | ## MVR From 5e70ae37a21d8aa610e542ace4b3b94bfc738771 Mon Sep 17 00:00:00 2001 From: Moritz Staffel Date: Thu, 18 Apr 2024 12:48:19 +0200 Subject: [PATCH 06/18] Update proposal.md --- proposal/audio-support/proposal.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/proposal/audio-support/proposal.md b/proposal/audio-support/proposal.md index a709cbea..3d72dbe1 100644 --- a/proposal/audio-support/proposal.md +++ b/proposal/audio-support/proposal.md @@ -63,3 +63,29 @@ We need to add data for the venue transfer. We need to add data how the individual speakers, amps usw are placed and wired. +## User Story + +Acceptance Criteria: + +**Data Export from Various Sources:** +- Ability to export MVR files containing complete scenes and all objects from software such as Blender, Capture, Depence,grandMA3, Production Assist, Unreal Engine ,Vectorworks,WYSIWYG ,zactrack. +- Ensure that all relevant data, including geometric information and object properties, are correctly encapsulated in the MVR files. + +**Importing and Building the Venue in Array Calc:** +- Import the MVR containing 3D data and geometries into Array Calc. +- Use the imported data to construct a detailed 3D venue that includes audience areas. + +**Audio System Configuration in Array Calc:** +- Place and align arrays and speakers according to the predefined truss configurations within the MVR. +-Configure the cabling, digital signal processing (DSP) settings, and verify sight lines for optimal audio distribution and audience visibility. + +**Export from Array Calc:** +- Export the newly positioned arrays and speakers with updated tilt angles. +- Export the bumper with load calculations for both front and rear attachments. +- Ensure all components such as cabling, DSP/amps settings, and speaker orientations are exported accurately. +- Export SPL (Sound Pressure Level) textures mapping on audience areas, if applicable. + +**Reintegration into Other MVR-Compatible Software:** +- Import the updated MVR files into another MVR-compatible application. +- Adjust the positioning of arrays and speakers to maintain sight lines. +- Display the SPL textures to visually represent the sound levels across different audience zones. \ No newline at end of file From 3c2362f4a8bb23c6ca5d1054bab94d6988e27cfe Mon Sep 17 00:00:00 2001 From: Moritz Staffel Date: Thu, 18 Apr 2024 13:00:17 +0200 Subject: [PATCH 07/18] Update proposal.md --- proposal/audio-support/proposal.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/proposal/audio-support/proposal.md b/proposal/audio-support/proposal.md index 3d72dbe1..3e9fe27a 100644 --- a/proposal/audio-support/proposal.md +++ b/proposal/audio-support/proposal.md @@ -62,6 +62,13 @@ We need to add data for the venue transfer. We need to add data how the individual speakers, amps usw are placed and wired. +We need an flag if an object is an obstacle for the audio calculation or should be ignored. + +We need to decide oif we create an object for the Listening Plane that just lives in the MVR, or let a Scene object just contain a GDTF with a listening plane inside. + +| Attribute Name | Value Type / Unit | Description | +|----|----|----| +| AudioType | Enum | Obstacle, Ignore | ## User Story From 167cdc26f82a76774dbba404d70bfe76aec55285 Mon Sep 17 00:00:00 2001 From: Moritz Staffel Date: Thu, 18 Apr 2024 13:16:49 +0200 Subject: [PATCH 08/18] Update proposal.md --- proposal/audio-support/proposal.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proposal/audio-support/proposal.md b/proposal/audio-support/proposal.md index 3e9fe27a..b1e35a27 100644 --- a/proposal/audio-support/proposal.md +++ b/proposal/audio-support/proposal.md @@ -66,6 +66,8 @@ We need an flag if an object is an obstacle for the audio calculation or should We need to decide oif we create an object for the Listening Plane that just lives in the MVR, or let a Scene object just contain a GDTF with a listening plane inside. +We need to define, how we allow Line Arrays to define the load that this adds to the truss. + | Attribute Name | Value Type / Unit | Description | |----|----|----| | AudioType | Enum | Obstacle, Ignore | From 3bb7fc4249be0fa536994c5b8d0fb3a4bde30ed1 Mon Sep 17 00:00:00 2001 From: Petr Vanek Date: Tue, 12 May 2026 17:08:07 +0200 Subject: [PATCH 09/18] Update the proposal based on latest feedback/comments --- proposal/audio-support/proposal.md | 73 ++++++++++++++++++------------ 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/proposal/audio-support/proposal.md b/proposal/audio-support/proposal.md index b1e35a27..7b4505aa 100644 --- a/proposal/audio-support/proposal.md +++ b/proposal/audio-support/proposal.md @@ -8,7 +8,7 @@ We want to fully express audio devices in GDTF and MVR. We need to express the relevant data for: -- Speakers +- Speakers - Amplifiers - Signal Processors - Cabling @@ -23,61 +23,74 @@ We need to express the relevant data for: ### New Geometry Type Speaker -We will add a new geometry type speaker. This represents one speaker inside the device and will act like the origin of the audio source. By default a audio device with two "real-world" speakers will have one GDTF Geometry speakers, as the properties for visualization and planning will be combined by this two things. +We will add a new geometry type `Speaker`. This represents one speaker inside the device and acts as the origin of the audio source. By default, an audio device with two "real-world" speakers can have one GDTF `Speaker` geometry if the properties for visualization and planning are combined. The attributes in addition to the default geometry attributes are: | Attribute Name | Value Type / Unit | Description | |----|----|----| -| Frequency Min | Number / Hertz | Minimal Frequency of the Speaker (-5db ??) | -| Frequency Max | Number / Hertz | Maximal Frequency of the Speaker (-5db ??) | -| AngleVertical | Number / Degree | Angle of the vertical distribution | -| AngleHorizontal | Number / Degree | Angle of the horizontal distribution | -| MaxSPL | Number / dB | Max Sound Pressure (1m ??) | -| Impedance | Number / Ohm | Nominal impedance of the speaker | - +| Frequency Min | Number / Hertz | Minimal frequency of the speaker at the -6 dB mark. | +| Frequency Max | Number / Hertz | Maximal frequency of the speaker at the -6 dB mark. | +| Sound Angle Horizontal Left | Number / Degree | Horizontal dispersion angle to the left side of the speaker axis. | +| Sound Angle Horizontal Right | Number / Degree | Horizontal dispersion angle to the right side of the speaker axis. | +| Sound Angle Vertical Up | Number / Degree | Vertical dispersion angle above the speaker axis. | +| Sound Angle Vertical Down | Number / Degree | Vertical dispersion angle below the speaker axis. | +| Sound Angle Rotation | Number / Degree | Rotation of the sound dispersion around the speaker axis. This allows asymmetric dispersion, for example an asymmetric sound field rotated by 45 degrees. | +| Max SPL | Number | Maximum sound pressure level measured at 1 meter from the speaker. The value is interpreted together with the SPL format attributes below. | +| Max SPL Excitation Signal | Enum | `PinkNoise`, `IEC60268ProgramSimulationNoise`, `EIA426BLoudspeakerTestSignal`, `AES75MNoise`. | +| Max SPL Frequency Weighting | Enum | `None`, `A`, `C`. | +| Max SPL Level Unit | Enum | `dB`, `dBZ`, `dBSPL`, `dBA`, `dBC`. | +| Max SPL Time Weighting | Enum | `Fast`, `Slow`, `Leq`, `Peak`. | +| Max SPL Time Unit | Enum | `F`, `S`, `Leq`, `LAeq`, `LCeq`. | +| Impedance | Number / Ohm | Nominal impedance of the speaker. | + +TODO: define defaults, exact attribute names. + +Sound angles are intentionally not defined as adjustable ranges in this proposal. The proposal defines the actual sound dispersion with independent left, right, up, and down angles plus one rotation value. This supports asymmetric dispersion without requiring separate min/max angle ranges. + +The SPL excitation signal, frequency weighting, level unit, time weighting, and time unit are independent metadata fields and can be used in any valid combination. The format only describes the stored value; applications should not convert the value when the format changes. If an application changes the SPL format for an existing value, it should clear the value and require a new value to be entered. ### New Geometry Type Listening Plane -Wer will add a new geometry that defines a listening plane. A listening plane is an area that will be used the calculate acoustics data at the given point. We will add this to GDTF, so that you can define spots of interest directly in a GDTF. An example for a use case is a chair, where you define the Listening Plane in the position where the ears of an person sitting normally are. +We will add a new geometry type `ListeningPlane`. A listening plane defines an infinitesimally thin area that can be used to calculate acoustic data. The listening plane is placed in the GDTF hierarchy like other geometries, so spots of interest can be defined directly in a GDTF. Example use cases are audience areas or the ear position of a person sitting in a chair. -The use case is here that any application can define this zones of interest and programs that can calculate this can export additional result data for this. We will define the Listening plane format in such a way it is parametric, to that it is easy for all software to modify this. +A listening plane is defined by a referenced `Geometry3D` file. This allows a polygon with any number of points instead of a fixed set of parametric shapes. The surface has no height range, width, depth, or volume; it is a single thin layer located by the geometry transform. -The attributes in addition to the default geometry attributes are: +Example: -| Attribute Name | Value Type / Unit | Description | -|----|----|----| -| TypeOfListeningPlane | Enum | Rectangle, Triangle, ArcSegment, Eleptic, Cube | -| PR | Array of 8 Points for Rectangle | Defines the 2D points of the | -| PT | Array of 6 Points for Triangle | | -| PA | Array of Points for ArcSegment | | -| PE | Array of Points for Eleptic | | -| Height | Number | For Cubes | -| Width | Number | For Cubes | -| Depth | Number | For Cubes | +```xml + + + + + +``` + +The referenced geometry should contain the polygonal listening surface. Applications that calculate acoustic data can use this surface as the target area for result data such as sound pressure level maps. ## MVR We need to add data for the venue transfer. -We need to add data how the individual speakers, amps usw are placed and wired. +We need to add data for how the individual speakers, amplifiers, signal processors, cabling, and networks are placed and wired. -We need an flag if an object is an obstacle for the audio calculation or should be ignored. +We need a flag that defines whether an object is an obstacle for the audio calculation or should be ignored. -We need to decide oif we create an object for the Listening Plane that just lives in the MVR, or let a Scene object just contain a GDTF with a listening plane inside. +Listening planes should be transferred as scene objects that reference GDTF data containing a `ListeningPlane`, instead of defining an MVR-only listening plane object. -We need to define, how we allow Line Arrays to define the load that this adds to the truss. +We need to define how line arrays describe the load that they add to the truss. | Attribute Name | Value Type / Unit | Description | |----|----|----| -| AudioType | Enum | Obstacle, Ignore | +| Audio Type | Enum | `Obstacle`, `Ignore`. | +| Audio Material Name | String | Name of the material to use for audio analysis. This is used by receiving applications to derive reflectiveness or other acoustic properties. MVR only transfers the material name and does not define the acoustic material model. | ## User Story Acceptance Criteria: **Data Export from Various Sources:** -- Ability to export MVR files containing complete scenes and all objects from software such as Blender, Capture, Depence,grandMA3, Production Assist, Unreal Engine ,Vectorworks,WYSIWYG ,zactrack. +- Ability to export MVR files containing complete scenes and all objects from software such as Blender, Capture, Depence, grandMA3, Production Assist, Unreal Engine, Vectorworks, WYSIWYG, zactrack. - Ensure that all relevant data, including geometric information and object properties, are correctly encapsulated in the MVR files. **Importing and Building the Venue in Array Calc:** @@ -86,7 +99,7 @@ Acceptance Criteria: **Audio System Configuration in Array Calc:** - Place and align arrays and speakers according to the predefined truss configurations within the MVR. --Configure the cabling, digital signal processing (DSP) settings, and verify sight lines for optimal audio distribution and audience visibility. +- Configure the cabling, digital signal processing (DSP) settings, and verify sight lines for optimal audio distribution and audience visibility. **Export from Array Calc:** - Export the newly positioned arrays and speakers with updated tilt angles. @@ -97,4 +110,4 @@ Acceptance Criteria: **Reintegration into Other MVR-Compatible Software:** - Import the updated MVR files into another MVR-compatible application. - Adjust the positioning of arrays and speakers to maintain sight lines. -- Display the SPL textures to visually represent the sound levels across different audience zones. \ No newline at end of file +- Display the SPL textures to visually represent the sound levels across different audience zones. From 6d19ab31cedd392de489eff0fb7c8c7fde9454f9 Mon Sep 17 00:00:00 2001 From: Petr Vanek Date: Tue, 12 May 2026 20:49:01 +0200 Subject: [PATCH 10/18] Add initial Amplifier specification --- proposal/audio-support/proposal.md | 46 ++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/proposal/audio-support/proposal.md b/proposal/audio-support/proposal.md index 7b4505aa..2fc165b3 100644 --- a/proposal/audio-support/proposal.md +++ b/proposal/audio-support/proposal.md @@ -68,6 +68,52 @@ Example: The referenced geometry should contain the polygonal listening surface. Applications that calculate acoustic data can use this surface as the target area for result data such as sound pressure level maps. + +## New geometry Amplifier object + +Add amplifiers as GDTF-described audio devices, with MVR carrying placed instances and wiring between amplifiers, speakers, DSP/network devices, and power. Existing MVR `Connections`, `Protocols`, `Addresses`, and GDTF `WiringObject` should be reused instead of creating a separate MVR-only amplifier graph. + +- Add a GDTF geometry type `Amplifier` under Geometry Collect. +- `Amplifier` uses standard geometry fields: `Name`, `Model`, `Position`. +- Add amplifier-level attributes: + - `ChannelCount` integer. + - `AmplifierClass` enum/string, e.g. `A`, `AB`, `D`, `Other`. + - `DSP` bool. + - `SupportedSpeakerPreset` string or repeated child node, for manufacturer speaker setup/preset names. + - `Latency` float, milliseconds. + - `CoolingType` enum/string, e.g. `Passive`, `Fan`, `Other`. +- Add child node `AmplifierChannel` under `Amplifier`, repeated once per output channel or logical output group. +- `AmplifierChannel` attributes: + - `Name` required. + - `ChannelIndex` integer. + - `Mode` enum: `SingleEnded`, `Bridge`, `ParallelBridge`, `HighImpedance70V`, `HighImpedance100V`, `Other`. + - `OutputPower` float, watts. + - `LoadImpedance` float, ohms. + - `MinLoadImpedance` float, ohms. + - `MaxOutputVoltage` float, volts peak or RMS, with `VoltageMeasurement` enum `Peak`/`RMS`. + - `MaxOutputCurrent` float, amperes peak or RMS, with `CurrentMeasurement` enum `Peak`/`RMS`. + - `THDN` float, percent, optional. + - `CrestFactor` float, dB, optional. + - `FrequencyRangeMin` and `FrequencyRangeMax` float, hertz. + - `LinkedOutput` node reference to a GDTF `WiringObject` with speaker-level output signal. +- Keep mains input, audio input, speaker output, network, and control interfaces as `WiringObject` nodes: + - Power input: `SignalType="Power"`, `ComponentType="Consumer"` plus existing power payload/voltage/frequency fields. + - Speaker outputs: `SignalType="AnalogAudio"` or new predefined `AmplifiedAudio`, `ComponentType="Output"`, connector types such as `NL4`, `NL8`, terminal blocks, or custom names. + - Analog/AES3/network audio inputs: existing `AnalogAudio`, `AES`, `Protocol`, `NetworkInput`, `NetworkInOut`. +- Add predefined protocol names where needed: + - In GDTF supported protocols and MVR protocol type guidance, add `AES67`, `AES70`, `Milan`, `Dante`, and `Ravenna` as recognized audio-related names while still allowing custom protocol strings. +- Add predefined connector types if missing: + - `NL2`, `NL8`, common Euroblock/Phoenix speaker terminal naming, and optionally `etherCON`; keep existing `NL4`, XLR, RJ45, and power connectors. +- Update the `Speaker` proposal so speaker impedance can be matched against amplifier channel load and speaker wiring: + - Keep `Impedance` on `Speaker`. + - Clarify that amplifier-to-speaker links are represented through `WiringObject` plus MVR `Connection`, not by directly nesting speakers under amplifiers. + +In MVR: + +- Represent amplifier racks or standalone amplifiers as `Amplifiers` of fixtures? As `Fixture` when they need IDs, addresses, protocols, or GDTF device behavior; otherwise allow `SceneObject` with `GDTFSpec`. +- Use existing MVR `Connections` to connect amplifier output wiring objects to speaker input wiring objects. +- Use existing MVR `Protocols` and `Addresses/Network` for amplifier control and audio network assignment. + ## MVR We need to add data for the venue transfer. From 729f0a61c65605d58d803c4d2a0f34c37237596d Mon Sep 17 00:00:00 2001 From: Kevin Linzey <33553205+klinzey@users.noreply.github.com> Date: Wed, 13 May 2026 22:06:50 -0400 Subject: [PATCH 11/18] Define ListeningPlane node and its attributes Add definition for ListeningPlane and its attributes. --- mvr-spec.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/mvr-spec.md b/mvr-spec.md index 657e49dc..f2d82832 100644 --- a/mvr-spec.md +++ b/mvr-spec.md @@ -367,6 +367,7 @@ The child list (Table 18) contains a list of the following nodes: | [Truss](#node-definition-truss) | A definition of a truss. | | [VideoScreen](#node-definition-videoscreen) | A definition of a video screen. | | [Projector](#node-definition-projector) | A definition of a projector. | +| [ListeningPlane](#node-definition-listeningplane) | A definition of a audio listening plane. | ## Node Definition for Parametric Objects @@ -800,7 +801,66 @@ EXAMPLE An example of a node definition is shown below: ``` +## Node Definition: ListeningPlane +This node defines a listening plane object. The defined ListeningPlane Node Attributes are specified in Table XX. + +Node name: `ListeningPlane` + +##### Table XX — *ListeningPlane Node Attributes* + +| Attribute Name | Attribute Value Type | Default Value when Optional | Description | +| -------------- | --------------------------------------- | --------------------------- | ------------------------------------ | +| uuid | [UUID](#user-content-attrtype-uuid) | Not Optional | The unique identifier of the object. | +| name | [String](#user-content-attrtype-string) | Empty | The name of the object. | + + +The child list (Table XX) contains a list of one of the following nodes: + +##### Table XX — *ListeningPlane Node Childs* + +| Child Node | Allowed Count | Value Type | Description | +| ------------------------------------------------- | ------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| [Matrix](#node-definition-matrix) | 0 or 1 | | The location of the object inside the parent coordinate system. | +| [Classing](#node-definition-class) | 0 or 1 | [UUID](#user-content-attrtype-uuid) | The Class the object belongs to. | +| [Geometries](#node-definition-geometries) | 1 | | A list of geometrical representation objects that are part of the lisrtening plane. | +| [GridSpacingX] | 0 or 1 |[Float](#user-content-attrtype-float) | Spacking of the measurement grid in the X direction in mm. | +| [GridSpacingY] | 0 or 1 |[Float](#user-content-attrtype-float) | Spacking of the measurement grid in the Y direction in mm. | +| [ListeningPlaneResults] | Any | Node | Results of a calculation. | + +#### Node Definition: ListeningPlaneResults + +This node defines a ListeningPlaneResults. + +Node name: `ListeningPlaneResults` + +The child list (Table XX) contains a list of the following nodes: + +##### Table XX — *ListeningPlaneResults Node Childs* + +| Child Node | Description | +| ------------------------------------------------- | ------------------------------------------------ | +| [Frequency](#user-content-attrtype-float) | Reports the frequency of the calculated results in Hz. | +| [Geometries](#node-definition-geometries) | A list of geometrical representation objects that are part of the listening plane at the specified frequency. | +| [Classing](#node-definition-class) | The Class this frequency geometry belongs to. | +| AmplitudeValues | A list of measurement points and amplitude values.| + +##### Table XX — *AmplitudeValues Node Attributes* + +| Attribute Name | Attribute Value Type | Default Value when Optional | Description | +| -------------- | ------------------------------------- | --------------------------- | ---------------------------------- | +| Point | [Vector3](#user-content-attrtype-vector3) | | The cordinate of the measurement. | +| Amplitude | [Float](#user-content-attrtype-float) | | Amplitude of the measurement | +| Units | [String](#user-content-attrtype-string) | | Measurement unit. DBZ, dB, DBSPL, dBA, dBC| +| Color | [CIE Color](#user-content-attrtype-ciecolor) | | Color used represent the amplitude value a the point.| + + +EXAMPLE An example of a node definition is shown below: +```xml + + {0.158127,-0.987419,0.000000}{0.987419,0.158127,0.000000}{0.000000,0.000000,1.000000}{6020.939200,2838.588955,4978.134459} + +``` ## Other Node Definition From a22f2d91e51379bfd4e2dda53c4026aa4d70877a Mon Sep 17 00:00:00 2001 From: Kevin Linzey <33553205+klinzey@users.noreply.github.com> Date: Wed, 13 May 2026 22:44:32 -0400 Subject: [PATCH 12/18] Revise speaker and MaxSPL attributes in gdtf-spec Updated speaker attributes and added MaxSPL attributes. --- gdtf-spec.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/gdtf-spec.md b/gdtf-spec.md index 7be7be90..691dea18 100644 --- a/gdtf-spec.md +++ b/gdtf-spec.md @@ -1784,6 +1784,8 @@ defined XML attributes of a magnet geometry are specified in | Model | [Name](#user-content-attrtype-name ) | Link to the corresponding model. | | Position | [Matrix](#user-content-attrtype-matrix ) | Relative position of geometry; Default value: Identity Matrix | +The magnet geometry has the same children types as the geometry +collect (see [table 34](#user-content-table-34 )). ### Geometry Type Speaker @@ -1794,7 +1796,7 @@ defined XML attributes of a speaker geometry are specified in
-#### Table XX. *Magnet Attributes* +#### Table XX. *Speaker Attributes* | XML Attribute Name | Value Type | Description | |----|----|----| @@ -1803,18 +1805,26 @@ defined XML attributes of a speaker geometry are specified in | Position | [Matrix](#user-content-attrtype-matrix ) | Relative position of geometry; Default value: Identity Matrix | | LinkedConsumer | [Node](#user-content-attrtype-node ) | Name of the Wire Geometry that this speaker is connected to. Need to an consumer type. | | Impedance | [Float](#user-content-attrtype-float ) | Impedance of the speaker. Note that Power consumption is defined be the LinkedConsumer consumptions. | -| VerticalCoverage | [Float](#user-content-attrtype-float ) | Vertical Coverage of the X db drop of the speaker in vertical distance. | -| HorizontalCoverage | [Float](#user-content-attrtype-float ) | Horizontal Coverage of the X db drop of the speaker in horizontal distance. Note that this values are defined in the Global Coordinate System of the GDTF. | +| VerticalCoverageUp | [Float](#user-content-attrtype-float ) | Vertical Coverage of the ?? direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | +| VerticalCoverageDown | [Float](#user-content-attrtype-float ) | Vertical Coverage of the ?? direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | +| HorizontalCoverageLeft | [Float](#user-content-attrtype-float ) | Horizontal CCoverage of the ?? direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | +| HorizontalCoverageRight | [Float](#user-content-attrtype-float ) | Horizontal Coverage of the ?? direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | | FrequencyRangeMin | [Float](#user-content-attrtype-float ) | Minimum Frequency that the speaker supports. | | FrequencyRangeMax | [Float](#user-content-attrtype-float ) | Maximum Frequency that the speaker supports. | | MaxSPL | [Float](#user-content-attrtype-float ) | Maximum SPL of the speaker in the center of distribution. | - +#### Table XX. *MaxSPL Attributes* +| XML Attribute Name | Value Type | Description | +|----|----|----| +|ExcitationSignal | [String](#user-content-attrtype-string) | Pink noise, IEC60268, EIA426B, AES75 (enums?)| +|FrequencyWeighting | [String](#user-content-attrtype-string) | None, A-Weighting, C-Weighting (enums?)| +|Unit | [String](#user-content-attrtype-string) | DBZ, dB, DBSPL, dBA, dBC (enums?)| +|UnitMark | [String](#user-content-attrtype-string) | Leq, Laeq, LCeq, F, S | +|TimeWeighting | [String](#user-content-attrtype-string) | Fast, Slow, Leq, Peak, (enums?)|
-The magnet geometry has the same children types as the geometry -collect (see [table 34](#user-content-table-34 )). + ## DMX Mode Collect From 9db2c0f5b68c95a297aa135492f39ec63712f482 Mon Sep 17 00:00:00 2001 From: Kevin Linzey <33553205+klinzey@users.noreply.github.com> Date: Wed, 13 May 2026 23:08:56 -0400 Subject: [PATCH 13/18] Define Speaker node with attributes and children Added a new Node Definition for Speaker with attributes and child nodes. --- mvr-spec.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mvr-spec.md b/mvr-spec.md index f2d82832..175c0bda 100644 --- a/mvr-spec.md +++ b/mvr-spec.md @@ -862,6 +862,37 @@ EXAMPLE An example of a node definition is shown below: ``` +## Node Definition: Speaker + +This node defines a Speaker object. The defined Speaker Node Attributes are specified in Table XX. + +Node name: `Speaker` + +##### Table XX — *Speaker Node Attributes* + +| Attribute Name | Attribute Value Type | Default Value when Optional | Description | +| -------------- | --------------------------------------- | --------------------------- | ------------------------------------ | +| uuid | [UUID](#user-content-attrtype-uuid) | Not Optional | The unique identifier of the object. | +| name | [String](#user-content-attrtype-string) | Empty | The name of the object. | + +The child list (Table XX) contains a list of one of the following nodes: + +##### Table XX — *Speaker Node Childs* + +| Child Node | Allowed Count | Value Type | Description | +| ------------------------------------------------- | ------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| [Matrix](#node-definition-matrix) | 0 or 1 | | The location of the object inside the parent coordinate system. | +| [Classing](#node-definition-class) | 0 or 1 | [UUID](#user-content-attrtype-uuid) | The Class the object belongs to. | +| GDTFSpec | 0 or 1 | [FileName](#user-content-attrtype-filename) | The name of the file containing the GDTF information for this object, conforming to the DIN SPEC 15800. | +| [Addresses](#node-definition-addresses) | 0 or 1 | | The container for DMX Addresses for this object. | +| [Alignments](#node-definition-alignments) | 0 or 1 | | The container for Alignments for this object. | +| [CustomCommands](#node-definition-customcommands) | 0 or 1 | | The container for custom command for this object. | +| [Overwrites](#node-definition-overwrites) | 0 or 1 | | The container for overwrites for this object. | +| [Connections](#node-definition-connections) | 0 or 1 | | The container for connections for this object. | +| [ChildList](#node-definition-childlist) | 0 or 1 | | A list of graphic objects that are part of the layer. | +| [Rotation] (#node-definition-float) | 0 or 1 | | Rotation of the internal sound source. | + + ## Other Node Definition ### Node Definition: Matrix From 0f0e268729700a8b6296a2cee27e5e30aa5837d0 Mon Sep 17 00:00:00 2001 From: Petr Vanek Date: Thu, 14 May 2026 16:20:20 +0200 Subject: [PATCH 14/18] Adjusting attributes and their definitions, adding some todo items --- gdtf-spec.md | 18 ++++++++++-------- mvr-spec.md | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/gdtf-spec.md b/gdtf-spec.md index 691dea18..50bc1f6c 100644 --- a/gdtf-spec.md +++ b/gdtf-spec.md @@ -1804,14 +1804,15 @@ defined XML attributes of a speaker geometry are specified in | Model | [Name](#user-content-attrtype-name ) | Link to the corresponding model. | | Position | [Matrix](#user-content-attrtype-matrix ) | Relative position of geometry; Default value: Identity Matrix | | LinkedConsumer | [Node](#user-content-attrtype-node ) | Name of the Wire Geometry that this speaker is connected to. Need to an consumer type. | -| Impedance | [Float](#user-content-attrtype-float ) | Impedance of the speaker. Note that Power consumption is defined be the LinkedConsumer consumptions. | -| VerticalCoverageUp | [Float](#user-content-attrtype-float ) | Vertical Coverage of the ?? direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | -| VerticalCoverageDown | [Float](#user-content-attrtype-float ) | Vertical Coverage of the ?? direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | -| HorizontalCoverageLeft | [Float](#user-content-attrtype-float ) | Horizontal CCoverage of the ?? direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | -| HorizontalCoverageRight | [Float](#user-content-attrtype-float ) | Horizontal Coverage of the ?? direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | -| FrequencyRangeMin | [Float](#user-content-attrtype-float ) | Minimum Frequency that the speaker supports. | -| FrequencyRangeMax | [Float](#user-content-attrtype-float ) | Maximum Frequency that the speaker supports. | -| MaxSPL | [Float](#user-content-attrtype-float ) | Maximum SPL of the speaker in the center of distribution. | +| Impedance | [Float](#user-content-attrtype-float ) | Nominal impedance of the speaker, Ohms. | +| VerticalCoverageUp | [Float](#user-content-attrtype-float ) | Vertical Coverage of the sound angle ?? (todo: define the axis) direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | +| VerticalCoverageDown | [Float](#user-content-attrtype-float ) | Vertical Coverage of the sound angle ?? (todo: define the axis) direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | +| HorizontalCoverageLeft | [Float](#user-content-attrtype-float ) | Horizontal Coverage of the sound angle ?? (todo: define the axis) direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | +| HorizontalCoverageRight | [Float](#user-content-attrtype-float ) | Horizontal Coverage of the sound angle ?? (todo: define the axis) direction. (Degrees) Note that this values are defined in the Global Coordinate System of the GDTF. | +| SoundAngleRotationMax | | [Float](#user-content-attrtype-float ) |Maximum rotation of the sound dispersion around the speaker axis ?? which axis | +| FrequencyRangeMin | [Float](#user-content-attrtype-float ) | Minimal frequency of the speaker at the -6 dB mark. | +| FrequencyRangeMax | [Float](#user-content-attrtype-float ) | Maximal frequency of the speaker at the -6 dB mark. | +| MaxSPL | [Float](#user-content-attrtype-float ) | Maximum sound pressure level measured at 1 meter from the speaker. The value is interpreted together with the SPL format attributes below. | #### Table XX. *MaxSPL Attributes* | XML Attribute Name | Value Type | Description | @@ -1824,6 +1825,7 @@ defined XML attributes of a speaker geometry are specified in +TODO: Define default orientation of the speaker. Clarify if the values are for one speaker object ("speaker") or for the whole "speaker box". (Needed for MVR linking to the SoundAngleRotationMax and for the LinkedConsumer ) ## DMX Mode Collect diff --git a/mvr-spec.md b/mvr-spec.md index 175c0bda..fa777223 100644 --- a/mvr-spec.md +++ b/mvr-spec.md @@ -823,7 +823,7 @@ The child list (Table XX) contains a list of one of the following nodes: | ------------------------------------------------- | ------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | [Matrix](#node-definition-matrix) | 0 or 1 | | The location of the object inside the parent coordinate system. | | [Classing](#node-definition-class) | 0 or 1 | [UUID](#user-content-attrtype-uuid) | The Class the object belongs to. | -| [Geometries](#node-definition-geometries) | 1 | | A list of geometrical representation objects that are part of the lisrtening plane. | +| [Geometries](#node-definition-geometries) | 1 | | A default placeholder geometry representing the listening plane in case there are no listening plane results. Clarify.| | [GridSpacingX] | 0 or 1 |[Float](#user-content-attrtype-float) | Spacking of the measurement grid in the X direction in mm. | | [GridSpacingY] | 0 or 1 |[Float](#user-content-attrtype-float) | Spacking of the measurement grid in the Y direction in mm. | | [ListeningPlaneResults] | Any | Node | Results of a calculation. | From 4e0a1c0c7acf1b7f55db400e6eb9559daeeec03c Mon Sep 17 00:00:00 2001 From: Petr Vanek Date: Thu, 11 Jun 2026 14:30:03 +0200 Subject: [PATCH 15/18] Further definitions for Audio proposal - add file based definition for ListeningPlaneHeatMaps - add HangingPoint - add SpeakerBumper to StructureType --- gdtf-spec.md | 21 ++++++++++++++++++++- mvr-spec.md | 49 +++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/gdtf-spec.md b/gdtf-spec.md index 50bc1f6c..fbc3edcb 100644 --- a/gdtf-spec.md +++ b/gdtf-spec.md @@ -1717,7 +1717,7 @@ defined XML attributes of a structure geometry are specified in | Model | [Name](#user-content-attrtype-name ) | Link to the corresponding model. | | Position | [Matrix](#user-content-attrtype-matrix ) | Relative position of geometry; Default value: Identity Matrix | | LinkedGeometry | [Name](#user-content-attrtype-name ) | The linked geometry. | -| StructureType | [Enum](#user-content-attrtype-enum ) | The type of structure. Defined values are "CenterLineBased", "Detail". | +| StructureType | [Enum](#user-content-attrtype-enum ) | The type of structure. Defined values are "CenterLineBased", "Detail", "SpeakerBumper". | | CrossSectionType | [Enum](#user-content-attrtype-enum ) | The type of cross section. Defined values are "TrussFramework", "Tube". | | CrossSectionHeight | [Float](#user-content-attrtype-float ) | The height of the cross section. Only for [Tubes](#user-content-attrtype-crosssectiontype ). Unit: meter. | | CrossSectionWallThickness | [Float](#user-content-attrtype-float ) | The thickness of the wall of the cross section.Only for [Tubes](#user-content-attrtype-crosssectiontype ). Unit: meter. | @@ -1787,6 +1787,25 @@ defined XML attributes of a magnet geometry are specified in The magnet geometry has the same children types as the geometry collect (see [table 34](#user-content-table-34 )). +### Geometry Type HangingPoint + +This type of geometry is used to describe a hanging point, a point for attachment (XML node ``). The currently +defined XML attributes of a hanging point geometry are specified in +[table xx](#user-content-table-xx ). + +
+ +#### Table 55. *HangingPoint Attributes* + +| XML Attribute Name | Value Type | Description | +|----|----|----| +| Name | [Name](#user-content-attrtype-name ) | The unique name of the geometry. | +| Model | [Name](#user-content-attrtype-name ) | Link to the corresponding model. | +| Position | [Matrix](#user-content-attrtype-matrix ) | Relative position of geometry; Default value: Identity Matrix | + +The hanging point geometry has the same children types as the geometry +collect (see [table 34](#user-content-table-34 )). + ### Geometry Type Speaker This type of geometry is used to describe a speaker in a audio device. (XML node ``). The currently diff --git a/mvr-spec.md b/mvr-spec.md index fa777223..7f278a6f 100644 --- a/mvr-spec.md +++ b/mvr-spec.md @@ -123,6 +123,7 @@ as a prefix to denote negative numbers. E.g. `15` or `-6`| | Vector | Three Float values separated by ',' defining a 3D vector's X, Y, and Z components.
Eg `1.0,2.0,3.0`| | FileName | The case-sensitive name of a file within the archive including the extension.
The filename must not contain any FAT32 or NTFS reserved characters.
The extension is delimited from the base name by full stop '.' and the base name shall not be empty.
It is recommended to limit filenames to the POSIX "Fully Portable Filenames" character set: [A-Z], [a-z], [0-9], the symbols '\_' (U+005F), '-' (U+002D) and a maximum of one '.' (U+002E)
Eg `My-Fixture_5.gdtf`| | CIE Color | CIE 1931 xyY absolute color point.
Formatted as three Floats `x,y,Y`
Eg `0.314303,0.328065,87.699166`| +|Vector3
| {float,float,float} | Vector with 3 float components| | IPv4 Address | Common IPv4 Address in the format of dotted decimal notation.
Eg `192.168.1.10` | | IPv6 Address | Common IPv6 Address in the format of hexadecimal notation.
Eg `2001:0db8:85a3:0000:0000:8a2e:0370:7344` | @@ -809,11 +810,11 @@ Node name: `ListeningPlane` ##### Table XX — *ListeningPlane Node Attributes* -| Attribute Name | Attribute Value Type | Default Value when Optional | Description | -| -------------- | --------------------------------------- | --------------------------- | ------------------------------------ | -| uuid | [UUID](#user-content-attrtype-uuid) | Not Optional | The unique identifier of the object. | -| name | [String](#user-content-attrtype-string) | Empty | The name of the object. | - +| Attribute Name | Attribute Value Type | Default Value when Optional | Description | +| -------------- | --------------------------------------- | --------------------------- | ------------------------------------ | +| uuid | [UUID](#user-content-attrtype-uuid) | Not Optional | The unique identifier of the object. | +| name | [String](#user-content-attrtype-string) | Empty | The name of the object. | +| AudioDescriptionFile | [FileName](#user-content-attrtype-filename) | Empty | The file name, including extension, of the external file in the archive. The type of file is XML. In this file, ListeningPlaneHeatMaps are stored as per table XX| The child list (Table XX) contains a list of one of the following nodes: @@ -826,15 +827,43 @@ The child list (Table XX) contains a list of one of the following nodes: | [Geometries](#node-definition-geometries) | 1 | | A default placeholder geometry representing the listening plane in case there are no listening plane results. Clarify.| | [GridSpacingX] | 0 or 1 |[Float](#user-content-attrtype-float) | Spacking of the measurement grid in the X direction in mm. | | [GridSpacingY] | 0 or 1 |[Float](#user-content-attrtype-float) | Spacking of the measurement grid in the Y direction in mm. | -| [ListeningPlaneResults] | Any | Node | Results of a calculation. | -#### Node Definition: ListeningPlaneResults +##### Table XX — *ListeningPlaneHeatMaps Node Attributes* -This node defines a ListeningPlaneResults. +| Attribute Nam | Attribute Value Type | Default Value when Optional | Description | +| -------------- | --------------------------------------- | --------------------------- | ------------------------------------ | +| Frequency | [Float](#user-content-attrtype-float) | TBD | Reports the frequency of the calculated results in Hz. | -Node name: `ListeningPlaneResults` +The child list (Table XX) contains a list of one of the following nodes: + +##### Table XX — *ListeningPlane Node Childs* + +| Child Node | Allowed Count | Description | +| ------------------------------- | ------------- | ---------------------------------------------- | +| [Face](#node-definition-face) | 0 or any | | + + +The child list (Table XX) contains a list of one of the following nodes: -The child list (Table XX) contains a list of the following nodes: +##### Table XX — *Face Node Childs* + +| Child Node | Allowed Count | Description | +| ------------------------------- | ------------- | ---------------------------------------------- | +| [Face](#node-definition-face) | 0 or 1 | | + +The child list (Table XX) contains a list of one of the following nodes: + +##### Table XX — *Face Node Childs* + +| Child Node | Allowed Count | Description | +| ------------------------------- | ------------- | ---------------------------------------------- | +| Point | [Vector3](#user-content-attrtype-vector3) | | The cordinate of the measurement. | +| Point | [Vector3](#user-content-attrtype-vector3) | | The cordinate of the measurement. | +| Point | [Vector3](#user-content-attrtype-vector3) | | The cordinate of the measurement. | +| Color | [CIE Color](#user-content-attrtype-ciecolor) | | Color used represent the amplitude value a the point.| + + +#### Node Definition: ListeningPlaneResults ##### Table XX — *ListeningPlaneResults Node Childs* From 6a050f9722a20f93825cf7cb976826464ad70f78 Mon Sep 17 00:00:00 2001 From: Petr Vanek Date: Thu, 11 Jun 2026 20:30:16 +0200 Subject: [PATCH 16/18] Extend the definition for the ListeningPlaneHeatMaps --- mvr-spec.md | 136 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 95 insertions(+), 41 deletions(-) diff --git a/mvr-spec.md b/mvr-spec.md index 7f278a6f..c6e67ae1 100644 --- a/mvr-spec.md +++ b/mvr-spec.md @@ -814,7 +814,7 @@ Node name: `ListeningPlane` | -------------- | --------------------------------------- | --------------------------- | ------------------------------------ | | uuid | [UUID](#user-content-attrtype-uuid) | Not Optional | The unique identifier of the object. | | name | [String](#user-content-attrtype-string) | Empty | The name of the object. | -| AudioDescriptionFile | [FileName](#user-content-attrtype-filename) | Empty | The file name, including extension, of the external file in the archive. The type of file is XML. In this file, ListeningPlaneHeatMaps are stored as per table XX| +| AudioDescriptionFile | [FileName](#user-content-attrtype-filename) | Empty | The file name, including extension, of the external XML file in the archive. The file contains a `ListeningPlaneHeatMaps` root node with one or more listening-plane heat maps. | The child list (Table XX) contains a list of one of the following nodes: @@ -824,64 +824,119 @@ The child list (Table XX) contains a list of one of the following nodes: | ------------------------------------------------- | ------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | [Matrix](#node-definition-matrix) | 0 or 1 | | The location of the object inside the parent coordinate system. | | [Classing](#node-definition-class) | 0 or 1 | [UUID](#user-content-attrtype-uuid) | The Class the object belongs to. | -| [Geometries](#node-definition-geometries) | 1 | | A default placeholder geometry representing the listening plane in case there are no listening plane results. Clarify.| -| [GridSpacingX] | 0 or 1 |[Float](#user-content-attrtype-float) | Spacking of the measurement grid in the X direction in mm. | -| [GridSpacingY] | 0 or 1 |[Float](#user-content-attrtype-float) | Spacking of the measurement grid in the Y direction in mm. | +| [Geometries](#node-definition-geometries) | 1 | | The geometry that represents the listening-plane surface. The geometry is used as the spatial target for calculation and result mapping. | +| GridSpacingX | 0 or 1 | [Float](#user-content-attrtype-float) | Spacing of the measurement grid in the X direction in mm. | +| GridSpacingY | 0 or 1 | [Float](#user-content-attrtype-float) | Spacing of the measurement grid in the Y direction in mm. | -##### Table XX — *ListeningPlaneHeatMaps Node Attributes* +EXAMPLE An example of a node definition is shown below: +```xml + + + + + 261F2B44-373C-491C-8D6A-316295DE9B6A + +``` -| Attribute Nam | Attribute Value Type | Default Value when Optional | Description | -| -------------- | --------------------------------------- | --------------------------- | ------------------------------------ | -| Frequency | [Float](#user-content-attrtype-float) | TBD | Reports the frequency of the calculated results in Hz. | +## Node Definition: ListeningPlaneHeatMaps -The child list (Table XX) contains a list of one of the following nodes: +This node defines the root element of the external listening-plane audio description file. -##### Table XX — *ListeningPlane Node Childs* +Node name: `ListeningPlaneHeatMaps` -| Child Node | Allowed Count | Description | -| ------------------------------- | ------------- | ---------------------------------------------- | -| [Face](#node-definition-face) | 0 or any | | +The child list (Table XX) contains a list of the following nodes: +##### Table XX — *ListeningPlaneHeatMaps Node Childs* -The child list (Table XX) contains a list of one of the following nodes: +| Child Node | Allowed Count | Description | +| ------------------------------------------------------------- | ------------- | --------------------------------------------------------------- | +| [ListeningPlaneHeatMap](#node-definition-listeningplaneheatmap) | 1 or more | A heat map for a specific frequency. | -##### Table XX — *Face Node Childs* -| Child Node | Allowed Count | Description | -| ------------------------------- | ------------- | ---------------------------------------------- | -| [Face](#node-definition-face) | 0 or 1 | | +## Node Definition: ListeningPlaneHeatMap -The child list (Table XX) contains a list of one of the following nodes: +This node defines a listening-plane heat map at one frequency. + +Node name: `ListeningPlaneHeatMap` + +##### Table XX — *ListeningPlaneHeatMap Node Attributes* + +| Attribute Name | Attribute Value Type | Default Value when Optional | Description | +| -------------- | --------------------------------------- | --------------------------- | --------------------------------------------------------- | +| Frequency | [Float](#user-content-attrtype-float) | Not Optional | Reports the frequency of the calculated results in Hz. | + +The child list (Table XX) contains a list of the following nodes: + +##### Table XX — *ListeningPlaneHeatMap Node Childs* + +| Child Node | Allowed Count | Description | +| --------------------------------------------- | ------------- | --------------------------------------------------------------------------- | +| [Face](#node-definition-face) | 1 or more | A triangular heat-map face. | + + +## Node Definition: Face + +This node defines one triangular face of a listening-plane heat map. + +Node name: `Face` + +The child list (Table XX) contains a list of the following nodes: ##### Table XX — *Face Node Childs* -| Child Node | Allowed Count | Description | -| ------------------------------- | ------------- | ---------------------------------------------- | -| Point | [Vector3](#user-content-attrtype-vector3) | | The cordinate of the measurement. | -| Point | [Vector3](#user-content-attrtype-vector3) | | The cordinate of the measurement. | -| Point | [Vector3](#user-content-attrtype-vector3) | | The cordinate of the measurement. | -| Color | [CIE Color](#user-content-attrtype-ciecolor) | | Color used represent the amplitude value a the point.| +| Child Node | Allowed Count | Description | +| ------------------------------------------- | ------------- | -------------------------------------------- | +| [Vertex](#node-definition-vertex) | 3 | The three vertices of the triangular face. | +| [Color](#node-definition-color) | 1 | The face color used to represent the value. | -#### Node Definition: ListeningPlaneResults +## Node Definition: Vertex -##### Table XX — *ListeningPlaneResults Node Childs* +This node defines a 3D vertex used by a listening-plane heat-map face. -| Child Node | Description | -| ------------------------------------------------- | ------------------------------------------------ | -| [Frequency](#user-content-attrtype-float) | Reports the frequency of the calculated results in Hz. | -| [Geometries](#node-definition-geometries) | A list of geometrical representation objects that are part of the listening plane at the specified frequency. | -| [Classing](#node-definition-class) | The Class this frequency geometry belongs to. | -| AmplitudeValues | A list of measurement points and amplitude values.| +Node name: `Vertex` -##### Table XX — *AmplitudeValues Node Attributes* +The defined Vertex Node Value Types are specified in Table XX. -| Attribute Name | Attribute Value Type | Default Value when Optional | Description | -| -------------- | ------------------------------------- | --------------------------- | ---------------------------------- | -| Point | [Vector3](#user-content-attrtype-vector3) | | The cordinate of the measurement. | -| Amplitude | [Float](#user-content-attrtype-float) | | Amplitude of the measurement | -| Units | [String](#user-content-attrtype-string) | | Measurement unit. DBZ, dB, DBSPL, dBA, dBC| -| Color | [CIE Color](#user-content-attrtype-ciecolor) | | Color used represent the amplitude value a the point.| +##### Table XX — *Vertex Node Value Types* + +| Value Type | Default Value When Missing | Description | +| --------------------------------------- | -------------------------- | -------------------------------------- | +| [Vector3](#user-content-attrtype-vector3) | Not Optional | The vertex position in millimeters. | + +## Node Definition: Color + +This node defines a CIE color used by a listening-plane heat-map face. + +Node name: `Color` + +The defined Color Node Value Types are specified in Table XX. + +##### Table XX — *Color Node Value Types* + +| Value Type | Default Value When Missing | Description | +| --------------------------------------- | -------------------------- | -------------------------------------- | +| [CIE Color](#user-content-attrtype-ciecolor) | Not Optional | The face color used to represent the value. | + +EXAMPLE An example of a node definition is shown below: +```xml + + + + 0,0,0 + 11800,0,0 + 11800,-31600,0 + 0.314303,0.328065,87.699166 + + + 0,0,0 + 11800,-31600,0 + 0,-31600,0 + 0.314303,0.328065,87.699166 + + + +``` EXAMPLE An example of a node definition is shown below: @@ -1899,4 +1954,3 @@ UUIDs are randomly generated numbers which are, practically speaking, unique and One of the most important aspects of UUIDs in MVR is that they are persistent. A UUID should identify an item throughout its entire life cycle. This means that if a document is exported, then objects should have the same UUID every time an export is performed. One use case for UUIDs is importing or merging MVRs into an existing document. This is one reason that persistent UUIDs are valuable. If you export an MVR from one program, open it in another, and make modifications, then you may want to incorporate those changes into the original document. By cross referencing UUIDs, you can avoid creating duplicate objects and instead update existing ones. UUIDs are also used inside of the MVR file format as a form of reference. For example, a symbol instance shall refer to a symbol definition. Because the symbol definition is given a UUID, the symbol instance can reference its symbol through the use of this UUID. - From ef173291c9d09f3772624228a773c2ddb5b86290 Mon Sep 17 00:00:00 2001 From: Petr Vanek Date: Thu, 11 Jun 2026 20:35:35 +0200 Subject: [PATCH 17/18] Remove old ListeningPlane example --- mvr-spec.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/mvr-spec.md b/mvr-spec.md index c6e67ae1..7e50c863 100644 --- a/mvr-spec.md +++ b/mvr-spec.md @@ -938,14 +938,6 @@ EXAMPLE An example of a node definition is shown below: ``` - -EXAMPLE An example of a node definition is shown below: -```xml - - {0.158127,-0.987419,0.000000}{0.987419,0.158127,0.000000}{0.000000,0.000000,1.000000}{6020.939200,2838.588955,4978.134459} - -``` - ## Node Definition: Speaker This node defines a Speaker object. The defined Speaker Node Attributes are specified in Table XX. From c496c7eeadeda19b29ba617c44e36843fd385f0f Mon Sep 17 00:00:00 2001 From: Kevin Linzey <33553205+klinzey@users.noreply.github.com> Date: Wed, 17 Jun 2026 18:09:36 -0400 Subject: [PATCH 18/18] Refine ListeningPlaneHeatMap and Face node definitions Updated tables to include attribute value types and added Units attribute to ListeningPlaneHeatMap. --- mvr-spec.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/mvr-spec.md b/mvr-spec.md index 7e50c863..9bd5fd1d 100644 --- a/mvr-spec.md +++ b/mvr-spec.md @@ -848,10 +848,10 @@ The child list (Table XX) contains a list of the following nodes: ##### Table XX — *ListeningPlaneHeatMaps Node Childs* -| Child Node | Allowed Count | Description | -| ------------------------------------------------------------- | ------------- | --------------------------------------------------------------- | -| [ListeningPlaneHeatMap](#node-definition-listeningplaneheatmap) | 1 or more | A heat map for a specific frequency. | - +| Child Node | Allowed Count | Attribute Value Type | Description | +| ------------------------------------------------------------- | ------------- | -----------------------------------------------| -------------------------------------- | +| [ListeningPlaneHeatMap](#node-definition-listeningplaneheatmap) | 1 or more | | A heat map for a specific frequency. | +| [Classing](#node-definition-class) | 0 or 1 | [UUID](#user-content-attrtype-uuid) | The Class the object belongs to. | ## Node Definition: ListeningPlaneHeatMap @@ -864,6 +864,7 @@ Node name: `ListeningPlaneHeatMap` | Attribute Name | Attribute Value Type | Default Value when Optional | Description | | -------------- | --------------------------------------- | --------------------------- | --------------------------------------------------------- | | Frequency | [Float](#user-content-attrtype-float) | Not Optional | Reports the frequency of the calculated results in Hz. | +| Units | [Enum](#user-content-attrtype-enum) | Not Optional | Measurement units. DBZ, dB, dBSPL, dBA, dBC | The child list (Table XX) contains a list of the following nodes: @@ -880,6 +881,12 @@ This node defines one triangular face of a listening-plane heat map. Node name: `Face` +##### Table XX — *Face Node Attributes* + +| Attribute Name | Attribute Value Type | Default Value when Optional | Description | +| -------------- | --------------------------------------- | --------------------------- | --------------------------------------------------------- | +| Amplitude | [Float](#user-content-attrtype-float) | 0 | Relative volume level represented by this face. | + The child list (Table XX) contains a list of the following nodes: ##### Table XX — *Face Node Childs* @@ -921,7 +928,8 @@ The defined Color Node Value Types are specified in Table XX. EXAMPLE An example of a node definition is shown below: ```xml - + + E61F2E44-373C-491C-8D6A-316295DE9B6A 0,0,0 11800,0,0