sofar 0.3.1__py2.py3-none-any.whl → 1.1.0__py2.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 (79) hide show
  1. sofar/__init__.py +13 -7
  2. sofar/io.py +423 -0
  3. sofar/sofa.py +1795 -0
  4. sofar/sofa_conventions/VERSION +1 -0
  5. sofar/sofa_conventions/conventions/FreeFieldDirectivityTF_1.1.csv +59 -0
  6. sofar/sofa_conventions/conventions/FreeFieldDirectivityTF_1.1.json +444 -0
  7. sofar/{conventions/source → sofa_conventions/conventions}/FreeFieldHRIR_1.0.csv +3 -3
  8. sofar/{conventions → sofa_conventions/conventions}/FreeFieldHRIR_1.0.json +3 -3
  9. sofar/{conventions/source → sofa_conventions/conventions}/FreeFieldHRTF_1.0.csv +2 -2
  10. sofar/{conventions → sofa_conventions/conventions}/FreeFieldHRTF_1.0.json +3 -3
  11. sofar/{conventions/source → sofa_conventions/conventions}/GeneralFIR-E_2.0.csv +2 -2
  12. sofar/{conventions → sofa_conventions/conventions}/GeneralFIR-E_2.0.json +2 -2
  13. sofar/{conventions/source/GeneralFIR_2.0.csv → sofa_conventions/conventions/GeneralFIR_1.0.csv} +2 -2
  14. sofar/{conventions/GeneralFIR_2.0.json → sofa_conventions/conventions/GeneralFIR_1.0.json} +2 -2
  15. sofar/{conventions/source/GeneralFIR_1.0.csv → sofa_conventions/conventions/GeneralSOS_1.0.csv} +11 -11
  16. sofar/{conventions/GeneralFIR_1.0.json → sofa_conventions/conventions/GeneralSOS_1.0.json} +48 -37
  17. sofar/{conventions/source → sofa_conventions/conventions}/GeneralTF-E_1.0.csv +3 -3
  18. sofar/{conventions → sofa_conventions/conventions}/GeneralTF-E_1.0.json +4 -4
  19. sofar/{conventions/source → sofa_conventions/conventions}/GeneralTF_1.0.csv +1 -1
  20. sofar/{conventions → sofa_conventions/conventions}/GeneralTF_1.0.json +1 -1
  21. sofar/{conventions/source → sofa_conventions/conventions}/GeneralTF_2.0.csv +4 -4
  22. sofar/{conventions → sofa_conventions/conventions}/GeneralTF_2.0.json +4 -4
  23. sofar/sofa_conventions/conventions/SimpleFreeFieldHRIR_1.0.csv +47 -0
  24. sofar/{conventions → sofa_conventions/conventions}/SimpleFreeFieldHRIR_1.0.json +1 -1
  25. sofar/{conventions/source → sofa_conventions/conventions}/SimpleFreeFieldHRSOS_1.0.csv +1 -1
  26. sofar/{conventions → sofa_conventions/conventions}/SimpleFreeFieldHRSOS_1.0.json +1 -1
  27. sofar/{conventions/source/SimpleFreeFieldHRTF_2.0.csv → sofa_conventions/conventions/SimpleFreeFieldHRTF_1.0.csv} +3 -3
  28. sofar/{conventions/SimpleFreeFieldHRTF_2.0.json → sofa_conventions/conventions/SimpleFreeFieldHRTF_1.0.json} +4 -4
  29. sofar/{conventions/source → sofa_conventions/conventions}/SimpleHeadphoneIR_1.0.csv +9 -9
  30. sofar/sofa_conventions/conventions/SimpleHeadphoneIR_1.0.json +396 -0
  31. sofar/{conventions/source → sofa_conventions/conventions}/SingleRoomMIMOSRIR_1.0.csv +18 -8
  32. sofar/{conventions → sofa_conventions/conventions}/SingleRoomMIMOSRIR_1.0.json +124 -50
  33. sofar/{conventions/source → sofa_conventions/conventions}/SingleRoomSRIR_1.0.csv +18 -8
  34. sofar/{conventions → sofa_conventions/conventions}/SingleRoomSRIR_1.0.json +124 -50
  35. sofar/{conventions/source → sofa_conventions/conventions/deprecated}/FreeFieldDirectivityTF_1.0.csv +2 -2
  36. sofar/{conventions → sofa_conventions/conventions/deprecated}/FreeFieldDirectivityTF_1.0.json +2 -2
  37. sofar/sofa_conventions/conventions/deprecated/MultiSpeakerBRIR_0.3.csv +48 -0
  38. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldHRIR_0.4.csv +43 -0
  39. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldHRIR_0.4.json +333 -0
  40. sofar/{conventions/source/SimpleFreeFieldHRIR_1.0.csv → sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_0.4.csv} +15 -18
  41. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_0.4.json +340 -0
  42. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_1.0.csv +44 -0
  43. sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_1.0.json +340 -0
  44. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.1.csv +51 -0
  45. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.1.json +396 -0
  46. sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.2.csv +51 -0
  47. sofar/{conventions/SimpleHeadphoneIR_1.0.json → sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.2.json} +3 -3
  48. sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.2.csv +47 -0
  49. sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.2.json +360 -0
  50. sofar/sofa_conventions/rules/deprecations.json +12 -0
  51. sofar/sofa_conventions/rules/rules.json +800 -0
  52. sofar/sofa_conventions/rules/unit_aliases.json +11 -0
  53. sofar/sofa_conventions/rules/upgrade.json +190 -0
  54. sofar/update_conventions.py +427 -0
  55. sofar/utils.py +315 -0
  56. {sofar-0.3.1.dist-info → sofar-1.1.0.dist-info}/AUTHORS.rst +1 -0
  57. sofar-1.1.0.dist-info/METADATA +89 -0
  58. sofar-1.1.0.dist-info/RECORD +75 -0
  59. {sofar-0.3.1.dist-info → sofar-1.1.0.dist-info}/WHEEL +1 -1
  60. {sofar-0.3.1.dist-info → sofar-1.1.0.dist-info}/top_level.txt +1 -0
  61. tests/__init__.py +0 -0
  62. tests/test_deprecations.py +19 -0
  63. tests/test_io.py +344 -0
  64. tests/test_sofa.py +354 -0
  65. tests/test_sofa_upgrade_conventions.py +102 -0
  66. tests/test_sofa_verify.py +472 -0
  67. tests/test_utils.py +241 -0
  68. sofar/conventions/source/MultiSpeakerBRIR_0.3.csv +0 -48
  69. sofar/sofar.py +0 -2531
  70. sofar-0.3.1.dist-info/METADATA +0 -69
  71. sofar-0.3.1.dist-info/RECORD +0 -46
  72. /sofar/{conventions/source → sofa_conventions/conventions}/SimpleFreeFieldSOS_1.0.csv +0 -0
  73. /sofar/{conventions → sofa_conventions/conventions}/SimpleFreeFieldSOS_1.0.json +0 -0
  74. /sofar/{conventions/source → sofa_conventions/conventions/deprecated}/GeneralFIRE_1.0.csv +0 -0
  75. /sofar/{conventions → sofa_conventions/conventions/deprecated}/GeneralFIRE_1.0.json +0 -0
  76. /sofar/{conventions → sofa_conventions/conventions/deprecated}/MultiSpeakerBRIR_0.3.json +0 -0
  77. /sofar/{conventions/source → sofa_conventions/conventions/deprecated}/SingleRoomDRIR_0.3.csv +0 -0
  78. /sofar/{conventions → sofa_conventions/conventions/deprecated}/SingleRoomDRIR_0.3.json +0 -0
  79. {sofar-0.3.1.dist-info → sofar-1.1.0.dist-info}/LICENSE +0 -0
