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,277 @@
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": "GeneralTF-E",
18
+ "flags": "rm",
19
+ "dimensions": null,
20
+ "type": "attribute",
21
+ "comment": "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"
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": "TF-E",
74
+ "flags": "rm",
75
+ "dimensions": null,
76
+ "type": "attribute",
77
+ "comment": "We store frequency-dependent data depending on the emitter 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": "IC, EC, 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
+ "N": {
243
+ "default": 0,
244
+ "flags": "m",
245
+ "dimensions": "N",
246
+ "type": "double",
247
+ "comment": "Frequency values"
248
+ },
249
+ "N:LongName": {
250
+ "default": "frequency",
251
+ "flags": "m",
252
+ "dimensions": null,
253
+ "type": "attribute",
254
+ "comment": "narrative name of N"
255
+ },
256
+ "N:Units": {
257
+ "default": "hertz",
258
+ "flags": "m",
259
+ "dimensions": null,
260
+ "type": "attribute",
261
+ "comment": "Unit of the values given in N"
262
+ },
263
+ "Data.Real": {
264
+ "default": 0,
265
+ "flags": "m",
266
+ "dimensions": "mrne",
267
+ "type": "double",
268
+ "comment": "The real part of the complex spectrum"
269
+ },
270
+ "Data.Imag": {
271
+ "default": 0,
272
+ "flags": "m",
273
+ "dimensions": "MRNE",
274
+ "type": "double",
275
+ "comment": "The imaginary part of the complex spectrum"
276
+ }
277
+ }
@@ -0,0 +1,38 @@
1
+ Name Default Flags Dimensions Type Comment
2
+ GLOBAL:Conventions SOFA rm attribute
3
+ GLOBAL:Version 1.0 rm attribute
4
+ GLOBAL:SOFAConventions GeneralTF rm attribute This conventions stores TFs for general purposes, i.e., only the mandatory, SOFA general metadata are pre-defined. This convention is based on GeneralFIR.
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 m attribute
12
+ GLOBAL:DataType TF rm attribute We store frequency-dependent data 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 rCI, 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 eCI, eCM double
32
+ EmitterPosition:Type cartesian m attribute
33
+ EmitterPosition:Units metre m attribute
34
+ Data.Real 0 m mRn double The real part of the complex spectrum
35
+ Data.Imag 0 m MRN 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
@@ -0,0 +1,277 @@
1
+ {
2
+ "GLOBAL:Conventions": {
3
+ "default": "SOFA",
4
+ "flags": "rm",
5
+ "dimensions": null,
6
+ "type": "attribute",
7
+ "comment": ""
8
+ },
9
+ "GLOBAL:Version": {
10
+ "default": "1.0",
11
+ "flags": "rm",
12
+ "dimensions": null,
13
+ "type": "attribute",
14
+ "comment": ""
15
+ },
16
+ "GLOBAL:SOFAConventions": {
17
+ "default": "GeneralTF",
18
+ "flags": "rm",
19
+ "dimensions": null,
20
+ "type": "attribute",
21
+ "comment": "This conventions stores TFs for general purposes, i.e., only the mandatory, SOFA general metadata are pre-defined. This convention is based on GeneralFIR."
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": "TF",
74
+ "flags": "rm",
75
+ "dimensions": null,
76
+ "type": "attribute",
77
+ "comment": "We store frequency-dependent data 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": "rCI, 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
+ "N": {
243
+ "default": 0,
244
+ "flags": "m",
245
+ "dimensions": "N",
246
+ "type": "double",
247
+ "comment": "Frequency values"
248
+ },
249
+ "N:LongName": {
250
+ "default": "frequency",
251
+ "flags": "m",
252
+ "dimensions": null,
253
+ "type": "attribute",
254
+ "comment": "narrative name of N"
255
+ },
256
+ "N:Units": {
257
+ "default": "hertz",
258
+ "flags": "m",
259
+ "dimensions": null,
260
+ "type": "attribute",
261
+ "comment": "Unit of the values given in N"
262
+ },
263
+ "Data.Real": {
264
+ "default": 0,
265
+ "flags": "m",
266
+ "dimensions": "mRn",
267
+ "type": "double",
268
+ "comment": "The real part of the complex spectrum"
269
+ },
270
+ "Data.Imag": {
271
+ "default": 0,
272
+ "flags": "m",
273
+ "dimensions": "MRN",
274
+ "type": "double",
275
+ "comment": "The imaginary part of the complex spectrum"
276
+ }
277
+ }
@@ -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 rm attribute This conventions stores TFs for general purposes, i.e., only the mandatory, SOFA general metadata are pre-defined. This convention is based on GeneralFIR.
5
+ GLOBAL:SOFAConventionsVersion 2.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 rm attribute We store frequency-dependent data 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 eC, eCM double
32
+ EmitterPosition:Type cartesian m attribute
33
+ EmitterPosition:Units metre m attribute
34
+ Data.Real 0 m mrn double The real part of the complex spectrum
35
+ Data.Imag 0 m MRN 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