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,351 @@
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": "AnnotatedReceiverAudio",
18
+ "flags": "rm",
19
+ "dimensions": null,
20
+ "type": "attribute",
21
+ "comment": ""
22
+ },
23
+ "GLOBAL:SOFAConventionsVersion": {
24
+ "default": "0.1",
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": "Audio",
74
+ "flags": "rm",
75
+ "dimensions": null,
76
+ "type": "attribute",
77
+ "comment": ""
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": ""
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": "Position of the head. IC if not tracked, MC if tracked."
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
+ [
170
+ 0,
171
+ 0.09,
172
+ 0
173
+ ],
174
+ [
175
+ 0,
176
+ -0.09,
177
+ 0
178
+ ]
179
+ ],
180
+ "flags": "m",
181
+ "dimensions": "rC, rCM",
182
+ "type": "double",
183
+ "comment": "Position of the ears. RC if not tracked, RCM if tracked."
184
+ },
185
+ "ReceiverPosition:Type": {
186
+ "default": "cartesian",
187
+ "flags": "m",
188
+ "dimensions": null,
189
+ "type": "attribute",
190
+ "comment": ""
191
+ },
192
+ "ReceiverPosition:Units": {
193
+ "default": "metre",
194
+ "flags": "m",
195
+ "dimensions": null,
196
+ "type": "attribute",
197
+ "comment": ""
198
+ },
199
+ "SourcePosition": {
200
+ "default": [
201
+ 0,
202
+ 0,
203
+ 0
204
+ ],
205
+ "flags": "m",
206
+ "dimensions": "IC, MC",
207
+ "type": "double",
208
+ "comment": "Position of the virtual ensemble. IC if not tracked, MC if tracked."
209
+ },
210
+ "SourcePosition:Type": {
211
+ "default": "cartesian",
212
+ "flags": "m",
213
+ "dimensions": null,
214
+ "type": "attribute",
215
+ "comment": ""
216
+ },
217
+ "SourcePosition:Units": {
218
+ "default": "metre",
219
+ "flags": "m",
220
+ "dimensions": null,
221
+ "type": "attribute",
222
+ "comment": ""
223
+ },
224
+ "EmitterPosition": {
225
+ "default": [
226
+ 0,
227
+ 0,
228
+ 0
229
+ ],
230
+ "flags": "m",
231
+ "dimensions": "eC, eCM",
232
+ "type": "double",
233
+ "comment": "Position of the virtual source(s). eC if not tracked, eCM if tracked."
234
+ },
235
+ "EmitterPosition:Type": {
236
+ "default": "cartesian",
237
+ "flags": "m",
238
+ "dimensions": null,
239
+ "type": "attribute",
240
+ "comment": ""
241
+ },
242
+ "EmitterPosition:Units": {
243
+ "default": "metre",
244
+ "flags": "m",
245
+ "dimensions": null,
246
+ "type": "attribute",
247
+ "comment": ""
248
+ },
249
+ "ListenerUp": {
250
+ "default": [
251
+ 0,
252
+ 0,
253
+ 1
254
+ ],
255
+ "flags": "m",
256
+ "dimensions": "IC, MC",
257
+ "type": "double",
258
+ "comment": "Must be of the same dimensionality as ListenerView."
259
+ },
260
+ "ListenerView": {
261
+ "default": [
262
+ 1,
263
+ 0,
264
+ 0
265
+ ],
266
+ "flags": "m",
267
+ "dimensions": "IC, MC",
268
+ "type": "double",
269
+ "comment": "Orientation of the head. IC if not tracked, MC if tracked."
270
+ },
271
+ "ListenerView:Type": {
272
+ "default": "cartesian",
273
+ "flags": "m",
274
+ "dimensions": null,
275
+ "type": "attribute",
276
+ "comment": ""
277
+ },
278
+ "ListenerView:Units": {
279
+ "default": "metre",
280
+ "flags": "m",
281
+ "dimensions": null,
282
+ "type": "attribute",
283
+ "comment": ""
284
+ },
285
+ "M": {
286
+ "default": 0,
287
+ "flags": "m",
288
+ "dimensions": "m",
289
+ "type": "double",
290
+ "comment": "Time stamp of the measurements in M, defines the size of M."
291
+ },
292
+ "M:LongName": {
293
+ "default": "time",
294
+ "flags": "m",
295
+ "dimensions": null,
296
+ "type": "attribute",
297
+ "comment": "Narrative name for M"
298
+ },
299
+ "M:Units": {
300
+ "default": "second",
301
+ "flags": "m",
302
+ "dimensions": null,
303
+ "type": "attribute",
304
+ "comment": "Units used for M"
305
+ },
306
+ "Response": {
307
+ "default": "",
308
+ "flags": null,
309
+ "dimensions": "I, C, S",
310
+ "type": "attribute",
311
+ "comment": "the subject\u00e2\u20ac\u2122s response"
312
+ },
313
+ "Response:Type": {
314
+ "default": "",
315
+ "flags": null,
316
+ "dimensions": "I, C, S",
317
+ "type": "attribute",
318
+ "comment": "type depends on the dimension"
319
+ },
320
+ "Response:LongName": {
321
+ "default": "",
322
+ "flags": null,
323
+ "dimensions": "S",
324
+ "type": "attribute",
325
+ "comment": "narrative description of the response type"
326
+ },
327
+ "Data.Receiver": {
328
+ "default": [
329
+ 0,
330
+ 0
331
+ ],
332
+ "flags": "m",
333
+ "dimensions": "In, Rn",
334
+ "type": "double",
335
+ "comment": "(binaural) audio data at the receivers; n=number of audio samples"
336
+ },
337
+ "Data.SamplingRate": {
338
+ "default": 44100,
339
+ "flags": "m",
340
+ "dimensions": "I",
341
+ "type": "double",
342
+ "comment": ""
343
+ },
344
+ "Data.SamplingRate:Units": {
345
+ "default": "hertz",
346
+ "flags": "m",
347
+ "dimensions": null,
348
+ "type": "attribute",
349
+ "comment": ""
350
+ }
351
+ }
@@ -0,0 +1,58 @@
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.0 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 m 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
+ ListenerPosition [0 0 0] m IC, MC double Position of the microphone array during the measurements.
28
+ ListenerPosition:Type cartesian m attribute
29
+ ListenerPosition:Units metre m attribute
30
+ ListenerView [1 0 0] m IC, MC double Orientation of the microphone array
31
+ ListenerView:Type cartesian m attribute
32
+ ListenerView:Units metre m attribute
33
+ ListenerUp [0 0 1] m IC, MC double Up vector of the microphone array
34
+ ReceiverPosition [0 0 1] m IC, RC, RCM double Positions of the microphones during the measurements (relative to the Listener)
35
+ ReceiverPosition:Type spherical m attribute
36
+ ReceiverPosition:Units degree, degree, metre m attribute
37
+ SourcePosition [0 0 0] m IC, MC double Position of the acoustic source (instrument)
38
+ SourcePosition:Type cartesian m attribute
39
+ SourcePosition:Units metre m attribute
40
+ SourcePosition:Reference m attribute Narrative description of the spatial reference of the source position, e.g., for the trumpet, 'The bell'. Mandatory in order to provide a reference across different instruments
41
+ SourceView [1 0 0] m IC, MC double Orientation of the acoustic source (instrument)
42
+ SourceView:Type cartesian m attribute
43
+ SourceView:Units metre m attribute
44
+ SourceView:Reference m attribute Narrative description of the spatial reference of the source view, e.g., for the trumpet, 'Viewing direction of the bell'. Mandatory in order to provide a reference across different instruments
45
+ SourceUp [0 0 1] m IC, MC double Up vector of the acoustic source (instrument)
46
+ SourceUp:Reference m attribute Narrative description of the spatial reference of the source up, e.g., for the trumpet, 'Along the keys, keys up'. Mandatory in order to provide a reference across different instruments
47
+ EmitterPosition [0 0 0] m IC, MC double A more detailed structure of the Source. In a simple settings, a single Emitter is considered that is collocated with the source.
48
+ EmitterPosition:Type cartesian m attribute
49
+ EmitterPosition:Units metre m attribute
50
+ EmitterDescription {''} IS, MS string 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.
51
+ 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.
52
+ Description {''} MS string This variable is used when the description varies with M.
53
+ 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.
54
+ 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.
55
+ Data.Imag 0 m MRN double Imaginary part of the complex spectrum
56
+ N 0 m N double Frequency values
57
+ N:LongName frequency m attribute
58
+ N:Units hertz m attribute Units used for N