@@ -0,0 +1 @@
1
+ AES69-2022 (SOFA conventions 2.1)
@@ -0,0 +1,59 @@
1
+ Name Default Flags Dimensions Type Comment
2
+ GLOBAL:Conventions SOFA rm attribute
3
+ GLOBAL:Version 2.1 rm attribute
4
+ GLOBAL:SOFAConventions FreeFieldDirectivityTF rm attribute This conventions stores directivities of acoustic sources (instruments, loudspeakers, singers, talkers, etc) in the frequency domain for multiple musical notes in free field.
5
+ GLOBAL:SOFAConventionsVersion 1.1 rm attribute
6
+ GLOBAL:DataType TF rm attribute We store frequency-dependent data here
7
+ GLOBAL:RoomType free field m attribute The room information can be arbitrary, but the spatial setup assumes free field.
8
+ GLOBAL:Title m attribute
9
+ GLOBAL:DateCreated m attribute
10
+ GLOBAL:DateModified m attribute
11
+ GLOBAL:APIName rm attribute
12
+ GLOBAL:APIVersion rm attribute
13
+ GLOBAL:AuthorContact m attribute
14
+ GLOBAL:Organization m attribute
15
+ GLOBAL:License No license provided, ask the author for permission m attribute
16
+ GLOBAL:ApplicationName attribute
17
+ GLOBAL:ApplicationVersion attribute
18
+ GLOBAL:Comment attribute
19
+ GLOBAL:History attribute
20
+ GLOBAL:References attribute
21
+ GLOBAL:Origin attribute
22
+ GLOBAL:DatabaseName m attribute Name of the database. Used for classification of the data
23
+ GLOBAL:Musician attribute Narrative description of the musician such as position, behavior, or personal data if not data-protected, e.g., 'Christiane Schmidt sitting on the chair', or 'artificial excitation by R2D2'.
24
+ GLOBAL:Description attribute Narrative description of a measurement. For musical instruments/singers, the note (C1, D1, etc) or the dynamic (pp., ff., etc), or the string played, the playing style (pizzicato, legato, etc.), or the type of excitation (e.g., hit location of a cymbal). For loudspeakers, the system and driver units.
25
+ GLOBAL:SourceType m attribute Narrative description of the acoustic source, e.g., 'Violin', 'Female singer', or '2-way loudspeaker'
26
+ GLOBAL:SourceManufacturer m attribute Narrative description of the manufacturer of the source, e.g., 'Stradivari, Lady Blunt, 1721' or 'LoudspeakerCompany'
27
+ GLOBAL:EmitterDescription attribute A more detailed structure of the source. In a simple setting, a single Emitter is considered that is collocated with the source. In a more complicated setting, this may be the strings of a violin or the units of a loudspeaker.
28
+ ListenerPosition [0 0 0] m IC, MC double Position of the microphone array during the measurements.
29
+ ListenerPosition:Type cartesian m attribute
30
+ ListenerPosition:Units metre m attribute
31
+ ListenerView [1 0 0] m IC, MC double Orientation of the microphone array
32
+ ListenerView:Type cartesian m attribute
33
+ ListenerView:Units metre m attribute
34
+ ListenerUp [0 0 1] m IC, MC double Up vector of the microphone array
35
+ ReceiverPosition [0 0 0] m IC, RC, RCM double Positions of the microphones during the measurements (relative to the Listener)
36
+ ReceiverPosition:Type spherical m attribute Type of the coordinate system used.
37
+ ReceiverPosition:Units degree, degree, metre m attribute Units of the coordinates.
38
+ SourcePosition [0 0 0] m IC, MC double Position of the acoustic source (instrument)
39
+ SourcePosition:Type cartesian m attribute
40
+ SourcePosition:Units metre m attribute
41
+ SourcePosition:Reference m attribute Narrative description of the spatial reference of the source position, e.g., 'The bell' for a trumpet or 'On the front plate between the low- and mid/high-frequency unit' for a loudspeaker. Mandatory in order to provide a reference across different sources.
42
+ SourceView [1 0 0] m IC, MC double View vector for the orientation.
43
+ SourceView:Type cartesian m attribute
44
+ SourceView:Units metre m attribute
45
+ SourceView:Reference m attribute Narrative description of the spatial reference of the source view, e.g., 'Viewing direction of the bell' for a trumpet or 'Perpendicular to the front plate' for a loudspeaker. Mandatory in order to provide a reference across different sources.
46
+ SourceUp [0 0 1] m IC, MC double Up vector of the acoustic source (instrument)
47
+ SourceUp:Reference m attribute Narrative description of the spatial reference of the source up, e.g., 'Along the keys, keys up' for a trumpet or 'Perpendicular to the top plate' for a loudspeaker. Mandatory in order to provide a reference across different sources.
48
+ EmitterPosition [0 0 0] m eC, eCM double Position. In a simple settings, a single emitter is considered that is collocated with the source.
49
+ EmitterPosition:Type cartesian m attribute
50
+ EmitterPosition:Units metre m attribute
51
+ EmitterDescriptions {''} MS, ES, MES string A more detailed description of the Emitters. For example, this may be the strings of a violin or the units of a loudspeaker.
52
+ MIDINote 0 I, M double Defines the note played by the source during the measurement. The note is specified a MIDI note by the [https://www.midi.org/specifications-old/item/the-midi-1-0-specification MIDI specifications, version 1.0]. Not mandatory, but recommended for tonal instruments.
53
+ Description {''} MS string This variable is used when the description varies with M.
54
+ SourceTuningFrequency 440 I, M double Frequency (in hertz) to which a musical instrument is tuned to corresponding to the note A4 (MIDINote=69). Recommended for tonal instruments.
55
+ Data.Real 0 m mrn double Real part of the complex spectrum. The default value 0 indicates that all data fields are initialized with zero values.
56
+ Data.Imag 0 m MRN double Imaginary part of the complex spectrum
57
+ N 0 m N double Frequency values
58
+ N:LongName frequency m attribute narrative name of N
59
+ N:Units hertz m attribute Units used for N
@@ -0,0 +1,444 @@
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": "FreeFieldDirectivityTF",
18
+ "flags": "rm",
19
+ "dimensions": null,
20
+ "type": "attribute",
21
+ "comment": "This conventions stores directivities of acoustic sources (instruments, loudspeakers, singers, talkers, etc) in the frequency domain for multiple musical notes in free field."
22
+ },
23
+ "GLOBAL:SOFAConventionsVersion": {
24
+ "default": "1.1",
25
+ "flags": "rm",
26
+ "dimensions": null,
27
+ "type": "attribute",
28
+ "comment": ""
29
+ },
30
+ "GLOBAL:DataType": {
31
+ "default": "TF",
32
+ "flags": "rm",
33
+ "dimensions": null,
34
+ "type": "attribute",
35
+ "comment": "We store frequency-dependent data here"
36
+ },
37
+ "GLOBAL:RoomType": {
38
+ "default": "free field",
39
+ "flags": "m",
40
+ "dimensions": null,
41
+ "type": "attribute",
42
+ "comment": "The room information can be arbitrary, but the spatial setup assumes free field."
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:Musician": {
150
+ "default": "",
151
+ "flags": null,
152
+ "dimensions": null,
153
+ "type": "attribute",
154
+ "comment": "Narrative description of the musician such as position, behavior, or personal data if not data-protected, e.g., 'Christiane Schmidt sitting on the chair', or 'artificial excitation by R2D2'."
155
+ },
156
+ "GLOBAL:Description": {
157
+ "default": "",
158
+ "flags": null,
159
+ "dimensions": null,
160
+ "type": "attribute",
161
+ "comment": "Narrative description of a measurement. For musical instruments/singers, the note (C1, D1, etc) or the dynamic (pp., ff., etc), or the string played, the playing style (pizzicato, legato, etc.), or the type of excitation (e.g., hit location of a cymbal). For loudspeakers, the system and driver units."
162
+ },
163
+ "GLOBAL:SourceType": {
164
+ "default": "",
165
+ "flags": "m",
166
+ "dimensions": null,
167
+ "type": "attribute",
168
+ "comment": "Narrative description of the acoustic source, e.g., 'Violin', 'Female singer', or '2-way loudspeaker'"
169
+ },
170
+ "GLOBAL:SourceManufacturer": {
171
+ "default": "",
172
+ "flags": "m",
173
+ "dimensions": null,
174
+ "type": "attribute",
175
+ "comment": "Narrative description of the manufacturer of the source, e.g., 'Stradivari, Lady Blunt, 1721' or 'LoudspeakerCompany'"
176
+ },
177
+ "GLOBAL:EmitterDescription": {
178
+ "default": "",
179
+ "flags": null,
180
+ "dimensions": null,
181
+ "type": "attribute",
182
+ "comment": "A more detailed structure of the source. In a simple setting, a single Emitter is considered that is collocated with the source. In a more complicated setting, this may be the strings of a violin or the units of a loudspeaker."
183
+ },
184
+ "ListenerPosition": {
185
+ "default": [
186
+ 0,
187
+ 0,
188
+ 0
189
+ ],
190
+ "flags": "m",
191
+ "dimensions": "IC, MC",
192
+ "type": "double",
193
+ "comment": "Position of the microphone array during the measurements."
194
+ },
195
+ "ListenerPosition:Type": {
196
+ "default": "cartesian",
197
+ "flags": "m",
198
+ "dimensions": null,
199
+ "type": "attribute",
200
+ "comment": ""
201
+ },
202
+ "ListenerPosition:Units": {
203
+ "default": "metre",
204
+ "flags": "m",
205
+ "dimensions": null,
206
+ "type": "attribute",
207
+ "comment": ""
208
+ },
209
+ "ListenerView": {
210
+ "default": [
211
+ 1,
212
+ 0,
213
+ 0
214
+ ],
215
+ "flags": "m",
216
+ "dimensions": "IC, MC",
217
+ "type": "double",
218
+ "comment": "Orientation of the microphone array"
219
+ },
220
+ "ListenerView:Type": {
221
+ "default": "cartesian",
222
+ "flags": "m",
223
+ "dimensions": null,
224
+ "type": "attribute",
225
+ "comment": ""
226
+ },
227
+ "ListenerView:Units": {
228
+ "default": "metre",
229
+ "flags": "m",
230
+ "dimensions": null,
231
+ "type": "attribute",
232
+ "comment": ""
233
+ },
234
+ "ListenerUp": {
235
+ "default": [
236
+ 0,
237
+ 0,
238
+ 1
239
+ ],
240
+ "flags": "m",
241
+ "dimensions": "IC, MC",
242
+ "type": "double",
243
+ "comment": "Up vector of the microphone array"
244
+ },
245
+ "ReceiverPosition": {
246
+ "default": [
247
+ 0,
248
+ 0,
249
+ 0
250
+ ],
251
+ "flags": "m",
252
+ "dimensions": "IC, RC, RCM",
253
+ "type": "double",
254
+ "comment": "Positions of the microphones during the measurements (relative to the Listener)"
255
+ },
256
+ "ReceiverPosition:Type": {
257
+ "default": "spherical",
258
+ "flags": "m",
259
+ "dimensions": null,
260
+ "type": "attribute",
261
+ "comment": "Type of the coordinate system used."
262
+ },
263
+ "ReceiverPosition:Units": {
264
+ "default": "degree, degree, metre",
265
+ "flags": "m",
266
+ "dimensions": null,
267
+ "type": "attribute",
268
+ "comment": "Units of the coordinates."
269
+ },
270
+ "SourcePosition": {
271
+ "default": [
272
+ 0,
273
+ 0,
274
+ 0
275
+ ],
276
+ "flags": "m",
277
+ "dimensions": "IC, MC",
278
+ "type": "double",
279
+ "comment": "Position of the acoustic source (instrument)"
280
+ },
281
+ "SourcePosition:Type": {
282
+ "default": "cartesian",
283
+ "flags": "m",
284
+ "dimensions": null,
285
+ "type": "attribute",
286
+ "comment": ""
287
+ },
288
+ "SourcePosition:Units": {
289
+ "default": "metre",
290
+ "flags": "m",
291
+ "dimensions": null,
292
+ "type": "attribute",
293
+ "comment": ""
294
+ },
295
+ "SourcePosition:Reference": {
296
+ "default": "",
297
+ "flags": "m",
298
+ "dimensions": null,
299
+ "type": "attribute",
300
+ "comment": "Narrative description of the spatial reference of the source position, e.g., 'The bell' for a trumpet or 'On the front plate between the low- and mid/high-frequency unit' for a loudspeaker. Mandatory in order to provide a reference across different sources."
301
+ },
302
+ "SourceView": {
303
+ "default": [
304
+ 1,
305
+ 0,
306
+ 0
307
+ ],
308
+ "flags": "m",
309
+ "dimensions": "IC, MC",
310
+ "type": "double",
311
+ "comment": "View vector for the orientation."
312
+ },
313
+ "SourceView:Type": {
314
+ "default": "cartesian",
315
+ "flags": "m",
316
+ "dimensions": null,
317
+ "type": "attribute",
318
+ "comment": ""
319
+ },
320
+ "SourceView:Units": {
321
+ "default": "metre",
322
+ "flags": "m",
323
+ "dimensions": null,
324
+ "type": "attribute",
325
+ "comment": ""
326
+ },
327
+ "SourceView:Reference": {
328
+ "default": "",
329
+ "flags": "m",
330
+ "dimensions": null,
331
+ "type": "attribute",
332
+ "comment": "Narrative description of the spatial reference of the source view, e.g., 'Viewing direction of the bell' for a trumpet or 'Perpendicular to the front plate' for a loudspeaker. Mandatory in order to provide a reference across different sources."
333
+ },
334
+ "SourceUp": {
335
+ "default": [
336
+ 0,
337
+ 0,
338
+ 1
339
+ ],
340
+ "flags": "m",
341
+ "dimensions": "IC, MC",
342
+ "type": "double",
343
+ "comment": "Up vector of the acoustic source (instrument)"
344
+ },
345
+ "SourceUp:Reference": {
346
+ "default": "",
347
+ "flags": "m",
348
+ "dimensions": null,
349
+ "type": "attribute",
350
+ "comment": "Narrative description of the spatial reference of the source up, e.g., 'Along the keys, keys up' for a trumpet or 'Perpendicular to the top plate' for a loudspeaker. Mandatory in order to provide a reference across different sources."
351
+ },
352
+ "EmitterPosition": {
353
+ "default": [
354
+ 0,
355
+ 0,
356
+ 0
357
+ ],
358
+ "flags": "m",
359
+ "dimensions": "eC, eCM",
360
+ "type": "double",
361
+ "comment": "Position. In a simple settings, a single emitter is considered that is collocated with the source."
362
+ },
363
+ "EmitterPosition:Type": {
364
+ "default": "cartesian",
365
+ "flags": "m",
366
+ "dimensions": null,
367
+ "type": "attribute",
368
+ "comment": ""
369
+ },
370
+ "EmitterPosition:Units": {
371
+ "default": "metre",
372
+ "flags": "m",
373
+ "dimensions": null,
374
+ "type": "attribute",
375
+ "comment": ""
376
+ },
377
+ "EmitterDescriptions": {
378
+ "default": [
379
+ ""
380
+ ],
381
+ "flags": null,
382
+ "dimensions": "MS, ES, MES",
383
+ "type": "string",
384
+ "comment": "A more detailed description of the Emitters. For example, this may be the strings of a violin or the units of a loudspeaker."
385
+ },
386
+ "MIDINote": {
387
+ "default": 0,
388
+ "flags": null,
389
+ "dimensions": "I, M",
390
+ "type": "double",
391
+ "comment": "Defines the note played by the source during the measurement. The note is specified a MIDI note by the [https://www.midi.org/specifications-old/item/the-midi-1-0-specification MIDI specifications, version 1.0]. Not mandatory, but recommended for tonal instruments."
392
+ },
393
+ "Description": {
394
+ "default": [
395
+ ""
396
+ ],
397
+ "flags": null,
398
+ "dimensions": "MS",
399
+ "type": "string",
400
+ "comment": "This variable is used when the description varies with M."
401
+ },
402
+ "SourceTuningFrequency": {
403
+ "default": 440,
404
+ "flags": null,
405
+ "dimensions": "I, M",
406
+ "type": "double",
407
+ "comment": "Frequency (in hertz) to which a musical instrument is tuned to corresponding to the note A4 (MIDINote=69). Recommended for tonal instruments."
408
+ },
409
+ "N": {
410
+ "default": 0,
411
+ "flags": "m",
412
+ "dimensions": "N",
413
+ "type": "double",
414
+ "comment": "Frequency values"
415
+ },
416
+ "N:LongName": {
417
+ "default": "frequency",
418
+ "flags": "m",
419
+ "dimensions": null,
420
+ "type": "attribute",
421
+ "comment": "narrative name of N"
422
+ },
423
+ "N:Units": {
424
+ "default": "hertz",
425
+ "flags": "m",
426
+ "dimensions": null,
427
+ "type": "attribute",
428
+ "comment": "Units used for N"
429
+ },
430
+ "Data.Real": {
431
+ "default": 0,
432
+ "flags": "m",
433
+ "dimensions": "mrn",
434
+ "type": "double",
435
+ "comment": "Real part of the complex spectrum. The default value 0 indicates that all data fields are initialized with zero values."
436
+ },
437
+ "Data.Imag": {
438
+ "default": 0,
439
+ "flags": "m",
440
+ "dimensions": "MRN",
441
+ "type": "double",
442
+ "comment": "Imaginary part of the complex spectrum"
443
+ }
444
+ }
@@ -1,6 +1,6 @@
1
1
  Name Default Flags Dimensions Type Comment
