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.
Files changed (105) hide show
  1. docs/Makefile +20 -0
  2. docs/api_reference.rst +20 -0
  3. docs/conf.py +167 -0
  4. docs/contributing.rst +1 -0
  5. docs/history.rst +1 -0
  6. docs/index.rst +4 -0
  7. docs/make.bat +36 -0
  8. docs/readme.rst +1 -0
  9. docs/resources/conventions.py +162 -0
  10. docs/resources/working_with_sofa_HRIR_lateral.png +0 -0
  11. docs/resources/working_with_sofa_source_horizontal.png +0 -0
  12. docs/resources/working_with_sofa_source_lateral.png +0 -0
  13. docs/sofar.rst +82 -0
  14. sofar/__init__.py +28 -0
  15. sofar/io.py +427 -0
  16. sofar/sofa.py +1835 -0
  17. sofar/sofa_conventions/VERSION +1 -0
  18. sofar/sofa_conventions/conventions/AnnotatedEmitterAudio_0.2.csv +46 -0
  19. sofar/sofa_conventions/conventions/AnnotatedEmitterAudio_0.2.json +353 -0
  20. sofar/sofa_conventions/conventions/AnnotatedReceiverAudio_0.2.csv +46 -0
  21. sofar/sofa_conventions/conventions/AnnotatedReceiverAudio_0.2.json +353 -0
  22. sofar/sofa_conventions/conventions/FreeFieldDirectivityTF_1.1.csv +59 -0
  23. sofar/sofa_conventions/conventions/FreeFieldDirectivityTF_1.1.json +444 -0
  24. sofar/sofa_conventions/conventions/FreeFieldHRIR_1.0.csv +43 -0
  25. sofar/sofa_conventions/conventions/FreeFieldHRIR_1.0.json +333 -0
  26. sofar/sofa_conventions/conventions/FreeFieldHRTF_1.0.csv +44 -0
  27. sofar/sofa_conventions/conventions/FreeFieldHRTF_1.0.json +340 -0
  28. sofar/sofa_conventions/conventions/GeneralFIR-E_2.0.csv +37 -0
  29. sofar/sofa_conventions/conventions/GeneralFIR-E_2.0.json +270 -0
  30. sofar/sofa_conventions/conventions/GeneralFIR_1.0.csv +40 -0
  31. sofar/sofa_conventions/conventions/GeneralFIR_1.0.json +295 -0
  32. sofar/sofa_conventions/conventions/GeneralSOS_1.0.csv +40 -0
  33. sofar/sofa_conventions/conventions/GeneralSOS_1.0.json +306 -0
  34. sofar/sofa_conventions/conventions/GeneralTF-E_1.0.csv +38 -0
  35. sofar/sofa_conventions/conventions/GeneralTF-E_1.0.json +277 -0
  36. sofar/sofa_conventions/conventions/GeneralTF_1.0.csv +38 -0
  37. sofar/sofa_conventions/conventions/GeneralTF_1.0.json +277 -0
  38. sofar/sofa_conventions/conventions/GeneralTF_2.0.csv +38 -0
  39. sofar/sofa_conventions/conventions/GeneralTF_2.0.json +277 -0
  40. sofar/sofa_conventions/conventions/SimpleFreeFieldHRIR_1.0.csv +47 -0
  41. sofar/sofa_conventions/conventions/SimpleFreeFieldHRIR_1.0.json +369 -0
  42. sofar/sofa_conventions/conventions/SimpleFreeFieldHRSOS_1.0.csv +43 -0
  43. sofar/sofa_conventions/conventions/SimpleFreeFieldHRSOS_1.0.json +349 -0
  44. sofar/sofa_conventions/conventions/SimpleFreeFieldHRTF_1.0.csv +44 -0
  45. sofar/sofa_conventions/conventions/SimpleFreeFieldHRTF_1.0.json +340 -0
  46. sofar/sofa_conventions/conventions/SimpleFreeFieldSOS_1.0.csv +43 -0
  47. sofar/sofa_conventions/conventions/SimpleFreeFieldSOS_1.0.json +349 -0
  48. sofar/sofa_conventions/conventions/SimpleHeadphoneIR_1.0.csv +51 -0
  49. sofar/sofa_conventions/conventions/SimpleHeadphoneIR_1.0.json +396 -0
  50. sofar/sofa_conventions/conventions/SingleRoomMIMOSRIR_1.0.csv +78 -0
  51. sofar/sofa_conventions/conventions/SingleRoomMIMOSRIR_1.0.json +601 -0
  52. sofar/sofa_conventions/conventions/SingleRoomSRIR_1.0.csv +78 -0
  53. sofar/sofa_conventions/conventions/SingleRoomSRIR_1.0.json +601 -0
  54. sofar/sofa_conventions/conventions/deprecated/AnnotatedEmitterAudio_0.1.csv +46 -0
  55. sofar/sofa_conventions/conventions/deprecated/AnnotatedEmitterAudio_0.1.json +351 -0
  56. sofar/sofa_conventions/conventions/deprecated/AnnotatedReceiverAudio_0.1.csv +46 -0
  57. sofar/sofa_conventions/conventions/deprecated/AnnotatedReceiverAudio_0.1.json +351 -0
  58. sofar/sofa_conventions/conventions/deprecated/FreeFieldDirectivityTF_1.0.csv +58 -0
  59. sofar/sofa_conventions/conventions/deprecated/FreeFieldDirectivityTF_1.0.json +437 -0
  60. sofar/sofa_conventions/conventions/deprecated/GeneralFIRE_1.0.csv +37 -0
  61. sofar/sofa_conventions/conventions/deprecated/GeneralFIRE_1.0.json +270 -0
  62. sofar/sofa_conventions/conventions/deprecated/MultiSpeakerBRIR_0.3.csv +48 -0
  63. sofar/sofa_conventions/conventions/deprecated/MultiSpeakerBRIR_0.3.json +376 -0
  64. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldHRIR_0.4.csv +43 -0
  65. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldHRIR_0.4.json +333 -0
  66. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_0.4.csv +44 -0
  67. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_0.4.json +340 -0
  68. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_1.0.csv +44 -0
  69. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_1.0.json +340 -0
  70. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.1.csv +51 -0
  71. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.1.json +396 -0
  72. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.2.csv +51 -0
  73. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.2.json +396 -0
  74. sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.2.csv +47 -0
  75. sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.2.json +360 -0
  76. sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.3.csv +47 -0
  77. sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.3.json +360 -0
  78. sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.1.csv +47 -0
  79. sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.1.json +366 -0
  80. sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.2.csv +51 -0
  81. sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.2.json +397 -0
  82. sofar/sofa_conventions/rules/deprecations.json +13 -0
  83. sofar/sofa_conventions/rules/rules.json +819 -0
  84. sofar/sofa_conventions/rules/unit_aliases.json +11 -0
  85. sofar/sofa_conventions/rules/upgrade.json +226 -0
  86. sofar/sofa_conventions/write_upgrade_rules.py +139 -0
  87. sofar/sofa_conventions/write_verification_data.py +313 -0
  88. sofar/sofa_conventions/write_verification_rules.py +356 -0
  89. sofar/sofastream.py +301 -0
  90. sofar/update_conventions.py +449 -0
  91. sofar/utils.py +316 -0
  92. sofar-1.2.1.dist-info/LICENSE +22 -0
  93. sofar-1.2.1.dist-info/METADATA +136 -0
  94. sofar-1.2.1.dist-info/RECORD +105 -0
  95. sofar-1.2.1.dist-info/WHEEL +5 -0
  96. sofar-1.2.1.dist-info/top_level.txt +3 -0
  97. tests/__init__.py +0 -0
  98. tests/conftest.py +27 -0
  99. tests/test_deprecations.py +19 -0
  100. tests/test_io.py +349 -0
  101. tests/test_sofa.py +353 -0
  102. tests/test_sofa_upgrade_conventions.py +111 -0
  103. tests/test_sofa_verify.py +480 -0
  104. tests/test_sofastream.py +127 -0
  105. tests/test_utils.py +250 -0
