sofar 1.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- docs/Makefile +20 -0
- docs/api_reference.rst +20 -0
- docs/conf.py +167 -0
- docs/contributing.rst +1 -0
- docs/history.rst +1 -0
- docs/index.rst +4 -0
- docs/make.bat +36 -0
- docs/readme.rst +1 -0
- docs/resources/conventions.py +162 -0
- docs/resources/working_with_sofa_HRIR_lateral.png +0 -0
- docs/resources/working_with_sofa_source_horizontal.png +0 -0
- docs/resources/working_with_sofa_source_lateral.png +0 -0
- docs/sofar.rst +82 -0
- sofar/__init__.py +28 -0
- sofar/io.py +427 -0
- sofar/sofa.py +1835 -0
- sofar/sofa_conventions/VERSION +1 -0
- sofar/sofa_conventions/conventions/AnnotatedEmitterAudio_0.2.csv +46 -0
- sofar/sofa_conventions/conventions/AnnotatedEmitterAudio_0.2.json +353 -0
- sofar/sofa_conventions/conventions/AnnotatedReceiverAudio_0.2.csv +46 -0
- sofar/sofa_conventions/conventions/AnnotatedReceiverAudio_0.2.json +353 -0
- sofar/sofa_conventions/conventions/FreeFieldDirectivityTF_1.1.csv +59 -0
- sofar/sofa_conventions/conventions/FreeFieldDirectivityTF_1.1.json +444 -0
- sofar/sofa_conventions/conventions/FreeFieldHRIR_1.0.csv +43 -0
- sofar/sofa_conventions/conventions/FreeFieldHRIR_1.0.json +333 -0
- sofar/sofa_conventions/conventions/FreeFieldHRTF_1.0.csv +44 -0
- sofar/sofa_conventions/conventions/FreeFieldHRTF_1.0.json +340 -0
- sofar/sofa_conventions/conventions/GeneralFIR-E_2.0.csv +37 -0
- sofar/sofa_conventions/conventions/GeneralFIR-E_2.0.json +270 -0
- sofar/sofa_conventions/conventions/GeneralFIR_1.0.csv +40 -0
- sofar/sofa_conventions/conventions/GeneralFIR_1.0.json +295 -0
- sofar/sofa_conventions/conventions/GeneralSOS_1.0.csv +40 -0
- sofar/sofa_conventions/conventions/GeneralSOS_1.0.json +306 -0
- sofar/sofa_conventions/conventions/GeneralTF-E_1.0.csv +38 -0
- sofar/sofa_conventions/conventions/GeneralTF-E_1.0.json +277 -0
- sofar/sofa_conventions/conventions/GeneralTF_1.0.csv +38 -0
- sofar/sofa_conventions/conventions/GeneralTF_1.0.json +277 -0
- sofar/sofa_conventions/conventions/GeneralTF_2.0.csv +38 -0
- sofar/sofa_conventions/conventions/GeneralTF_2.0.json +277 -0
- sofar/sofa_conventions/conventions/SimpleFreeFieldHRIR_1.0.csv +47 -0
- sofar/sofa_conventions/conventions/SimpleFreeFieldHRIR_1.0.json +369 -0
- sofar/sofa_conventions/conventions/SimpleFreeFieldHRSOS_1.0.csv +43 -0
- sofar/sofa_conventions/conventions/SimpleFreeFieldHRSOS_1.0.json +349 -0
- sofar/sofa_conventions/conventions/SimpleFreeFieldHRTF_1.0.csv +44 -0
- sofar/sofa_conventions/conventions/SimpleFreeFieldHRTF_1.0.json +340 -0
- sofar/sofa_conventions/conventions/SimpleFreeFieldSOS_1.0.csv +43 -0
- sofar/sofa_conventions/conventions/SimpleFreeFieldSOS_1.0.json +349 -0
- sofar/sofa_conventions/conventions/SimpleHeadphoneIR_1.0.csv +51 -0
- sofar/sofa_conventions/conventions/SimpleHeadphoneIR_1.0.json +396 -0
- sofar/sofa_conventions/conventions/SingleRoomMIMOSRIR_1.0.csv +78 -0
- sofar/sofa_conventions/conventions/SingleRoomMIMOSRIR_1.0.json +601 -0
- sofar/sofa_conventions/conventions/SingleRoomSRIR_1.0.csv +78 -0
- sofar/sofa_conventions/conventions/SingleRoomSRIR_1.0.json +601 -0
- sofar/sofa_conventions/conventions/deprecated/AnnotatedEmitterAudio_0.1.csv +46 -0
- sofar/sofa_conventions/conventions/deprecated/AnnotatedEmitterAudio_0.1.json +351 -0
- sofar/sofa_conventions/conventions/deprecated/AnnotatedReceiverAudio_0.1.csv +46 -0
- sofar/sofa_conventions/conventions/deprecated/AnnotatedReceiverAudio_0.1.json +351 -0
- sofar/sofa_conventions/conventions/deprecated/FreeFieldDirectivityTF_1.0.csv +58 -0
- sofar/sofa_conventions/conventions/deprecated/FreeFieldDirectivityTF_1.0.json +437 -0
- sofar/sofa_conventions/conventions/deprecated/GeneralFIRE_1.0.csv +37 -0
- sofar/sofa_conventions/conventions/deprecated/GeneralFIRE_1.0.json +270 -0
- sofar/sofa_conventions/conventions/deprecated/MultiSpeakerBRIR_0.3.csv +48 -0
- sofar/sofa_conventions/conventions/deprecated/MultiSpeakerBRIR_0.3.json +376 -0
- sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldHRIR_0.4.csv +43 -0
- sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldHRIR_0.4.json +333 -0
- sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_0.4.csv +44 -0
- sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_0.4.json +340 -0
- sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_1.0.csv +44 -0
- sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_1.0.json +340 -0
- sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.1.csv +51 -0
- sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.1.json +396 -0
- sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.2.csv +51 -0
- sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.2.json +396 -0
- sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.2.csv +47 -0
- sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.2.json +360 -0
- sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.3.csv +47 -0
- sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.3.json +360 -0
- sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.1.csv +47 -0
- sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.1.json +366 -0
- sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.2.csv +51 -0
- sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.2.json +397 -0
- sofar/sofa_conventions/rules/deprecations.json +13 -0
- sofar/sofa_conventions/rules/rules.json +819 -0
- sofar/sofa_conventions/rules/unit_aliases.json +11 -0
- sofar/sofa_conventions/rules/upgrade.json +226 -0
- sofar/sofa_conventions/write_upgrade_rules.py +139 -0
- sofar/sofa_conventions/write_verification_data.py +313 -0
- sofar/sofa_conventions/write_verification_rules.py +356 -0
- sofar/sofastream.py +301 -0
- sofar/update_conventions.py +449 -0
- sofar/utils.py +316 -0
- sofar-1.2.1.dist-info/LICENSE +22 -0
- sofar-1.2.1.dist-info/METADATA +136 -0
- sofar-1.2.1.dist-info/RECORD +105 -0
- sofar-1.2.1.dist-info/WHEEL +5 -0
- sofar-1.2.1.dist-info/top_level.txt +3 -0
- tests/__init__.py +0 -0
- tests/conftest.py +27 -0
- tests/test_deprecations.py +19 -0
- tests/test_io.py +349 -0
- tests/test_sofa.py +353 -0
- tests/test_sofa_upgrade_conventions.py +111 -0
- tests/test_sofa_verify.py +480 -0
- tests/test_sofastream.py +127 -0
- tests/test_utils.py +250 -0
@@ -0,0 +1,295 @@
|
|
1
|
+
{
|
2
|
+
"GLOBAL:Conventions": {
|
3
|
+
"default": "SOFA",
|
4
|
+
"flags": "rm",
|
5
|
+
"dimensions": null,
|
6
|
+
"type": "attribute",
|
7
|
+
"comment": ""
|
8
|
+
},
|
9
|
+
"GLOBAL:Version": {
|
10
|
+
"default": "2.1",
|
11
|
+
"flags": "rm",
|
12
|
+
"dimensions": null,
|
13
|
+
"type": "attribute",
|
14
|
+
"comment": ""
|
15
|
+
},
|
16
|
+
"GLOBAL:SOFAConventions": {
|
17
|
+
"default": "GeneralFIR",
|
18
|
+
"flags": "rm",
|
19
|
+
"dimensions": null,
|
20
|
+
"type": "attribute",
|
21
|
+
"comment": "This conventions stores IRs for general purposes, i.e., only the mandatory, SOFA general metadata are pre-defined"
|
22
|
+
},
|
23
|
+
"GLOBAL:SOFAConventionsVersion": {
|
24
|
+
"default": "1.0",
|
25
|
+
"flags": "rm",
|
26
|
+
"dimensions": null,
|
27
|
+
"type": "attribute",
|
28
|
+
"comment": ""
|
29
|
+
},
|
30
|
+
"GLOBAL:APIName": {
|
31
|
+
"default": "",
|
32
|
+
"flags": "rm",
|
33
|
+
"dimensions": null,
|
34
|
+
"type": "attribute",
|
35
|
+
"comment": ""
|
36
|
+
},
|
37
|
+
"GLOBAL:APIVersion": {
|
38
|
+
"default": "",
|
39
|
+
"flags": "rm",
|
40
|
+
"dimensions": null,
|
41
|
+
"type": "attribute",
|
42
|
+
"comment": ""
|
43
|
+
},
|
44
|
+
"GLOBAL:ApplicationName": {
|
45
|
+
"default": "",
|
46
|
+
"flags": null,
|
47
|
+
"dimensions": null,
|
48
|
+
"type": "attribute",
|
49
|
+
"comment": ""
|
50
|
+
},
|
51
|
+
"GLOBAL:ApplicationVersion": {
|
52
|
+
"default": "",
|
53
|
+
"flags": null,
|
54
|
+
"dimensions": null,
|
55
|
+
"type": "attribute",
|
56
|
+
"comment": ""
|
57
|
+
},
|
58
|
+
"GLOBAL:AuthorContact": {
|
59
|
+
"default": "",
|
60
|
+
"flags": "m",
|
61
|
+
"dimensions": null,
|
62
|
+
"type": "attribute",
|
63
|
+
"comment": ""
|
64
|
+
},
|
65
|
+
"GLOBAL:Comment": {
|
66
|
+
"default": "",
|
67
|
+
"flags": "m",
|
68
|
+
"dimensions": null,
|
69
|
+
"type": "attribute",
|
70
|
+
"comment": ""
|
71
|
+
},
|
72
|
+
"GLOBAL:DataType": {
|
73
|
+
"default": "FIR",
|
74
|
+
"flags": "rm",
|
75
|
+
"dimensions": null,
|
76
|
+
"type": "attribute",
|
77
|
+
"comment": "We store IRs here"
|
78
|
+
},
|
79
|
+
"GLOBAL:History": {
|
80
|
+
"default": "",
|
81
|
+
"flags": null,
|
82
|
+
"dimensions": null,
|
83
|
+
"type": "attribute",
|
84
|
+
"comment": ""
|
85
|
+
},
|
86
|
+
"GLOBAL:License": {
|
87
|
+
"default": "No license provided, ask the author for permission",
|
88
|
+
"flags": "m",
|
89
|
+
"dimensions": null,
|
90
|
+
"type": "attribute",
|
91
|
+
"comment": ""
|
92
|
+
},
|
93
|
+
"GLOBAL:Organization": {
|
94
|
+
"default": "",
|
95
|
+
"flags": "m",
|
96
|
+
"dimensions": null,
|
97
|
+
"type": "attribute",
|
98
|
+
"comment": ""
|
99
|
+
},
|
100
|
+
"GLOBAL:References": {
|
101
|
+
"default": "",
|
102
|
+
"flags": null,
|
103
|
+
"dimensions": null,
|
104
|
+
"type": "attribute",
|
105
|
+
"comment": ""
|
106
|
+
},
|
107
|
+
"GLOBAL:RoomType": {
|
108
|
+
"default": "free field",
|
109
|
+
"flags": "m",
|
110
|
+
"dimensions": null,
|
111
|
+
"type": "attribute",
|
112
|
+
"comment": "The room information can be arbitrary"
|
113
|
+
},
|
114
|
+
"GLOBAL:Origin": {
|
115
|
+
"default": "",
|
116
|
+
"flags": null,
|
117
|
+
"dimensions": null,
|
118
|
+
"type": "attribute",
|
119
|
+
"comment": ""
|
120
|
+
},
|
121
|
+
"GLOBAL:DateCreated": {
|
122
|
+
"default": "",
|
123
|
+
"flags": "m",
|
124
|
+
"dimensions": null,
|
125
|
+
"type": "attribute",
|
126
|
+
"comment": ""
|
127
|
+
},
|
128
|
+
"GLOBAL:DateModified": {
|
129
|
+
"default": "",
|
130
|
+
"flags": "m",
|
131
|
+
"dimensions": null,
|
132
|
+
"type": "attribute",
|
133
|
+
"comment": ""
|
134
|
+
},
|
135
|
+
"GLOBAL:Title": {
|
136
|
+
"default": "",
|
137
|
+
"flags": "m",
|
138
|
+
"dimensions": null,
|
139
|
+
"type": "attribute",
|
140
|
+
"comment": ""
|
141
|
+
},
|
142
|
+
"ListenerPosition": {
|
143
|
+
"default": [
|
144
|
+
0,
|
145
|
+
0,
|
146
|
+
0
|
147
|
+
],
|
148
|
+
"flags": "m",
|
149
|
+
"dimensions": "IC, MC",
|
150
|
+
"type": "double",
|
151
|
+
"comment": ""
|
152
|
+
},
|
153
|
+
"ListenerPosition:Type": {
|
154
|
+
"default": "cartesian",
|
155
|
+
"flags": "m",
|
156
|
+
"dimensions": null,
|
157
|
+
"type": "attribute",
|
158
|
+
"comment": ""
|
159
|
+
},
|
160
|
+
"ListenerPosition:Units": {
|
161
|
+
"default": "metre",
|
162
|
+
"flags": "m",
|
163
|
+
"dimensions": null,
|
164
|
+
"type": "attribute",
|
165
|
+
"comment": ""
|
166
|
+
},
|
167
|
+
"ReceiverPosition": {
|
168
|
+
"default": [
|
169
|
+
0,
|
170
|
+
0,
|
171
|
+
0
|
172
|
+
],
|
173
|
+
"flags": "m",
|
174
|
+
"dimensions": "IC, RC, RCM",
|
175
|
+
"type": "double",
|
176
|
+
"comment": ""
|
177
|
+
},
|
178
|
+
"ReceiverPosition:Type": {
|
179
|
+
"default": "cartesian",
|
180
|
+
"flags": "m",
|
181
|
+
"dimensions": null,
|
182
|
+
"type": "attribute",
|
183
|
+
"comment": ""
|
184
|
+
},
|
185
|
+
"ReceiverPosition:Units": {
|
186
|
+
"default": "metre",
|
187
|
+
"flags": "m",
|
188
|
+
"dimensions": null,
|
189
|
+
"type": "attribute",
|
190
|
+
"comment": ""
|
191
|
+
},
|
192
|
+
"SourcePosition": {
|
193
|
+
"default": [
|
194
|
+
0,
|
195
|
+
0,
|
196
|
+
1
|
197
|
+
],
|
198
|
+
"flags": "m",
|
199
|
+
"dimensions": "IC, MC",
|
200
|
+
"type": "double",
|
201
|
+
"comment": "In order to store different directions/positions around the listener, SourcePosition is assumed to vary"
|
202
|
+
},
|
203
|
+
"SourcePosition:Type": {
|
204
|
+
"default": "spherical",
|
205
|
+
"flags": "m",
|
206
|
+
"dimensions": null,
|
207
|
+
"type": "attribute",
|
208
|
+
"comment": ""
|
209
|
+
},
|
210
|
+
"SourcePosition:Units": {
|
211
|
+
"default": "degree, degree, metre",
|
212
|
+
"flags": "m",
|
213
|
+
"dimensions": null,
|
214
|
+
"type": "attribute",
|
215
|
+
"comment": ""
|
216
|
+
},
|
217
|
+
"EmitterPosition": {
|
218
|
+
"default": [
|
219
|
+
0,
|
220
|
+
0,
|
221
|
+
0
|
222
|
+
],
|
223
|
+
"flags": "m",
|
224
|
+
"dimensions": "eCI, eCM",
|
225
|
+
"type": "double",
|
226
|
+
"comment": ""
|
227
|
+
},
|
228
|
+
"EmitterPosition:Type": {
|
229
|
+
"default": "cartesian",
|
230
|
+
"flags": "m",
|
231
|
+
"dimensions": null,
|
232
|
+
"type": "attribute",
|
233
|
+
"comment": ""
|
234
|
+
},
|
235
|
+
"EmitterPosition:Units": {
|
236
|
+
"default": "metre",
|
237
|
+
"flags": "m",
|
238
|
+
"dimensions": null,
|
239
|
+
"type": "attribute",
|
240
|
+
"comment": ""
|
241
|
+
},
|
242
|
+
"ListenerView": {
|
243
|
+
"default": [
|
244
|
+
1,
|
245
|
+
0,
|
246
|
+
0
|
247
|
+
],
|
248
|
+
"flags": null,
|
249
|
+
"dimensions": "IC, MC",
|
250
|
+
"type": "double",
|
251
|
+
"comment": ""
|
252
|
+
},
|
253
|
+
"ListenerView:Type": {
|
254
|
+
"default": "cartesian",
|
255
|
+
"flags": null,
|
256
|
+
"dimensions": null,
|
257
|
+
"type": "attribute",
|
258
|
+
"comment": ""
|
259
|
+
},
|
260
|
+
"ListenerView:Units": {
|
261
|
+
"default": "metre",
|
262
|
+
"flags": null,
|
263
|
+
"dimensions": null,
|
264
|
+
"type": "attribute",
|
265
|
+
"comment": ""
|
266
|
+
},
|
267
|
+
"Data.IR": {
|
268
|
+
"default": 0,
|
269
|
+
"flags": "m",
|
270
|
+
"dimensions": "mrn",
|
271
|
+
"type": "double",
|
272
|
+
"comment": "Impulse responses"
|
273
|
+
},
|
274
|
+
"Data.SamplingRate": {
|
275
|
+
"default": 48000,
|
276
|
+
"flags": "m",
|
277
|
+
"dimensions": "I, M",
|
278
|
+
"type": "double",
|
279
|
+
"comment": "Sampling rate of the samples in Data.IR and Data.Delay"
|
280
|
+
},
|
281
|
+
"Data.SamplingRate:Units": {
|
282
|
+
"default": "hertz",
|
283
|
+
"flags": "m",
|
284
|
+
"dimensions": null,
|
285
|
+
"type": "attribute",
|
286
|
+
"comment": "Unit of the sampling rate"
|
287
|
+
},
|
288
|
+
"Data.Delay": {
|
289
|
+
"default": 0,
|
290
|
+
"flags": "m",
|
291
|
+
"dimensions": "IR, MR",
|
292
|
+
"type": "double",
|
293
|
+
"comment": "Additional delay of each IR (in samples)"
|
294
|
+
}
|
295
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Name Default Flags Dimensions Type Comment
|
2
|
+
GLOBAL:Conventions SOFA rm attribute
|
3
|
+
GLOBAL:Version 2.1 rm attribute
|
4
|
+
GLOBAL:SOFAConventions GeneralSOS rm attribute This conventions follows GeneralFIR but the data is stored as second-order section (SOS) coefficients.
|
5
|
+
GLOBAL:SOFAConventionsVersion 1.0 rm attribute
|
6
|
+
GLOBAL:APIName rm attribute
|
7
|
+
GLOBAL:APIVersion rm attribute
|
8
|
+
GLOBAL:ApplicationName attribute
|
9
|
+
GLOBAL:ApplicationVersion attribute
|
10
|
+
GLOBAL:AuthorContact m attribute
|
11
|
+
GLOBAL:Comment attribute
|
12
|
+
GLOBAL:DataType SOS rm attribute Filters described as second-order section (SOS) coefficients
|
13
|
+
GLOBAL:History attribute
|
14
|
+
GLOBAL:License No license provided, ask the author for permission m attribute
|
15
|
+
GLOBAL:Organization m attribute
|
16
|
+
GLOBAL:References attribute
|
17
|
+
GLOBAL:RoomType free field m attribute The room information can be arbitrary
|
18
|
+
GLOBAL:Origin attribute
|
19
|
+
GLOBAL:DateCreated m attribute
|
20
|
+
GLOBAL:DateModified m attribute
|
21
|
+
GLOBAL:Title m attribute
|
22
|
+
ListenerPosition [0 0 0] m IC, MC double
|
23
|
+
ListenerPosition:Type cartesian m attribute
|
24
|
+
ListenerPosition:Units metre m attribute
|
25
|
+
ListenerView [1 0 0] IC, MC double
|
26
|
+
ListenerView:Type cartesian attribute
|
27
|
+
ListenerView:Units metre attribute
|
28
|
+
ReceiverPosition [0 0 0] m IC, RC, RCM double
|
29
|
+
ReceiverPosition:Type cartesian m attribute
|
30
|
+
ReceiverPosition:Units metre m attribute
|
31
|
+
SourcePosition [0 0 1] m IC, MC double In order to store different directions/positions around the listener, SourcePosition is assumed to vary
|
32
|
+
SourcePosition:Type spherical m attribute
|
33
|
+
SourcePosition:Units degree, degree, metre m attribute
|
34
|
+
EmitterPosition [0 0 0] m eCI, eCM double
|
35
|
+
EmitterPosition:Type cartesian m attribute
|
36
|
+
EmitterPosition:Units metre m attribute
|
37
|
+
Data.SOS permute([0 0 0 1 0 0], [3 1 2]); m mrn double Filter coefficients as SOS coefficients.
|
38
|
+
Data.SamplingRate 48000 m I, M double Sampling rate of the coefficients in Data.SOS and the delay in Data.Delay
|
39
|
+
Data.SamplingRate:Units hertz m attribute Unit of the sampling rate
|
40
|
+
Data.Delay 0 m IR, MR double Broadband delay (in samples resulting from SamplingRate)
|
@@ -0,0 +1,306 @@
|
|
1
|
+
{
|
2
|
+
"GLOBAL:Conventions": {
|
3
|
+
"default": "SOFA",
|
4
|
+
"flags": "rm",
|
5
|
+
"dimensions": null,
|
6
|
+
"type": "attribute",
|
7
|
+
"comment": ""
|
8
|
+
},
|
9
|
+
"GLOBAL:Version": {
|
10
|
+
"default": "2.1",
|
11
|
+
"flags": "rm",
|
12
|
+
"dimensions": null,
|
13
|
+
"type": "attribute",
|
14
|
+
"comment": ""
|
15
|
+
},
|
16
|
+
"GLOBAL:SOFAConventions": {
|
17
|
+
"default": "GeneralSOS",
|
18
|
+
"flags": "rm",
|
19
|
+
"dimensions": null,
|
20
|
+
"type": "attribute",
|
21
|
+
"comment": "This conventions follows GeneralFIR but the data is stored as second-order section (SOS) coefficients."
|
22
|
+
},
|
23
|
+
"GLOBAL:SOFAConventionsVersion": {
|
24
|
+
"default": "1.0",
|
25
|
+
"flags": "rm",
|
26
|
+
"dimensions": null,
|
27
|
+
"type": "attribute",
|
28
|
+
"comment": ""
|
29
|
+
},
|
30
|
+
"GLOBAL:APIName": {
|
31
|
+
"default": "",
|
32
|
+
"flags": "rm",
|
33
|
+
"dimensions": null,
|
34
|
+
"type": "attribute",
|
35
|
+
"comment": ""
|
36
|
+
},
|
37
|
+
"GLOBAL:APIVersion": {
|
38
|
+
"default": "",
|
39
|
+
"flags": "rm",
|
40
|
+
"dimensions": null,
|
41
|
+
"type": "attribute",
|
42
|
+
"comment": ""
|
43
|
+
},
|
44
|
+
"GLOBAL:ApplicationName": {
|
45
|
+
"default": "",
|
46
|
+
"flags": null,
|
47
|
+
"dimensions": null,
|
48
|
+
"type": "attribute",
|
49
|
+
"comment": ""
|
50
|
+
},
|
51
|
+
"GLOBAL:ApplicationVersion": {
|
52
|
+
"default": "",
|
53
|
+
"flags": null,
|
54
|
+
"dimensions": null,
|
55
|
+
"type": "attribute",
|
56
|
+
"comment": ""
|
57
|
+
},
|
58
|
+
"GLOBAL:AuthorContact": {
|
59
|
+
"default": "",
|
60
|
+
"flags": "m",
|
61
|
+
"dimensions": null,
|
62
|
+
"type": "attribute",
|
63
|
+
"comment": ""
|
64
|
+
},
|
65
|
+
"GLOBAL:Comment": {
|
66
|
+
"default": "",
|
67
|
+
"flags": null,
|
68
|
+
"dimensions": null,
|
69
|
+
"type": "attribute",
|
70
|
+
"comment": ""
|
71
|
+
},
|
72
|
+
"GLOBAL:DataType": {
|
73
|
+
"default": "SOS",
|
74
|
+
"flags": "rm",
|
75
|
+
"dimensions": null,
|
76
|
+
"type": "attribute",
|
77
|
+
"comment": "Filters described as second-order section (SOS) coefficients"
|
78
|
+
},
|
79
|
+
"GLOBAL:History": {
|
80
|
+
"default": "",
|
81
|
+
"flags": null,
|
82
|
+
"dimensions": null,
|
83
|
+
"type": "attribute",
|
84
|
+
"comment": ""
|
85
|
+
},
|
86
|
+
"GLOBAL:License": {
|
87
|
+
"default": "No license provided, ask the author for permission",
|
88
|
+
"flags": "m",
|
89
|
+
"dimensions": null,
|
90
|
+
"type": "attribute",
|
91
|
+
"comment": ""
|
92
|
+
},
|
93
|
+
"GLOBAL:Organization": {
|
94
|
+
"default": "",
|
95
|
+
"flags": "m",
|
96
|
+
"dimensions": null,
|
97
|
+
"type": "attribute",
|
98
|
+
"comment": ""
|
99
|
+
},
|
100
|
+
"GLOBAL:References": {
|
101
|
+
"default": "",
|
102
|
+
"flags": null,
|
103
|
+
"dimensions": null,
|
104
|
+
"type": "attribute",
|
105
|
+
"comment": ""
|
106
|
+
},
|
107
|
+
"GLOBAL:RoomType": {
|
108
|
+
"default": "free field",
|
109
|
+
"flags": "m",
|
110
|
+
"dimensions": null,
|
111
|
+
"type": "attribute",
|
112
|
+
"comment": "The room information can be arbitrary"
|
113
|
+
},
|
114
|
+
"GLOBAL:Origin": {
|
115
|
+
"default": "",
|
116
|
+
"flags": null,
|
117
|
+
"dimensions": null,
|
118
|
+
"type": "attribute",
|
119
|
+
"comment": ""
|
120
|
+
},
|
121
|
+
"GLOBAL:DateCreated": {
|
122
|
+
"default": "",
|
123
|
+
"flags": "m",
|
124
|
+
"dimensions": null,
|
125
|
+
"type": "attribute",
|
126
|
+
"comment": ""
|
127
|
+
},
|
128
|
+
"GLOBAL:DateModified": {
|
129
|
+
"default": "",
|
130
|
+
"flags": "m",
|
131
|
+
"dimensions": null,
|
132
|
+
"type": "attribute",
|
133
|
+
"comment": ""
|
134
|
+
},
|
135
|
+
"GLOBAL:Title": {
|
136
|
+
"default": "",
|
137
|
+
"flags": "m",
|
138
|
+
"dimensions": null,
|
139
|
+
"type": "attribute",
|
140
|
+
"comment": ""
|
141
|
+
},
|
142
|
+
"ListenerPosition": {
|
143
|
+
"default": [
|
144
|
+
0,
|
145
|
+
0,
|
146
|
+
0
|
147
|
+
],
|
148
|
+
"flags": "m",
|
149
|
+
"dimensions": "IC, MC",
|
150
|
+
"type": "double",
|
151
|
+
"comment": ""
|
152
|
+
},
|
153
|
+
"ListenerPosition:Type": {
|
154
|
+
"default": "cartesian",
|
155
|
+
"flags": "m",
|
156
|
+
"dimensions": null,
|
157
|
+
"type": "attribute",
|
158
|
+
"comment": ""
|
159
|
+
},
|
160
|
+
"ListenerPosition:Units": {
|
161
|
+
"default": "metre",
|
162
|
+
"flags": "m",
|
163
|
+
"dimensions": null,
|
164
|
+
"type": "attribute",
|
165
|
+
"comment": ""
|
166
|
+
},
|
167
|
+
"ListenerView": {
|
168
|
+
"default": [
|
169
|
+
1,
|
170
|
+
0,
|
171
|
+
0
|
172
|
+
],
|
173
|
+
"flags": null,
|
174
|
+
"dimensions": "IC, MC",
|
175
|
+
"type": "double",
|
176
|
+
"comment": ""
|
177
|
+
},
|
178
|
+
"ListenerView:Type": {
|
179
|
+
"default": "cartesian",
|
180
|
+
"flags": null,
|
181
|
+
"dimensions": null,
|
182
|
+
"type": "attribute",
|
183
|
+
"comment": ""
|
184
|
+
},
|
185
|
+
"ListenerView:Units": {
|
186
|
+
"default": "metre",
|
187
|
+
"flags": null,
|
188
|
+
"dimensions": null,
|
189
|
+
"type": "attribute",
|
190
|
+
"comment": ""
|
191
|
+
},
|
192
|
+
"ReceiverPosition": {
|
193
|
+
"default": [
|
194
|
+
0,
|
195
|
+
0,
|
196
|
+
0
|
197
|
+
],
|
198
|
+
"flags": "m",
|
199
|
+
"dimensions": "IC, RC, RCM",
|
200
|
+
"type": "double",
|
201
|
+
"comment": ""
|
202
|
+
},
|
203
|
+
"ReceiverPosition:Type": {
|
204
|
+
"default": "cartesian",
|
205
|
+
"flags": "m",
|
206
|
+
"dimensions": null,
|
207
|
+
"type": "attribute",
|
208
|
+
"comment": ""
|
209
|
+
},
|
210
|
+
"ReceiverPosition:Units": {
|
211
|
+
"default": "metre",
|
212
|
+
"flags": "m",
|
213
|
+
"dimensions": null,
|
214
|
+
"type": "attribute",
|
215
|
+
"comment": ""
|
216
|
+
},
|
217
|
+
"SourcePosition": {
|
218
|
+
"default": [
|
219
|
+
0,
|
220
|
+
0,
|
221
|
+
1
|
222
|
+
],
|
223
|
+
"flags": "m",
|
224
|
+
"dimensions": "IC, MC",
|
225
|
+
"type": "double",
|
226
|
+
"comment": "In order to store different directions/positions around the listener, SourcePosition is assumed to vary"
|
227
|
+
},
|
228
|
+
"SourcePosition:Type": {
|
229
|
+
"default": "spherical",
|
230
|
+
"flags": "m",
|
231
|
+
"dimensions": null,
|
232
|
+
"type": "attribute",
|
233
|
+
"comment": ""
|
234
|
+
},
|
235
|
+
"SourcePosition:Units": {
|
236
|
+
"default": "degree, degree, metre",
|
237
|
+
"flags": "m",
|
238
|
+
"dimensions": null,
|
239
|
+
"type": "attribute",
|
240
|
+
"comment": ""
|
241
|
+
},
|
242
|
+
"EmitterPosition": {
|
243
|
+
"default": [
|
244
|
+
0,
|
245
|
+
0,
|
246
|
+
0
|
247
|
+
],
|
248
|
+
"flags": "m",
|
249
|
+
"dimensions": "eCI, eCM",
|
250
|
+
"type": "double",
|
251
|
+
"comment": ""
|
252
|
+
},
|
253
|
+
"EmitterPosition:Type": {
|
254
|
+
"default": "cartesian",
|
255
|
+
"flags": "m",
|
256
|
+
"dimensions": null,
|
257
|
+
"type": "attribute",
|
258
|
+
"comment": ""
|
259
|
+
},
|
260
|
+
"EmitterPosition:Units": {
|
261
|
+
"default": "metre",
|
262
|
+
"flags": "m",
|
263
|
+
"dimensions": null,
|
264
|
+
"type": "attribute",
|
265
|
+
"comment": ""
|
266
|
+
},
|
267
|
+
"Data.SOS": {
|
268
|
+
"default": [
|
269
|
+
[
|
270
|
+
[
|
271
|
+
0,
|
272
|
+
0,
|
273
|
+
0,
|
274
|
+
1,
|
275
|
+
0,
|
276
|
+
0
|
277
|
+
]
|
278
|
+
]
|
279
|
+
],
|
280
|
+
"flags": "m",
|
281
|
+
"dimensions": "mrn",
|
282
|
+
"type": "double",
|
283
|
+
"comment": "Filter coefficients as SOS coefficients."
|
284
|
+
},
|
285
|
+
"Data.SamplingRate": {
|
286
|
+
"default": 48000,
|
287
|
+
"flags": "m",
|
288
|
+
"dimensions": "I, M",
|
289
|
+
"type": "double",
|
290
|
+
"comment": "Sampling rate of the coefficients in Data.SOS and the delay in Data.Delay"
|
291
|
+
},
|
292
|
+
"Data.SamplingRate:Units": {
|
293
|
+
"default": "hertz",
|
294
|
+
"flags": "m",
|
295
|
+
"dimensions": null,
|
296
|
+
"type": "attribute",
|
297
|
+
"comment": "Unit of the sampling rate"
|
298
|
+
},
|
299
|
+
"Data.Delay": {
|
300
|
+
"default": 0,
|
301
|
+
"flags": "m",
|
302
|
+
"dimensions": "IR, MR",
|
303
|
+
"type": "double",
|
304
|
+
"comment": "Broadband delay (in samples resulting from SamplingRate)"
|
305
|
+
}
|
306
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
Name Default Flags Dimensions Type Comment
|
2
|
+
GLOBAL:Conventions SOFA rm attribute
|
3
|
+
GLOBAL:Version 2.1 rm attribute
|
4
|
+
GLOBAL:SOFAConventions GeneralTF-E rm attribute This conventions stores TFs depending in the Emiiter for general purposes, i.e., only the mandatory, SOFA general metadata are pre-defined. This convention is based on GeneralTF
|
5
|
+
GLOBAL:SOFAConventionsVersion 1.0 rm attribute
|
6
|
+
GLOBAL:APIName rm attribute
|
7
|
+
GLOBAL:APIVersion rm attribute
|
8
|
+
GLOBAL:ApplicationName attribute
|
9
|
+
GLOBAL:ApplicationVersion attribute
|
10
|
+
GLOBAL:AuthorContact m attribute
|
11
|
+
GLOBAL:Comment attribute
|
12
|
+
GLOBAL:DataType TF-E rm attribute We store frequency-dependent data depending on the emitter here
|
13
|
+
GLOBAL:History attribute
|
14
|
+
GLOBAL:License No license provided, ask the author for permission m attribute
|
15
|
+
GLOBAL:Organization m attribute
|
16
|
+
GLOBAL:References attribute
|
17
|
+
GLOBAL:RoomType free field m attribute The room information can be arbitrary
|
18
|
+
GLOBAL:Origin attribute
|
19
|
+
GLOBAL:DateCreated m attribute
|
20
|
+
GLOBAL:DateModified m attribute
|
21
|
+
GLOBAL:Title m attribute
|
22
|
+
ListenerPosition [0 0 0] m IC, MC double
|
23
|
+
ListenerPosition:Type cartesian m attribute
|
24
|
+
ListenerPosition:Units metre m attribute
|
25
|
+
ReceiverPosition [0 0 0] m IC, RC, RCM double
|
26
|
+
ReceiverPosition:Type cartesian m attribute
|
27
|
+
ReceiverPosition:Units metre m attribute
|
28
|
+
SourcePosition [0 0 1] m IC, MC double In order to store different directions/positions around the listener, SourcePosition is assumed to vary
|
29
|
+
SourcePosition:Type spherical m attribute
|
30
|
+
SourcePosition:Units degree, degree, metre m attribute
|
31
|
+
EmitterPosition [0 0 0] m IC, EC, ECM double
|
32
|
+
EmitterPosition:Type cartesian m attribute
|
33
|
+
EmitterPosition:Units metre m attribute
|
34
|
+
Data.Real 0 m mrne double The real part of the complex spectrum
|
35
|
+
Data.Imag 0 m MRNE double The imaginary part of the complex spectrum
|
36
|
+
N 0 m N double Frequency values
|
37
|
+
N:LongName frequency m attribute narrative name of N
|
38
|
+
N:Units hertz m attribute Unit of the values given in N
|