2
2
  GLOBAL:Conventions SOFA rm attribute
3
- GLOBAL:Version 2.0 rm attribute
3
+ GLOBAL:Version 2.1 rm attribute
4
4
  GLOBAL:SOFAConventions FreeFieldHRIR rm attribute An extension of SimpleFreeFieldHRIR in order to consider more complex data sets described in spatially continuous representation. Each HRTF direction corresponds to an emitter, and a consistent measurement for a single listener and all directions is described by a set of the emitter positions surrounding the listener.
5
5
  GLOBAL:SOFAConventionsVersion 1.0 rm attribute
6
6
  GLOBAL:APIName rm attribute
@@ -12,7 +12,7 @@ GLOBAL:Comment attribute
12
12
  GLOBAL:DataType FIR-E rm attribute
13
13
  GLOBAL:History attribute
14
14
  GLOBAL:License No license provided, ask the author for permission m attribute
15
- GLOBAL:ListenerShortName m attribute ID of the subject from the database
15
+ GLOBAL:ListenerShortName m attribute Short name of the listener (as for example the subject ID).
16
16
  GLOBAL:Organization m attribute
17
17
  GLOBAL:References attribute
18
18
  GLOBAL:RoomType free field m attribute
@@ -40,4 +40,4 @@ ListenerView:Units metre m attribute
40
40
  Data.IR [0 0] m mrne double