@@ -0,0 +1,601 @@
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": "SingleRoomSRIR",
18
+ "flags": "rm",
19
+ "dimensions": null,
20
+ "type": "attribute",
21
+ "comment": "For measuring SRIRs in a single room with a single excitation source (e.g., a loudspeaker) and a listener containing an arbitrary number of omnidirectional receivers (e.g., a microphone array)."
22
+ },
23
+ "GLOBAL:SOFAConventionsVersion": {
24
+ "default": "1.0",
25
+ "flags": "rm",
26
+ "dimensions": null,
27
+ "type": "attribute",
28
+ "comment": ""
29
+ },
30
+ "GLOBAL:DataType": {
31
+ "default": "FIR",
32
+ "flags": "rm",
33
+ "dimensions": null,
34
+ "type": "attribute",
35
+ "comment": "Shall be FIR"
36
+ },
37
+ "GLOBAL:RoomType": {
38
+ "default": "shoebox",
39
+ "flags": "m",
40
+ "dimensions": null,
41
+ "type": "attribute",
42
+ "comment": "Shall be 'shoebox' or 'dae'"
43
+ },
44
+ "GLOBAL:Title": {
45
+ "default": "",
46
+ "flags": "m",
47
+ "dimensions": null,
48
+ "type": "attribute",
49
+ "comment": ""
50
+ },
51
+ "GLOBAL:DateCreated": {
52
+ "default": "",
53
+ "flags": "m",
54
+ "dimensions": null,
55
+ "type": "attribute",
56
+ "comment": ""
57
+ },
58
+ "GLOBAL:DateModified": {
59
+ "default": "",
60
+ "flags": "m",
61
+ "dimensions": null,
62
+ "type": "attribute",
63
+ "comment": ""
64
+ },
65
+ "GLOBAL:APIName": {
66
+ "default": "",
67
+ "flags": "rm",
68
+ "dimensions": null,
69
+ "type": "attribute",
70
+ "comment": ""
71
+ },
72
+ "GLOBAL:APIVersion": {
73
+ "default": "",
74
+ "flags": "rm",
75
+ "dimensions": null,
76
+ "type": "attribute",
77
+ "comment": ""
78
+ },
79
+ "GLOBAL:AuthorContact": {
80
+ "default": "",
81
+ "flags": "m",
82
+ "dimensions": null,
83
+ "type": "attribute",
84
+ "comment": ""
85
+ },
86
+ "GLOBAL:Organization": {
87
+ "default": "",
88
+ "flags": "m",
89
+ "dimensions": null,
90
+ "type": "attribute",
91
+ "comment": ""
92
+ },
93
+ "GLOBAL:License": {
94
+ "default": "No license provided, ask the author for permission",
95
+ "flags": "m",
96
+ "dimensions": null,
97
+ "type": "attribute",
98
+ "comment": ""
99
+ },
100
+ "GLOBAL:ApplicationName": {
101
+ "default": "",
102
+ "flags": null,
103
+ "dimensions": null,
104
+ "type": "attribute",
105
+ "comment": ""
106
+ },
107
+ "GLOBAL:ApplicationVersion": {
108
+ "default": "",
109
+ "flags": null,
110
+ "dimensions": null,
111
+ "type": "attribute",
112
+ "comment": ""
113
+ },
114
+ "GLOBAL:Comment": {
115
+ "default": "",
116
+ "flags": null,
117
+ "dimensions": null,
118
+ "type": "attribute",
119
+ "comment": ""
120
+ },
121
+ "GLOBAL:History": {
122
+ "default": "",
123
+ "flags": null,
124
+ "dimensions": null,
125
+ "type": "attribute",
126
+ "comment": ""
127
+ },
128
+ "GLOBAL:References": {
129
+ "default": "",
130
+ "flags": null,
131
+ "dimensions": null,
132
+ "type": "attribute",
133
+ "comment": ""
134
+ },
135
+ "GLOBAL:Origin": {
136
+ "default": "",
137
+ "flags": null,
138
+ "dimensions": null,
139
+ "type": "attribute",
140
+ "comment": ""
141
+ },
142
+ "GLOBAL:DatabaseName": {
143
+ "default": "",
144
+ "flags": "m",
145
+ "dimensions": null,
146
+ "type": "attribute",
147
+ "comment": "Name of the database. Used for classification of the data."
148
+ },
149
+ "GLOBAL:RoomShortName": {
150
+ "default": "",
151
+ "flags": null,
152
+ "dimensions": null,
153
+ "type": "attribute",
154
+ "comment": "Short name of the Room"
155
+ },
156
+ "GLOBAL:RoomDescription": {
157
+ "default": "",
158
+ "flags": null,
159
+ "dimensions": null,
160
+ "type": "attribute",
161
+ "comment": "Informal verbal description of the room"
162
+ },
163
+ "GLOBAL:RoomLocation": {
164
+ "default": "",
165
+ "flags": null,
166
+ "dimensions": null,
167
+ "type": "attribute",
168
+ "comment": "Location of the room"
169
+ },
170
+ "GLOBAL:RoomGeometry": {
171
+ "default": "",
172
+ "flags": null,
173
+ "dimensions": null,
174
+ "type": "attribute",
175
+ "comment": "URI to a file describing the room geometry."
176
+ },
177
+ "GLOBAL:ListenerShortName": {
178
+ "default": "",
179
+ "flags": null,
180
+ "dimensions": null,
181
+ "type": "attribute",
182
+ "comment": ""
183
+ },
184
+ "GLOBAL:ListenerDescription": {
185
+ "default": "",
186
+ "flags": null,
187
+ "dimensions": null,
188
+ "type": "attribute",
189
+ "comment": ""
190
+ },
191
+ "GLOBAL:ReceiverShortName": {
192
+ "default": "",
193
+ "flags": null,
194
+ "dimensions": null,
195
+ "type": "attribute",
196
+ "comment": ""
197
+ },
198
+ "GLOBAL:ReceiverDescription": {
199
+ "default": "",
200
+ "flags": null,
201
+ "dimensions": null,
202
+ "type": "attribute",
203
+ "comment": ""
204
+ },
205
+ "GLOBAL:SourceShortName": {
206
+ "default": "",
207
+ "flags": null,
208
+ "dimensions": null,
209
+ "type": "attribute",
210
+ "comment": ""
211
+ },
212
+ "GLOBAL:SourceDescription": {
213
+ "default": "",
214
+ "flags": null,
215
+ "dimensions": null,
216
+ "type": "attribute",
217
+ "comment": ""
218
+ },
219
+ "GLOBAL:EmitterShortName": {
220
+ "default": "",
221
+ "flags": null,
222
+ "dimensions": null,
223
+ "type": "attribute",
224
+ "comment": ""
225
+ },
226
+ "GLOBAL:EmitterDescription": {
227
+ "default": "",
228
+ "flags": null,
229
+ "dimensions": null,
230
+ "type": "attribute",
231
+ "comment": ""
232
+ },
233
+ "RoomTemperature": {
234
+ "default": 0,
235
+ "flags": null,
236
+ "dimensions": "I, M",
237
+ "type": "double",
238
+ "comment": "Temperature during measurements, given in Kelvin."
239
+ },
240
+ "RoomTemperature:Units": {
241
+ "default": "kelvin",
242
+ "flags": null,
243
+ "dimensions": null,
244
+ "type": "attribute",
245
+ "comment": "Units of the room temperature."
246
+ },
247
+ "RoomVolume": {
248
+ "default": 0,
249
+ "flags": null,
250
+ "dimensions": "I, M",
251
+ "type": "double",
252
+ "comment": "Volume of the room."
253
+ },
254
+ "RoomVolume:Units": {
255
+ "default": "cubic metre",
256
+ "flags": null,
257
+ "dimensions": null,
258
+ "type": "attribute",
259
+ "comment": "Units of the room volume."
260
+ },
261
+ "RoomCornerA": {
262
+ "default": [
263
+ 0,
264
+ 0,
265
+ 0
266
+ ],
267
+ "flags": null,
268
+ "dimensions": "IC, MC",
269
+ "type": "double",
270
+ "comment": ""
271
+ },
272
+ "RoomCornerB": {
273
+ "default": [
274
+ 1,
275
+ 2,
276
+ 3
277
+ ],
278
+ "flags": null,
279
+ "dimensions": "IC, MC",
280
+ "type": "double",
281
+ "comment": ""
282
+ },
283
+ "RoomCorners": {
284
+ "default": 0,
285
+ "flags": null,
286
+ "dimensions": "II",
287
+ "type": "double",
288
+ "comment": "The value of this attribute is to be ignored. It only exist to for RoomCorners:Type and RoomCorners:Units"
289
+ },
290
+ "RoomCorners:Type": {
291
+ "default": "cartesian",
292
+ "flags": null,
293
+ "dimensions": null,
294
+ "type": "attribute",
295
+ "comment": ""
296
+ },
297
+ "RoomCorners:Units": {
298
+ "default": "metre",
299
+ "flags": null,
300
+ "dimensions": null,
301
+ "type": "attribute",
302
+ "comment": ""
303
+ },
304
+ "ListenerPosition": {
305
+ "default": [
306
+ 0,
307
+ 0,
308
+ 0
309
+ ],
310
+ "flags": "m",
311
+ "dimensions": "MC",
312
+ "type": "double",
313
+ "comment": ""
314
+ },
315
+ "ListenerPosition:Type": {
316
+ "default": "cartesian",
317
+ "flags": "m",
318
+ "dimensions": null,
319
+ "type": "attribute",
320
+ "comment": ""
321
+ },
322
+ "ListenerPosition:Units": {
323
+ "default": "metre",
324
+ "flags": "m",
325
+ "dimensions": null,
326
+ "type": "attribute",
327
+ "comment": ""
328
+ },
329
+ "ListenerView": {
330
+ "default": [
331
+ 1,
332
+ 0,
333
+ 0
334
+ ],
335
+ "flags": "m",
336
+ "dimensions": "IC, MC",
337
+ "type": "double",
338
+ "comment": ""
339
+ },
340
+ "ListenerUp": {
341
+ "default": [
342
+ 0,
343
+ 0,
344
+ 1
345
+ ],
346
+ "flags": "m",
347
+ "dimensions": "IC, MC",
348
+ "type": "double",
349
+ "comment": ""
350
+ },
351
+ "ListenerView:Type": {
352
+ "default": "cartesian",
353
+ "flags": "m",
354
+ "dimensions": null,
355
+ "type": "attribute",
356
+ "comment": ""
357
+ },
358
+ "ListenerView:Units": {
359
+ "default": "metre",
360
+ "flags": "m",
361
+ "dimensions": null,
362
+ "type": "attribute",
363
+ "comment": ""
364
+ },
365
+ "ReceiverDescriptions": {
366
+ "default": [
367
+ ""
368
+ ],
369
+ "flags": null,
370
+ "dimensions": "RS, RSM",
371
+ "type": "string",
372
+ "comment": "R-dependent version of the attribute ReceiverDescription"
373
+ },
374
+ "ReceiverPosition": {
375
+ "default": [
376
+ 0,
377
+ 0,
378
+ 0
379
+ ],
380
+ "flags": "m",
381
+ "dimensions": "IC, RCI, RCM",
382
+ "type": "double",
383
+ "comment": ""
384
+ },
385
+ "ReceiverPosition:Type": {
386
+ "default": "spherical",
387
+ "flags": "m",
388
+ "dimensions": null,
389
+ "type": "attribute",
390
+ "comment": "Can be of any type enabling both spatially discrete and spatially continuous representations."
391
+ },
392
+ "ReceiverPosition:Units": {
393
+ "default": "degree, degree, metre",
394
+ "flags": "m",
395
+ "dimensions": null,
396
+ "type": "attribute",
397
+ "comment": ""
398
+ },
399
+ "ReceiverView": {
400
+ "default": [
401
+ 1,
402
+ 0,
403
+ 0
404
+ ],
405
+ "flags": null,
406
+ "dimensions": "RCI, RCM",
407
+ "type": "double",
408
+ "comment": ""
409
+ },
410
+ "ReceiverUp": {
411
+ "default": [
412
+ 0,
413
+ 0,
414
+ 1
415
+ ],
416
+ "flags": null,
417
+ "dimensions": "RCI, RCM",
418
+ "type": "double",
419
+ "comment": ""
420
+ },
421
+ "ReceiverView:Type": {
422
+ "default": "cartesian",
423
+ "flags": null,
424
+ "dimensions": null,
425
+ "type": "attribute",
426
+ "comment": ""
427
+ },
428
+ "ReceiverView:Units": {
429
+ "default": "metre",
430
+ "flags": null,
431
+ "dimensions": null,
432
+ "type": "attribute",
433
+ "comment": ""
434
+ },
435
+ "SourcePosition": {
436
+ "default": [
437
+ 0,
438
+ 0,
439
+ 1
440
+ ],
441
+ "flags": "m",
442
+ "dimensions": "MC",
443
+ "type": "double",
444
+ "comment": ""
445
+ },
446
+ "SourcePosition:Type": {
447
+ "default": "cartesian",
448
+ "flags": "m",
449
+ "dimensions": null,
450
+ "type": "attribute",
451
+ "comment": ""
452
+ },
453
+ "SourcePosition:Units": {
454
+ "default": "metre",
455
+ "flags": "m",
456
+ "dimensions": null,
457
+ "type": "attribute",
458
+ "comment": ""
459
+ },
460
+ "SourceView": {
461
+ "default": [
462
+ 1,
463
+ 0,
464
+ 0
465
+ ],
466
+ "flags": "m",
467
+ "dimensions": "IC, MC",
468
+ "type": "double",
469
+ "comment": ""
470
+ },
471
+ "SourceUp": {
472
+ "default": [
473
+ 0,
474
+ 0,
475
+ 1
476
+ ],
477
+ "flags": "m",
478
+ "dimensions": "IC, MC",
479
+ "type": "double",
480
+ "comment": ""
481
+ },
482
+ "SourceView:Type": {
483
+ "default": "cartesian",
484
+ "flags": "m",
485
+ "dimensions": null,
486
+ "type": "attribute",
487
+ "comment": ""
488
+ },
489
+ "SourceView:Units": {
490
+ "default": "metre",
491
+ "flags": "m",
492
+ "dimensions": null,
493
+ "type": "attribute",
494
+ "comment": ""
495
+ },
496
+ "EmitterDescriptions": {
497
+ "default": [
498
+ ""
499
+ ],
500
+ "flags": null,
501
+ "dimensions": "ES, ESM",
502
+ "type": "string",
503
+ "comment": "E-dependent version of the attribute EmitterDescription"
504
+ },
505
+ "EmitterPosition": {
506
+ "default": [
507
+ 0,
508
+ 0,
509
+ 0
510
+ ],
511
+ "flags": "m",
512
+ "dimensions": "eCI, eCM",
513
+ "type": "double",
514
+ "comment": ""
515
+ },
516
+ "EmitterPosition:Type": {
517
+ "default": "spherical",
518
+ "flags": "m",
519
+ "dimensions": null,
520
+ "type": "attribute",
521
+ "comment": "Shall be 'cartesian' or 'spherical', restricting to spatially discrete emitters."
522
+ },
523
+ "EmitterPosition:Units": {
524
+ "default": "degree, degree, metre",
525
+ "flags": "m",
526
+ "dimensions": null,
527
+ "type": "attribute",
528
+ "comment": ""
529
+ },
530
+ "EmitterView": {
531
+ "default": [
532
+ 1,
533
+ 0,
534
+ 0
535
+ ],
536
+ "flags": null,
537
+ "dimensions": "ECI, ECM",
538
+ "type": "double",
539
+ "comment": ""
540
+ },
541
+ "EmitterUp": {
542
+ "default": [
543
+ 0,
544
+ 0,
545
+ 1
546
+ ],
547
+ "flags": null,
548
+ "dimensions": "ECI, ECM",
549
+ "type": "double",
550
+ "comment": ""
551
+ },
552
+ "EmitterView:Type": {
553
+ "default": "cartesian",
554
+ "flags": null,
555
+ "dimensions": null,
556
+ "type": "attribute",
557
+ "comment": "Shall be 'cartesian' or 'spherical', restricting to spatially discrete emitters."
558
+ },
559
+ "EmitterView:Units": {
560
+ "default": "metre",
561
+ "flags": null,
562
+ "dimensions": null,
563
+ "type": "attribute",
564
+ "comment": ""
565
+ },
566
+ "MeasurementDate": {
567
+ "default": 0,
568
+ "flags": null,
569
+ "dimensions": "M",
570
+ "type": "double",
571
+ "comment": "Optional M-dependent date and time of the measurement"
572
+ },
573
+ "Data.IR": {
574
+ "default": 0,
575
+ "flags": "m",
576
+ "dimensions": "mrn",
577
+ "type": "double",
578
+ "comment": "Impulse responses"
579
+ },
580
+ "Data.SamplingRate": {
581
+ "default": 48000,
582
+ "flags": "m",
583
+ "dimensions": "I, M",
584
+ "type": "double",
585
+ "comment": "Sampling rate of the samples in Data.IR and Data.Delay"
586
+ },
587
+ "Data.SamplingRate:Units": {
588
+ "default": "hertz",
589
+ "flags": "m",
590
+ "dimensions": null,
591
+ "type": "attribute",
592
+ "comment": "Unit of the sampling rate"
593
+ },
594
+ "Data.Delay": {
595
+ "default": 0,
596
+ "flags": "m",
597
+ "dimensions": "IR, MR",
598
+ "type": "double",
599
+ "comment": "Additional delay of each IR (in samples)"
600
+ }
601
+ }
@@ -0,0 +1,46 @@
1
+ Name Default Flags Dimensions Type Comment
2
+ GLOBAL:Conventions SOFA rm attribute
3
+ GLOBAL:Version 2.1 rm attribute
4
+ GLOBAL:SOFAConventions AnnotatedEmitterAudio rm attribute
5
+ GLOBAL:SOFAConventionsVersion 0.1 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 Audio rm attribute
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
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 Position of the head. IC if not tracked, MC if tracked.
23
+ ListenerPosition:Type cartesian m attribute
24
+ ListenerPosition:Units metre m attribute
25
+ ReceiverPosition [0 0.09 0; 0 -0.09 0] m rC, rCM double Position of the ears. RC if not tracked, RCM if tracked.
26
+ ReceiverPosition:Type cartesian m attribute
27
+ ReceiverPosition:Units metre m attribute
28
+ SourcePosition [0 0 0] m IC, MC double Position of the virtual ensemble. IC if not tracked, MC if tracked.
29
+ SourcePosition:Type cartesian m attribute
30
+ SourcePosition:Units metre m attribute
31
+ EmitterPosition [0 0 0] m eC, eCM double Position of the virtual source(s). eC if not tracked, eCM if tracked.
32
+ EmitterPosition:Type cartesian m attribute
33
+ EmitterPosition:Units metre m attribute
34
+ ListenerUp [0 0 1] m IC, MC double Must be of the same dimensionality as ListenerView.
35
+ ListenerView [1 0 0] m IC, MC double Orientation of the head. IC if not tracked, MC if tracked.
36
+ ListenerView:Type cartesian m attribute
37
+ ListenerView:Units metre m attribute
38
+ Data.Emitter [0 0] m In, En double audio data at the emitter(s); n=number of audio samples
39
+ Data.SamplingRate 44100 m I double
40
+ Data.SamplingRate:Units hertz m attribute
41
+ M 0 m m double Time stamp of the measurements in M, defines the size of M.
42
+ M:LongName time m attribute Narrative name for M
43
+ M:Units second m attribute Units used for M
44
+ Response I, C, S attribute the subject’s response
45
+ Response:Type I, C, S attribute type depends on the dimension
46
+ Response:LongName S attribute narrative description of the response type