Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft for Audio Support #179

Open
wants to merge 9 commits into
base: next
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions gdtf-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -1214,6 +1214,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. |


</div>
Expand Down Expand Up @@ -1784,6 +1785,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 `<Speaker>`). The currently
defined XML attributes of a speaker geometry are specified in
[table 55](#user-content-table-XX ).


<div id="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. |



</div>

The magnet geometry has the same children types as the geometry
Expand Down
100 changes: 100 additions & 0 deletions proposal/audio-support/proposal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# 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.

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 |


### 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

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.

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 |

## 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.
Loading