41
41
  Data.SamplingRate 48000 m I, M double
42
42
  Data.SamplingRate:Units hertz m attribute
43
- Data.Delay [0 0] m IRE, MRE double Additional delay of each IR (in samples)
43
+ Data.Delay [0 0] m IRI, MRI, MRE double Additional delay of each IR (in samples)
@@ -7,7 +7,7 @@
7
7
  "comment": ""
8
8
  },
9
9
  "GLOBAL:Version": {
10
- "default": "2.0",
10
+ "default": "2.1",
11
11
  "flags": "rm",
12
12
  "dimensions": null,
13
13
  "type": "attribute",
@@ -95,7 +95,7 @@
95
95
  "flags": "m",
96
96
  "dimensions": null,
97
97
  "type": "attribute",
98
- "comment": "ID of the subject from the database"
98
+ "comment": "Short name of the listener (as for example the subject ID)."
99
99
  },
100
100
  "GLOBAL:Organization": {
101
101
  "default": "",
@@ -326,7 +326,7 @@
326
326
  0
327
327
  ],
328
328
  "flags": "m",
329
- "dimensions": "IRE, MRE",
329
+ "dimensions": "IRI, MRI, MRE",
330
330
  "type": "double",
331
331
  "comment": "Additional delay of each IR (in samples)"
