Mach1 Spatial SDK
Loading...
Searching...
No Matches
VectorFormats.h
1// Mach1 Spatial SDK
2// Copyright © 2017-2022 Mach1. All rights reserved.
3//
4// References:
5//
6
7#pragma once
8
9#include "Mach1TranscodeConstants.h"
10
11/*
12 * Description of matrices
13 * - Inputs are rows
14 * - Outputs are columns
15 *
16 * I1 -> | I1 | I2 | I3 | I4 |
17 * I2 -> | I1 | I2 | I3 | I4 |
18 * I3 -> | I1 | I2 | I3 | I4 |
19 * ↓ ↓ ↓ ↓
20 * O1 O2 O3 O4
21 */
22
23/*
24 * Naming Conventions:
25 * - `_2` = Indicates an additional 2 channels of static or non-diegetic audio, or in this case stereo
26 * - `Pairs` = Indicates the spatial audio files are already doubled in sets of binauralized stereo files
27 * - `_SIM` = Indicates the soundfield is shrunken to a spherical projection to undiverge the input sources
28 * to make use of all the output channels and simulating a more realistic transcode
29 */
30
31namespace Mach1TranscodeConstants {
33 public:
34 static std::vector<Mach1TranscodeMatrix> getData() {
35 return {
36 {"1.0", "M1Spatial-4", {
37 Mach1TranscodeChannel::Coeffs({0.353553f, 0.353553f, 0.353553f, 0.353553f}),
38 }},
39 {"M1Spatial-4", "1.0", {
40 Mach1TranscodeChannel::Coeffs({0.353553f}),
41 Mach1TranscodeChannel::Coeffs({0.353553f}),
42 Mach1TranscodeChannel::Coeffs({0.353553f}),
43 Mach1TranscodeChannel::Coeffs({0.353553f}),
44 }},
45 {"M1Spatial-4", "M1Spatial-4", // AKA M1Horizon
46 {
47 Mach1TranscodeChannel::Coeffs({1, 0, 0, 0}),
48 Mach1TranscodeChannel::Coeffs({0, 1, 0, 0}),
49 Mach1TranscodeChannel::Coeffs({0, 0, 1, 0}),
50 Mach1TranscodeChannel::Coeffs({0, 0, 0, 1}),
51 }},
52 {"M1Spatial-4", "M1HorizonPairs", // AKA Quad-Binaural
53 {
54 Mach1TranscodeChannel::Coeffs({1, 0, 0, 0, 0, 0, 0, 1}),
55 Mach1TranscodeChannel::Coeffs({0, 1, 1, 0, 0, 0, 0, 0}),
56 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 1, 1, 0}),
57 Mach1TranscodeChannel::Coeffs({0, 0, 0, 1, 1, 0, 0, 0}),
58 }},
59 {"M1HorizonPairs", "M1Spatial-4", // AKA Quad-Binaural
60 {
61 Mach1TranscodeChannel::Coeffs({0.707106f, 0, 0, 0}),
62 Mach1TranscodeChannel::Coeffs({0, 0.707106f, 0, 0}),
63 Mach1TranscodeChannel::Coeffs({0, 0.707106f, 0, 0}),
64 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0.707106f}),
65 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0.707106f}),
66 Mach1TranscodeChannel::Coeffs({0, 0, 0.707106f, 0}),
67 Mach1TranscodeChannel::Coeffs({0, 0, 0.707106f, 0}),
68 Mach1TranscodeChannel::Coeffs({0.707106f, 0, 0, 0}),
69 }},
70 {"M1Spatial-4", "M1Spatial-4_2", {
71 Mach1TranscodeChannel::Coeffs({1, 0, 0, 0, 0, 0}),
72 Mach1TranscodeChannel::Coeffs({0, 1, 0, 0, 0, 0}),
73 Mach1TranscodeChannel::Coeffs({0, 0, 1, 0, 0, 0}),
74 Mach1TranscodeChannel::Coeffs({0, 0, 0, 1, 0, 0}),
75 }},
76 {"M1Spatial-4_2", "M1Spatial-4", {
77 Mach1TranscodeChannel::Coeffs({1, 0, 0, 1}),
78 Mach1TranscodeChannel::Coeffs({0, 1, 0, 0}),
79 Mach1TranscodeChannel::Coeffs({0, 0, 1, 0}),
80 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0}),
81 Mach1TranscodeChannel::Coeffs({0.25f, 0.25f, 0.25f, 0.25f}),
82 Mach1TranscodeChannel::Coeffs({0.25f, 0.25f, 0.25f, 0.25f}),
83 }},
84 {"M1Spatial-4", "M1Spatial-8", {
85 Mach1TranscodeChannel::Coeffs({0.707106f, 0, 0, 0, 0.707106f, 0, 0, 0}),
86 Mach1TranscodeChannel::Coeffs({0, 0.707106f, 0, 0, 0, 0.707106f, 0, 0}),
87 Mach1TranscodeChannel::Coeffs({0, 0, 0.707106f, 0, 0, 0, 0.707106f, 0}),
88 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0.707106f, 0, 0, 0, 0.707106f}),
89 }},
90 {"M1Spatial-8", "M1Spatial-4", {
91 Mach1TranscodeChannel::Coeffs({0.707106f, 0, 0, 0}),
92 Mach1TranscodeChannel::Coeffs({0, 0.707106f, 0, 0}),
93 Mach1TranscodeChannel::Coeffs({0, 0, 0.707106f, 0}),
94 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0.707106f}),
95 Mach1TranscodeChannel::Coeffs({0.707106f, 0, 0, 0}),
96 Mach1TranscodeChannel::Coeffs({0, 0.707106f, 0, 0}),
97 Mach1TranscodeChannel::Coeffs({0, 0, 0.707106f, 0}),
98 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0.707106f}),
99 }},
100 {"M1Spatial-8", "M1Spatial-8", {
101 Mach1TranscodeChannel::Coeffs({1, 0, 0, 0, 0, 0, 0, 0}),
102 Mach1TranscodeChannel::Coeffs({0, 1, 0, 0, 0, 0, 0, 0}),
103 Mach1TranscodeChannel::Coeffs({0, 0, 1, 0, 0, 0, 0, 0}),
104 Mach1TranscodeChannel::Coeffs({0, 0, 0, 1, 0, 0, 0, 0}),
105 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 1, 0, 0, 0}),
106 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 1, 0, 0}),
107 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 1, 0}),
108 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 1}),
109 }},
110 {"M1Spatial-6", "M1Spatial-8", {
111 Mach1TranscodeChannel::Coeffs({0.353553f, 0.353553f, 0, 0, 0.353553f, 0.353553f, 0, 0}),
112 Mach1TranscodeChannel::Coeffs({0.353553f, 0, 0.353553f, 0, 0.353553f, 0, 0.353553f, 0}),
113 Mach1TranscodeChannel::Coeffs({0, 0, 0.353553f, 0.353553f, 0, 0, 0.353553f, 0.353553f}),
114 Mach1TranscodeChannel::Coeffs({0, 0.353553f, 0, 0.353553f, 0, 0.353553f, 0, 0.353553f}),
115 Mach1TranscodeChannel::Coeffs({0.353553f, 0.353553f, 0.353553f, 0.353553f, 0, 0, 0, 0}),
116 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0.353553f, 0.353553f, 0.353553f, 0.353553f}),
117 }},
118 {"M1Spatial-8", "M1Spatial-6", {
119 Mach1TranscodeChannel::Coeffs({0.471404f, 0.471404f, 0, 0, 0.471404f, 0}),
120 Mach1TranscodeChannel::Coeffs({0.471404f, 0, 0, 0.471404f, 0.471404f, 0}),
121 Mach1TranscodeChannel::Coeffs({0, 0.471404f, 0.471404f, 0, 0.471404f, 0}),
122 Mach1TranscodeChannel::Coeffs({0, 0, 0.471404f, 0.471404f, 0.471404f, 0}),
123 Mach1TranscodeChannel::Coeffs({0.471404f, 0.471404f, 0, 0, 0, 0.471404f}),
124 Mach1TranscodeChannel::Coeffs({0.471404f, 0, 0, 0.471404f, 0, 0.471404f}),
125 Mach1TranscodeChannel::Coeffs({0, 0.471404f, 0.471404f, 0, 0, 0.471404f}),
126 Mach1TranscodeChannel::Coeffs({0, 0, 0.471404f, 0.471404f, 0, 0.471404f}),
127 }},
128 {"M1Spatial-8", "M1Spatial-8_2", {
129 Mach1TranscodeChannel::Coeffs({1, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
130 Mach1TranscodeChannel::Coeffs({0, 1, 0, 0, 0, 0, 0, 0, 0, 0}),
131 Mach1TranscodeChannel::Coeffs({0, 0, 1, 0, 0, 0, 0, 0, 0, 0}),
132 Mach1TranscodeChannel::Coeffs({0, 0, 0, 1, 0, 0, 0, 0, 0, 0}),
133 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 1, 0, 0, 0, 0, 0}),
134 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 1, 0, 0, 0, 0}),
135 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 1, 0, 0, 0}),
136 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 1, 0, 0}),
137 }},
138 {"M1Spatial-8_2", "M1Spatial-8",
139 // This downfolds headlocked stereo to headlocked mono
140 {
141 Mach1TranscodeChannel::Coeffs({1, 0, 0, 0, 0, 0, 0, 0}),
142 Mach1TranscodeChannel::Coeffs({0, 1, 0, 0, 0, 0, 0, 0}),
143 Mach1TranscodeChannel::Coeffs({0, 0, 1, 0, 0, 0, 0, 0}),
144 Mach1TranscodeChannel::Coeffs({0, 0, 0, 1, 0, 0, 0, 0}),
145 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 1, 0, 0, 0}),
146 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 1, 0, 0}),
147 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 1, 0}),
148 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 1}),
149 Mach1TranscodeChannel::Coeffs({0.125f, 0.125f, 0.125f, 0.125f, 0.125f, 0.125f, 0.125f, 0.125f}),
150 Mach1TranscodeChannel::Coeffs({0.125f, 0.125f, 0.125f, 0.125f, 0.125f, 0.125f, 0.125f, 0.125f}),
151 }},
152 {"M1Spatial-8", "M1Spatial-12", {
153 Mach1TranscodeChannel::Coeffs({1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
154 Mach1TranscodeChannel::Coeffs({0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
155 Mach1TranscodeChannel::Coeffs({0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
156 Mach1TranscodeChannel::Coeffs({0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}),
157 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}),
158 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}),
159 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}),
160 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}),
161 }},
162 {"M1Spatial-12", "M1Spatial-8", {
163 Mach1TranscodeChannel::Coeffs({1, 0, 0, 0, 0, 0, 0, 0}),
164 Mach1TranscodeChannel::Coeffs({0, 1, 0, 0, 0, 0, 0, 0}),
165 Mach1TranscodeChannel::Coeffs({0, 0, 1, 0, 0, 0, 0, 0}),
166 Mach1TranscodeChannel::Coeffs({0, 0, 0, 1, 0, 0, 0, 0}),
167 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 1, 0, 0, 0}),
168 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 1, 0, 0}),
169 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 1, 0}),
170 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 1}),
171 Mach1TranscodeChannel::Coeffs({0.353553f, 0.353553f, 0, 0, 0.353553f, 0.353553f, 0, 0}),
172 Mach1TranscodeChannel::Coeffs({0, 0.353553f, 0, 0.353553f, 0, 0.353553f, 0, 0.353553f}),
173 Mach1TranscodeChannel::Coeffs({0, 0, 0.353553f, 0.353553f, 0, 0, 0.353553f, 0.353553f}),
174 Mach1TranscodeChannel::Coeffs({0.353553f, 0, 0.353553f, 0, 0.353553f, 0, 0.353553f, 0}),
175 }},
176 {"M1Spatial-12", "M1Spatial-14", {
177 Mach1TranscodeChannel::Coeffs({1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
178 Mach1TranscodeChannel::Coeffs({0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
179 Mach1TranscodeChannel::Coeffs({0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
180 Mach1TranscodeChannel::Coeffs({0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
181 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
182 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}),
183 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}),
184 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}),
185 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}),
186 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}),
187 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}),
188 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}),
189 }},
190 {"M1Spatial-14", "M1Spatial-12", {
191 Mach1TranscodeChannel::Coeffs({1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
192 Mach1TranscodeChannel::Coeffs({0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
193 Mach1TranscodeChannel::Coeffs({0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
194 Mach1TranscodeChannel::Coeffs({0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}),
195 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}),
196 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}),
197 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}),
198 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}),
199 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}),
200 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}),
201 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}),
202 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}),
203 Mach1TranscodeChannel::Coeffs({0.353553f, 0.353553f, 0.353553f, 0.353553f, 0, 0, 0, 0, 0, 0, 0, 0}),
204 Mach1TranscodeChannel::Coeffs({0, 0, 0, 0, 0.353553f, 0.353553f, 0.353553f, 0.353553f, 0, 0, 0, 0}),
205 }},
206 };
207 }
208};
209}; // namespace Mach1TranscodeConstants
Definition VectorFormats.h:32