332
332
  }
@@ -1,6 +1,6 @@
1
1
  Name Default Flags Dimensions Type Comment
2
2
  GLOBAL:Conventions SOFA rm attribute
3
- GLOBAL:Version 2.0 rm attribute
3
+ GLOBAL:Version 2.1 rm attribute
4
4
  GLOBAL:SOFAConventions FreeFieldHRTF rm attribute This conventions is for HRTFs created under conditions where room information is irrelevant and stored as SH coefficients
5
5
  GLOBAL:SOFAConventionsVersion 1.0 rm attribute
6
6
  GLOBAL:APIName rm attribute
@@ -40,5 +40,5 @@ ListenerView:Units metre m attribute
40
40
  Data.Real [0 0] m mrne double
41
41
  Data.Imag [0 0] m MRNE double
42
42
  N 0 m N double
43
- N:LongName frequency attribute
43
+ N:LongName frequency m attribute narrative name of N
44
44
  N:Units hertz m attribute
@@ -7,7 +7,7 @@
7
7
  "comment": ""
8
8
  },
9
9
  "GLOBAL:Version": {
10
- "default": "2.0",
10
+ "default": "2.1",
11
11
  "flags": "rm",
12
12
  "dimensions": null,
13
13
  "type": "attribute",
@@ -305,10 +305,10 @@
305
305
  },
306
306
  "N:LongName": {
307
307
  "default": "frequency",
308
- "flags": null,
308
+ "flags": "m",
309
309
  "dimensions": null,
310
310
  "type": "attribute",
311
- "comment": ""
311
+ "comment": "narrative name of N"
312
312
  },
313
313
  "N:Units": {
314
314
  "default": "hertz",
@@ -1,6 +1,6 @@
1
1
  Name Default Flags Dimensions Type Comment
2
2
  GLOBAL:Conventions SOFA rm attribute
3
- GLOBAL:Version 2.0 rm attribute
3
+ GLOBAL:Version 2.1 rm attribute
4
4
  GLOBAL:SOFAConventions GeneralFIR-E rm attribute This conventions stores IRs for general purposes, i.e., only the mandatory, SOFA general metadata are pre-defined
5
5
  GLOBAL:SOFAConventionsVersion 2.0 rm attribute
6
6
  GLOBAL:APIName rm attribute
@@ -8,7 +8,7 @@ GLOBAL:APIVersion rm attribute
8
8
  GLOBAL:ApplicationName attribute
9
9
  GLOBAL:ApplicationVersion attribute
10
10
  GLOBAL:AuthorContact m attribute
11
- GLOBAL:Comment m attribute
11
+ GLOBAL:Comment attribute
12
12
  GLOBAL:DataType FIR-E rm attribute We use FIR datatype which in addition depends on Emitters (E)
13
13
  GLOBAL:History attribute
14
14
  GLOBAL:License No license provided, ask the author for permission m attribute
@@ -7,7 +7,7 @@
7
7
  "comment": ""
8
8
  },
9
9
  "GLOBAL:Version": {
10
- "default": "2.0",
10
+ "default": "2.1",
11
11
  "flags": "rm",
12
12
  "dimensions": null,
13
13
  "type": "attribute",
@@ -64,7 +64,7 @@
64
64
  },
65
65
  "GLOBAL:Comment": {
66
66
  "default": "",
67
- "flags": "m",
67
+ "flags": null,
68
68
  "dimensions": null,
69
69
  "type": "attribute",
70
70
  "comment": ""
@@ -1,8 +1,8 @@
1
1
  Name Default Flags Dimensions Type Comment
2
2
  GLOBAL:Conventions SOFA rm attribute
3
- GLOBAL:Version 2.0 rm attribute
3
+ GLOBAL:Version 2.1 rm attribute
4
4
  GLOBAL:SOFAConventions GeneralFIR rm attribute This conventions stores IRs for general purposes, i.e., only the mandatory, SOFA general metadata are pre-defined
5
- GLOBAL:SOFAConventionsVersion 2.0 rm attribute
5
+ GLOBAL:SOFAConventionsVersion 1.0 rm attribute
6
6
  GLOBAL:APIName rm attribute
7
7
  GLOBAL:APIVersion rm attribute
8
8
  GLOBAL:ApplicationName attribute
@@ -7,7 +7,7 @@
7
7
  "comment": ""
8
8
  },
9
9
  "GLOBAL:Version": {
10
- "default": "2.0",
10
+ "default": "2.1",
11
11
  "flags": "rm",
12
12
  "dimensions": null,
13
13
  "type": "attribute",
@@ -21,7 +21,7 @@
21
21
  "comment": "This conventions stores IRs for general purposes, i.e., only the mandatory, SOFA general metadata are pre-defined"
22
22
  },
23
23
  "GLOBAL:SOFAConventionsVersion": {
24
- "default": "2.0",
24
+ "default": "1.0",
25
25
  "flags": "rm",
26
26
  "dimensions": null,
27
27
  "type": "attribute",