@vessel-dsp/core 0.6.4 → 0.6.5

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 (182) hide show
  1. package/README.md +10 -2
  2. package/dist/editor/commands.d.ts +13 -13
  3. package/dist/editor/commands.d.ts.map +1 -1
  4. package/dist/editor/commands.js +44 -29
  5. package/dist/editor/commands.js.map +1 -1
  6. package/dist/editor/factory.d.ts +1 -1
  7. package/dist/editor/factory.d.ts.map +1 -1
  8. package/dist/editor/factory.js +51 -51
  9. package/dist/editor/factory.js.map +1 -1
  10. package/dist/editor/history.d.ts +7 -7
  11. package/dist/editor/history.d.ts.map +1 -1
  12. package/dist/editor/history.js +20 -12
  13. package/dist/editor/history.js.map +1 -1
  14. package/dist/editor/index.d.ts +8 -8
  15. package/dist/editor/index.d.ts.map +1 -1
  16. package/dist/editor/index.js +4 -4
  17. package/dist/editor/index.js.map +1 -1
  18. package/dist/editor/layout.d.ts +1 -1
  19. package/dist/editor/layout.d.ts.map +1 -1
  20. package/dist/editor/layout.js +11 -6
  21. package/dist/editor/layout.js.map +1 -1
  22. package/dist/formats/circuit-json/serializer.d.ts +15 -15
  23. package/dist/formats/circuit-json/serializer.d.ts.map +1 -1
  24. package/dist/formats/circuit-json/serializer.js +486 -394
  25. package/dist/formats/circuit-json/serializer.js.map +1 -1
  26. package/dist/formats/document.d.ts +6 -6
  27. package/dist/formats/document.d.ts.map +1 -1
  28. package/dist/formats/document.js +112 -92
  29. package/dist/formats/document.js.map +1 -1
  30. package/dist/formats/interchange/parser.d.ts +1 -1
  31. package/dist/formats/interchange/parser.d.ts.map +1 -1
  32. package/dist/formats/interchange/parser.js +463 -286
  33. package/dist/formats/interchange/parser.js.map +1 -1
  34. package/dist/formats/interchange/serializer.d.ts +1 -1
  35. package/dist/formats/interchange/serializer.d.ts.map +1 -1
  36. package/dist/formats/interchange/serializer.js +41 -28
  37. package/dist/formats/interchange/serializer.js.map +1 -1
  38. package/dist/formats/ltspice/catalog.d.ts +1 -1
  39. package/dist/formats/ltspice/catalog.d.ts.map +1 -1
  40. package/dist/formats/ltspice/catalog.js +150 -48
  41. package/dist/formats/ltspice/catalog.js.map +1 -1
  42. package/dist/formats/ltspice/encoding.js +12 -40
  43. package/dist/formats/ltspice/encoding.js.map +1 -1
  44. package/dist/formats/ltspice/parser.d.ts +1 -1
  45. package/dist/formats/ltspice/parser.d.ts.map +1 -1
  46. package/dist/formats/ltspice/parser.js +122 -75
  47. package/dist/formats/ltspice/parser.js.map +1 -1
  48. package/dist/formats/ltspice/serializer.d.ts +1 -1
  49. package/dist/formats/ltspice/serializer.d.ts.map +1 -1
  50. package/dist/formats/ltspice/serializer.js +69 -47
  51. package/dist/formats/ltspice/serializer.js.map +1 -1
  52. package/dist/formats/schx/catalog.d.ts +1 -1
  53. package/dist/formats/schx/catalog.d.ts.map +1 -1
  54. package/dist/formats/schx/catalog.js +499 -254
  55. package/dist/formats/schx/catalog.js.map +1 -1
  56. package/dist/formats/schx/parser.d.ts +1 -1
  57. package/dist/formats/schx/parser.d.ts.map +1 -1
  58. package/dist/formats/schx/parser.js +40 -38
  59. package/dist/formats/schx/parser.js.map +1 -1
  60. package/dist/formats/schx/runtime-descriptors.d.ts +1 -1
  61. package/dist/formats/schx/runtime-descriptors.d.ts.map +1 -1
  62. package/dist/formats/schx/runtime-descriptors.js +239 -201
  63. package/dist/formats/schx/runtime-descriptors.js.map +1 -1
  64. package/dist/formats/schx/serializer.d.ts +2 -2
  65. package/dist/formats/schx/serializer.d.ts.map +1 -1
  66. package/dist/formats/schx/serializer.js +106 -106
  67. package/dist/formats/schx/serializer.js.map +1 -1
  68. package/dist/formats/schx/transforms.d.ts +1 -1
  69. package/dist/formats/schx/transforms.d.ts.map +1 -1
  70. package/dist/formats/schx/transforms.js +16 -8
  71. package/dist/formats/schx/transforms.js.map +1 -1
  72. package/dist/formats/spice/parser.d.ts +1 -1
  73. package/dist/formats/spice/parser.d.ts.map +1 -1
  74. package/dist/formats/spice/parser.js +105 -56
  75. package/dist/formats/spice/parser.js.map +1 -1
  76. package/dist/formats/spice/serializer.d.ts +1 -1
  77. package/dist/formats/spice/serializer.js +14 -12
  78. package/dist/formats/spice/serializer.js.map +1 -1
  79. package/dist/index.d.ts +47 -46
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +32 -31
  82. package/dist/index.js.map +1 -1
  83. package/dist/model/connectivity.d.ts +1 -1
  84. package/dist/model/connectivity.d.ts.map +1 -1
  85. package/dist/model/connectivity.js +22 -7
  86. package/dist/model/connectivity.js.map +1 -1
  87. package/dist/model/netlist.d.ts +3 -3
  88. package/dist/model/netlist.d.ts.map +1 -1
  89. package/dist/model/netlist.js +117 -100
  90. package/dist/model/netlist.js.map +1 -1
  91. package/dist/model/properties.d.ts +1 -1
  92. package/dist/model/properties.d.ts.map +1 -1
  93. package/dist/model/properties.js +16 -16
  94. package/dist/model/properties.js.map +1 -1
  95. package/dist/model/quantity.d.ts +1 -1
  96. package/dist/model/quantity.d.ts.map +1 -1
  97. package/dist/model/quantity.js +35 -35
  98. package/dist/model/quantity.js.map +1 -1
  99. package/dist/model/types.d.ts +61 -33
  100. package/dist/model/types.d.ts.map +1 -1
  101. package/dist/model/types.js +1 -1
  102. package/dist/model/types.js.map +1 -1
  103. package/dist/model/validation.d.ts +5 -5
  104. package/dist/model/validation.d.ts.map +1 -1
  105. package/dist/model/validation.js +668 -331
  106. package/dist/model/validation.js.map +1 -1
  107. package/dist/model/wires.d.ts +1 -1
  108. package/dist/model/wires.d.ts.map +1 -1
  109. package/dist/model/wires.js +4 -1
  110. package/dist/model/wires.js.map +1 -1
  111. package/dist/panel/extract.d.ts +2 -2
  112. package/dist/panel/extract.d.ts.map +1 -1
  113. package/dist/panel/extract.js +327 -225
  114. package/dist/panel/extract.js.map +1 -1
  115. package/dist/panel/index.d.ts +7 -7
  116. package/dist/panel/index.d.ts.map +1 -1
  117. package/dist/panel/index.js +5 -5
  118. package/dist/panel/index.js.map +1 -1
  119. package/dist/panel/knobs.d.ts +4 -4
  120. package/dist/panel/knobs.d.ts.map +1 -1
  121. package/dist/panel/knobs.js +1 -1
  122. package/dist/panel/knobs.js.map +1 -1
  123. package/dist/panel/placement.d.ts +1 -1
  124. package/dist/panel/placement.d.ts.map +1 -1
  125. package/dist/panel/placement.js +11 -9
  126. package/dist/panel/placement.js.map +1 -1
  127. package/dist/panel/protocol.d.ts +1 -1
  128. package/dist/panel/protocol.d.ts.map +1 -1
  129. package/dist/panel/protocol.js +32 -23
  130. package/dist/panel/protocol.js.map +1 -1
  131. package/dist/panel/types.d.ts +18 -18
  132. package/dist/panel/types.d.ts.map +1 -1
  133. package/dist/panel/types.js.map +1 -1
  134. package/dist/preview/bounds.d.ts +1 -1
  135. package/dist/preview/bounds.d.ts.map +1 -1
  136. package/dist/preview/bounds.js +3 -3
  137. package/dist/preview/bounds.js.map +1 -1
  138. package/dist/preview/box-layout.d.ts +2 -2
  139. package/dist/preview/box-layout.js.map +1 -1
  140. package/dist/preview/colors.d.ts +1 -1
  141. package/dist/preview/colors.js +35 -35
  142. package/dist/preview/colors.js.map +1 -1
  143. package/dist/preview/hanging.d.ts +1 -1
  144. package/dist/preview/hanging.d.ts.map +1 -1
  145. package/dist/preview/hanging.js +4 -1
  146. package/dist/preview/hanging.js.map +1 -1
  147. package/dist/preview/junctions.d.ts +1 -1
  148. package/dist/preview/junctions.d.ts.map +1 -1
  149. package/dist/preview/junctions.js.map +1 -1
  150. package/dist/preview/label-layout.d.ts.map +1 -1
  151. package/dist/preview/label-layout.js +4 -4
  152. package/dist/preview/label-layout.js.map +1 -1
  153. package/dist/preview/ports.d.ts +1 -1
  154. package/dist/preview/ports.d.ts.map +1 -1
  155. package/dist/preview/ports.js +2 -1
  156. package/dist/preview/ports.js.map +1 -1
  157. package/dist/preview/renderable-wires.d.ts +1 -1
  158. package/dist/preview/renderable-wires.d.ts.map +1 -1
  159. package/dist/preview/renderable-wires.js +3 -1
  160. package/dist/preview/renderable-wires.js.map +1 -1
  161. package/dist/preview/routing.d.ts +1 -1
  162. package/dist/preview/routing.js +1 -1
  163. package/dist/preview/routing.js.map +1 -1
  164. package/dist/preview/snap.d.ts +1 -1
  165. package/dist/preview/snap.d.ts.map +1 -1
  166. package/dist/preview/snap.js +11 -3
  167. package/dist/preview/snap.js.map +1 -1
  168. package/dist/preview/symbols/svg-content.d.ts.map +1 -1
  169. package/dist/preview/symbols/svg-content.js +200 -50
  170. package/dist/preview/symbols/svg-content.js.map +1 -1
  171. package/dist/preview/symbols.d.ts +2 -2
  172. package/dist/preview/symbols.d.ts.map +1 -1
  173. package/dist/preview/symbols.js +100 -97
  174. package/dist/preview/symbols.js.map +1 -1
  175. package/dist/preview/wire-chains.d.ts +1 -1
  176. package/dist/preview/wire-chains.d.ts.map +1 -1
  177. package/dist/preview/wire-chains.js.map +1 -1
  178. package/dist/profiles.d.ts +600 -0
  179. package/dist/profiles.d.ts.map +1 -0
  180. package/dist/profiles.js +118 -0
  181. package/dist/profiles.js.map +1 -0
  182. package/package.json +54 -54
@@ -1,30 +1,30 @@
1
- import { propertyBooleanValue, propertyNumericValue, propertyStringValue, } from '../../model/properties.js';
1
+ import { propertyBooleanValue, propertyNumericValue, propertyStringValue, } from "../../model/properties.js";
2
2
  export function runtimeDescriptorProperties(shortType, properties) {
3
3
  const descriptorType = descriptorTypeForShortType(shortType);
4
4
  const out = {
5
5
  DescriptorType: descriptorType,
6
6
  };
7
7
  switch (descriptorType) {
8
- case 'microblock-tone-stack':
8
+ case "microblock-tone-stack":
9
9
  Object.assign(out, toneStackDescriptor(properties));
10
10
  break;
11
- case 'microblock-active-eq':
11
+ case "microblock-active-eq":
12
12
  Object.assign(out, activeEqDescriptor(properties));
13
13
  break;
14
- case 'microblock-delay-chip':
14
+ case "microblock-delay-chip":
15
15
  Object.assign(out, delayChipDescriptor(properties));
16
16
  break;
17
- case 'microblock-reverb':
17
+ case "microblock-reverb":
18
18
  Object.assign(out, reverbDescriptor(properties));
19
19
  break;
20
- case 'microblock-compressor':
20
+ case "microblock-compressor":
21
21
  Object.assign(out, compressorDescriptor(properties));
22
22
  break;
23
- case 'microblock-octave':
23
+ case "microblock-octave":
24
24
  Object.assign(out, octaveDescriptor(properties));
25
25
  break;
26
- case 'microblock-envelope-gain':
27
- case 'microblock-env-filter':
26
+ case "microblock-envelope-gain":
27
+ case "microblock-env-filter":
28
28
  Object.assign(out, scalarDescriptor(properties, COMMON_RUNTIME_FIELDS));
29
29
  break;
30
30
  default:
@@ -33,54 +33,78 @@ export function runtimeDescriptorProperties(shortType, properties) {
33
33
  return out;
34
34
  }
35
35
  function descriptorTypeForShortType(shortType) {
36
- if (shortType.startsWith('MicroBlock')) {
37
- const rest = shortType.slice('MicroBlock'.length);
38
- return rest.length === 0 ? 'microblock' : `microblock-${camelToKebab(rest)}`;
36
+ if (shortType.startsWith("MicroBlock")) {
37
+ const rest = shortType.slice("MicroBlock".length);
38
+ return rest.length === 0
39
+ ? "microblock"
40
+ : `microblock-${camelToKebab(rest)}`;
39
41
  }
40
42
  return camelToKebab(shortType);
41
43
  }
42
44
  function camelToKebab(value) {
43
45
  return value
44
- .replace(/([a-z0-9])([A-Z])/g, '$1-$2')
45
- .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')
46
+ .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
47
+ .replace(/([A-Z])([A-Z][a-z])/g, "$1-$2")
46
48
  .toLowerCase();
47
49
  }
48
50
  function toneStackDescriptor(properties) {
49
51
  const out = {};
50
- addNumber(out, 'overallGainDb', properties, ['OverallGainDb']);
51
- addNumber(out, 'maxSections', properties, ['MaxSections']);
52
+ addNumber(out, "overallGainDb", properties, ["OverallGainDb"]);
53
+ addNumber(out, "maxSections", properties, ["MaxSections"]);
52
54
  const sections = parseToneStackSections(properties);
53
55
  if (sections.length > 0) {
54
56
  out.sections = sections;
55
57
  }
56
- addString(out, 'toneControlName', properties, ['ToneControl', 'ToneControlName']);
57
- addNumber(out, 'minToneWipe', properties, ['MinToneWipe']);
58
- addNumber(out, 'maxToneWipe', properties, ['MaxToneWipe']);
59
- addNumber(out, 'defaultToneWipe', properties, ['DefaultToneWipe', 'ToneControlWipe']);
60
- addNumber(out, 'defaultBassWipe', properties, ['DefaultBassWipe', 'BassControlWipe']);
61
- addNumber(out, 'defaultMiddleWipe', properties, ['DefaultMiddleWipe', 'MiddleControlWipe']);
62
- addNumber(out, 'defaultTrebleWipe', properties, ['DefaultTrebleWipe', 'TrebleControlWipe']);
58
+ addString(out, "toneControlName", properties, [
59
+ "ToneControl",
60
+ "ToneControlName",
61
+ ]);
62
+ addNumber(out, "minToneWipe", properties, ["MinToneWipe"]);
63
+ addNumber(out, "maxToneWipe", properties, ["MaxToneWipe"]);
64
+ addNumber(out, "defaultToneWipe", properties, [
65
+ "DefaultToneWipe",
66
+ "ToneControlWipe",
67
+ ]);
68
+ addNumber(out, "defaultBassWipe", properties, [
69
+ "DefaultBassWipe",
70
+ "BassControlWipe",
71
+ ]);
72
+ addNumber(out, "defaultMiddleWipe", properties, [
73
+ "DefaultMiddleWipe",
74
+ "MiddleControlWipe",
75
+ ]);
76
+ addNumber(out, "defaultTrebleWipe", properties, [
77
+ "DefaultTrebleWipe",
78
+ "TrebleControlWipe",
79
+ ]);
63
80
  return out;
64
81
  }
65
82
  function activeEqDescriptor(properties) {
66
83
  const out = scalarDescriptor(properties, [
67
- ['inputGain', ['InputGain']],
68
- ['outputGain', ['OutputGain']],
69
- ['minInputGain', ['MinInputGain']],
70
- ['maxInputGain', ['MaxInputGain']],
71
- ['mix', ['Mix']],
72
- ['minMix', ['MinMix']],
73
- ['maxMix', ['MaxMix']],
74
- ['level', ['Level', 'OutputLevel']],
75
- ['minOutputLevel', ['MinOutputLevel']],
76
- ['maxOutputLevel', ['MaxOutputLevel']],
77
- ['headroom', ['Headroom']],
84
+ ["inputGain", ["InputGain"]],
85
+ ["outputGain", ["OutputGain"]],
86
+ ["minInputGain", ["MinInputGain"]],
87
+ ["maxInputGain", ["MaxInputGain"]],
88
+ ["mix", ["Mix"]],
89
+ ["minMix", ["MinMix"]],
90
+ ["maxMix", ["MaxMix"]],
91
+ ["level", ["Level", "OutputLevel"]],
92
+ ["minOutputLevel", ["MinOutputLevel"]],
93
+ ["maxOutputLevel", ["MaxOutputLevel"]],
94
+ ["headroom", ["Headroom"]],
78
95
  ]);
79
96
  const descriptor = {};
80
- addNumber(descriptor, 'preEmphasisGainDb', properties, ['DescriptorPreEmphasisGainDb', 'PreEmphasisGainDb']);
81
- addString(descriptor, 'saturationMode', properties, ['SaturationMode']);
82
- addNumber(descriptor, 'saturationPositiveScale', properties, ['SaturationPositiveScale']);
83
- addNumber(descriptor, 'saturationNegativeScale', properties, ['SaturationNegativeScale']);
97
+ addNumber(descriptor, "preEmphasisGainDb", properties, [
98
+ "DescriptorPreEmphasisGainDb",
99
+ "PreEmphasisGainDb",
100
+ ]);
101
+ addString(descriptor, "saturationMode", properties, ["SaturationMode"]);
102
+ addNumber(descriptor, "saturationPositiveScale", properties, [
103
+ "SaturationPositiveScale",
104
+ ]);
105
+ addNumber(descriptor, "saturationNegativeScale", properties, [
106
+ "SaturationNegativeScale",
107
+ ]);
84
108
  if (Object.keys(descriptor).length > 0) {
85
109
  out.descriptor = descriptor;
86
110
  }
@@ -92,49 +116,57 @@ function activeEqDescriptor(properties) {
92
116
  }
93
117
  function delayChipDescriptor(properties) {
94
118
  const out = scalarDescriptor(properties, [
95
- ['inputGain', ['InputGain']],
96
- ['outputGain', ['OutputGain']],
97
- ['minDelayMs', ['MinDelayMs']],
98
- ['maxDelayMs', ['MaxDelayMs']],
99
- ['defaultDelayMs', ['DefaultDelayMs', 'DelayMs']],
100
- ['feedback', ['Feedback']],
101
- ['minFeedback', ['MinFeedback']],
102
- ['maxFeedback', ['MaxFeedback']],
103
- ['mix', ['Mix']],
104
- ['level', ['Level', 'OutputLevel']],
105
- ['minOutputLevel', ['MinOutputLevel']],
106
- ['maxOutputLevel', ['MaxOutputLevel']],
107
- ['tone', ['Tone']],
108
- ['modRateHz', ['ModRateHz']],
109
- ['minModRateHz', ['MinModRateHz']],
110
- ['maxModRateHz', ['MaxModRateHz']],
111
- ['modDepthMs', ['ModDepthMs']],
112
- ['minModDepthMs', ['MinModDepthMs']],
113
- ['maxModDepthMs', ['MaxModDepthMs']],
114
- ['inputDrive', ['InputDrive']],
115
- ['headroom', ['Headroom']],
116
- ['stereoOutputMode', ['StereoOutputMode']],
119
+ ["inputGain", ["InputGain"]],
120
+ ["outputGain", ["OutputGain"]],
121
+ ["minDelayMs", ["MinDelayMs"]],
122
+ ["maxDelayMs", ["MaxDelayMs"]],
123
+ ["defaultDelayMs", ["DefaultDelayMs", "DelayMs"]],
124
+ ["feedback", ["Feedback"]],
125
+ ["minFeedback", ["MinFeedback"]],
126
+ ["maxFeedback", ["MaxFeedback"]],
127
+ ["mix", ["Mix"]],
128
+ ["level", ["Level", "OutputLevel"]],
129
+ ["minOutputLevel", ["MinOutputLevel"]],
130
+ ["maxOutputLevel", ["MaxOutputLevel"]],
131
+ ["tone", ["Tone"]],
132
+ ["modRateHz", ["ModRateHz"]],
133
+ ["minModRateHz", ["MinModRateHz"]],
134
+ ["maxModRateHz", ["MaxModRateHz"]],
135
+ ["modDepthMs", ["ModDepthMs"]],
136
+ ["minModDepthMs", ["MinModDepthMs"]],
137
+ ["maxModDepthMs", ["MaxModDepthMs"]],
138
+ ["inputDrive", ["InputDrive"]],
139
+ ["headroom", ["Headroom"]],
140
+ ["stereoOutputMode", ["StereoOutputMode"]],
117
141
  ]);
118
- addBoolean(out, 'wetOnly', properties, ['WetOnly']);
119
- addBoolean(out, 'dryUnity', properties, ['DryUnity']);
120
- addBoolean(out, 'hold', properties, ['Hold']);
121
- addBoolean(out, 'samplerRecordPlay', properties, ['SamplerRecordPlay']);
142
+ addBoolean(out, "wetOnly", properties, ["WetOnly"]);
143
+ addBoolean(out, "dryUnity", properties, ["DryUnity"]);
144
+ addBoolean(out, "hold", properties, ["Hold"]);
145
+ addBoolean(out, "samplerRecordPlay", properties, ["SamplerRecordPlay"]);
122
146
  const mechanism = {};
123
- addString(mechanism, 'memoryType', properties, ['MemoryType']);
124
- addNumber(mechanism, 'stageCount', properties, ['StageCount']);
125
- addNumber(mechanism, 'artifactSeed', properties, ['ArtifactSeed']);
126
- addNumber(mechanism, 'clockNoiseRms', properties, ['ClockNoiseRms']);
127
- addNumber(mechanism, 'clockFeedthroughHz', properties, ['ClockFeedthroughHz']);
128
- addNumber(mechanism, 'clockJitterDepthMs', properties, ['ClockJitterDepthMs']);
129
- addNumber(mechanism, 'companderResidualAmount', properties, ['CompanderResidualAmount']);
130
- addNumber(mechanism, 'baseBandwidthHz', properties, ['BaseBandwidthHz']);
131
- addNumber(mechanism, 'darkBandwidthHz', properties, ['DarkBandwidthHz']);
132
- addNumber(mechanism, 'feedbackLimit', properties, ['FeedbackLimit']);
133
- addNumber(mechanism, 'quantizationBits', properties, ['QuantizationBits']);
134
- addString(mechanism, 'memoryCompressionMode', properties, ['MemoryCompressionMode']);
135
- addBoolean(mechanism, 'supplySensitive', properties, ['SupplySensitive']);
136
- addNumber(mechanism, 'minDelayFloorMs', properties, ['MinDelayFloorMs']);
137
- addString(mechanism, 'dryBlendPolicy', properties, ['DryBlendPolicy']);
147
+ addString(mechanism, "memoryType", properties, ["MemoryType"]);
148
+ addNumber(mechanism, "stageCount", properties, ["StageCount"]);
149
+ addNumber(mechanism, "artifactSeed", properties, ["ArtifactSeed"]);
150
+ addNumber(mechanism, "clockNoiseRms", properties, ["ClockNoiseRms"]);
151
+ addNumber(mechanism, "clockFeedthroughHz", properties, [
152
+ "ClockFeedthroughHz",
153
+ ]);
154
+ addNumber(mechanism, "clockJitterDepthMs", properties, [
155
+ "ClockJitterDepthMs",
156
+ ]);
157
+ addNumber(mechanism, "companderResidualAmount", properties, [
158
+ "CompanderResidualAmount",
159
+ ]);
160
+ addNumber(mechanism, "baseBandwidthHz", properties, ["BaseBandwidthHz"]);
161
+ addNumber(mechanism, "darkBandwidthHz", properties, ["DarkBandwidthHz"]);
162
+ addNumber(mechanism, "feedbackLimit", properties, ["FeedbackLimit"]);
163
+ addNumber(mechanism, "quantizationBits", properties, ["QuantizationBits"]);
164
+ addString(mechanism, "memoryCompressionMode", properties, [
165
+ "MemoryCompressionMode",
166
+ ]);
167
+ addBoolean(mechanism, "supplySensitive", properties, ["SupplySensitive"]);
168
+ addNumber(mechanism, "minDelayFloorMs", properties, ["MinDelayFloorMs"]);
169
+ addString(mechanism, "dryBlendPolicy", properties, ["DryBlendPolicy"]);
138
170
  if (Object.keys(mechanism).length > 0) {
139
171
  out.mechanism = mechanism;
140
172
  }
@@ -142,34 +174,40 @@ function delayChipDescriptor(properties) {
142
174
  }
143
175
  function reverbDescriptor(properties) {
144
176
  const out = scalarDescriptor(properties, [
145
- ['inputGain', ['InputGain']],
146
- ['outputGain', ['OutputGain']],
147
- ['preDelayMs', ['PreDelayMs']],
148
- ['decay', ['Decay']],
149
- ['mix', ['Mix']],
150
- ['level', ['Level', 'OutputLevel']],
151
- ['minOutputLevel', ['MinOutputLevel']],
152
- ['maxOutputLevel', ['MaxOutputLevel']],
153
- ['tone', ['Tone']],
154
- ['damping', ['Damping']],
155
- ['size', ['Size']],
156
- ['modRateHz', ['ModRateHz']],
157
- ['modDepthMs', ['ModDepthMs']],
158
- ['headroom', ['Headroom']],
159
- ['stereoOutputMode', ['StereoOutputMode']],
177
+ ["inputGain", ["InputGain"]],
178
+ ["outputGain", ["OutputGain"]],
179
+ ["preDelayMs", ["PreDelayMs"]],
180
+ ["decay", ["Decay"]],
181
+ ["mix", ["Mix"]],
182
+ ["level", ["Level", "OutputLevel"]],
183
+ ["minOutputLevel", ["MinOutputLevel"]],
184
+ ["maxOutputLevel", ["MaxOutputLevel"]],
185
+ ["tone", ["Tone"]],
186
+ ["damping", ["Damping"]],
187
+ ["size", ["Size"]],
188
+ ["modRateHz", ["ModRateHz"]],
189
+ ["modDepthMs", ["ModDepthMs"]],
190
+ ["headroom", ["Headroom"]],
191
+ ["stereoOutputMode", ["StereoOutputMode"]],
160
192
  ]);
161
193
  const algorithm = {};
162
- addString(algorithm, 'profileAllPassMode', properties, ['ProfileAllPassMode']);
163
- addNumberArray(algorithm, 'tankBaseMs', properties, ['TankBaseMs'], 4);
164
- addNumberArray(algorithm, 'profileAllPassBaseMs', properties, ['ProfileAllPassBaseMs'], 2);
165
- addNumberArray(algorithm, 'profileAllPassSizeMs', properties, ['ProfileAllPassSizeMs'], 2);
166
- addNumber(algorithm, 'brightBandwidthHz', properties, ['BrightBandwidthHz']);
167
- addNumber(algorithm, 'darkBandwidthHz', properties, ['DarkBandwidthHz']);
168
- addNumber(algorithm, 'feedbackTrim', properties, ['FeedbackTrim']);
169
- addNumber(algorithm, 'springFlutterBaseSamples', properties, ['SpringFlutterBaseSamples']);
170
- addNumber(algorithm, 'springFlutterSizeSamples', properties, ['SpringFlutterSizeSamples']);
171
- addNumber(algorithm, 'dampingMinimum', properties, ['DampingMinimum']);
172
- addNumber(algorithm, 'dampingScale', properties, ['DampingScale']);
194
+ addString(algorithm, "profileAllPassMode", properties, [
195
+ "ProfileAllPassMode",
196
+ ]);
197
+ addNumberArray(algorithm, "tankBaseMs", properties, ["TankBaseMs"], 4);
198
+ addNumberArray(algorithm, "profileAllPassBaseMs", properties, ["ProfileAllPassBaseMs"], 2);
199
+ addNumberArray(algorithm, "profileAllPassSizeMs", properties, ["ProfileAllPassSizeMs"], 2);
200
+ addNumber(algorithm, "brightBandwidthHz", properties, ["BrightBandwidthHz"]);
201
+ addNumber(algorithm, "darkBandwidthHz", properties, ["DarkBandwidthHz"]);
202
+ addNumber(algorithm, "feedbackTrim", properties, ["FeedbackTrim"]);
203
+ addNumber(algorithm, "springFlutterBaseSamples", properties, [
204
+ "SpringFlutterBaseSamples",
205
+ ]);
206
+ addNumber(algorithm, "springFlutterSizeSamples", properties, [
207
+ "SpringFlutterSizeSamples",
208
+ ]);
209
+ addNumber(algorithm, "dampingMinimum", properties, ["DampingMinimum"]);
210
+ addNumber(algorithm, "dampingScale", properties, ["DampingScale"]);
173
211
  if (Object.keys(algorithm).length > 0) {
174
212
  out.algorithm = algorithm;
175
213
  }
@@ -177,35 +215,35 @@ function reverbDescriptor(properties) {
177
215
  }
178
216
  function compressorDescriptor(properties) {
179
217
  const out = scalarDescriptor(properties, [
180
- ['inputGain', ['InputGain']],
181
- ['outputGain', ['OutputGain']],
182
- ['detectorMode', ['DetectorMode']],
183
- ['sensitivity', ['Sensitivity']],
184
- ['minSensitivity', ['MinSensitivity']],
185
- ['maxSensitivity', ['MaxSensitivity']],
186
- ['level', ['Level', 'OutputLevel']],
187
- ['minOutputLevel', ['MinOutputLevel']],
188
- ['maxOutputLevel', ['MaxOutputLevel']],
189
- ['attackMs', ['AttackMs']],
190
- ['minAttackMs', ['MinAttackMs']],
191
- ['maxAttackMs', ['MaxAttackMs']],
192
- ['releaseMs', ['ReleaseMs']],
193
- ['minReleaseMs', ['MinReleaseMs']],
194
- ['maxReleaseMs', ['MaxReleaseMs']],
195
- ['ratio', ['Ratio']],
196
- ['thresholdDb', ['ThresholdDb']],
197
- ['kneeDb', ['KneeDb']],
198
- ['mix', ['Mix']],
199
- ['tone', ['Tone']],
200
- ['inputDrive', ['InputDrive']],
201
- ['minInputDrive', ['MinInputDrive']],
202
- ['maxInputDrive', ['MaxInputDrive']],
203
- ['headroom', ['Headroom']],
218
+ ["inputGain", ["InputGain"]],
219
+ ["outputGain", ["OutputGain"]],
220
+ ["detectorMode", ["DetectorMode"]],
221
+ ["sensitivity", ["Sensitivity"]],
222
+ ["minSensitivity", ["MinSensitivity"]],
223
+ ["maxSensitivity", ["MaxSensitivity"]],
224
+ ["level", ["Level", "OutputLevel"]],
225
+ ["minOutputLevel", ["MinOutputLevel"]],
226
+ ["maxOutputLevel", ["MaxOutputLevel"]],
227
+ ["attackMs", ["AttackMs"]],
228
+ ["minAttackMs", ["MinAttackMs"]],
229
+ ["maxAttackMs", ["MaxAttackMs"]],
230
+ ["releaseMs", ["ReleaseMs"]],
231
+ ["minReleaseMs", ["MinReleaseMs"]],
232
+ ["maxReleaseMs", ["MaxReleaseMs"]],
233
+ ["ratio", ["Ratio"]],
234
+ ["thresholdDb", ["ThresholdDb"]],
235
+ ["kneeDb", ["KneeDb"]],
236
+ ["mix", ["Mix"]],
237
+ ["tone", ["Tone"]],
238
+ ["inputDrive", ["InputDrive"]],
239
+ ["minInputDrive", ["MinInputDrive"]],
240
+ ["maxInputDrive", ["MaxInputDrive"]],
241
+ ["headroom", ["Headroom"]],
204
242
  ]);
205
243
  const topology = {};
206
- addString(topology, 'topology', properties, ['Topology']);
207
- addNumber(topology, 'otaProfileScale', properties, ['OtaProfileScale']);
208
- addNumber(topology, 'makeupGainScale', properties, ['MakeupGainScale']);
244
+ addString(topology, "topology", properties, ["Topology"]);
245
+ addNumber(topology, "otaProfileScale", properties, ["OtaProfileScale"]);
246
+ addNumber(topology, "makeupGainScale", properties, ["MakeupGainScale"]);
209
247
  if (Object.keys(topology).length > 0) {
210
248
  out.topology = topology;
211
249
  }
@@ -213,64 +251,64 @@ function compressorDescriptor(properties) {
213
251
  }
214
252
  function octaveDescriptor(properties) {
215
253
  return scalarDescriptor(properties, [
216
- ['inputGain', ['InputGain']],
217
- ['outputGain', ['OutputGain']],
218
- ['algorithm', ['Algorithm', 'Mechanism']],
219
- ['dividerMode', ['DividerMode']],
220
- ['dividerStages', ['DividerStages']],
221
- ['trackerCutoffHz', ['TrackerCutoffHz']],
222
- ['schmittHysteresis', ['SchmittHysteresis']],
223
- ['gateThreshold', ['GateThreshold']],
224
- ['gateRelease', ['GateRelease']],
225
- ['square1CutoffHz', ['Square1CutoffHz']],
226
- ['square2CutoffHz', ['Square2CutoffHz']],
227
- ['chopperPreCutoffHz', ['ChopperPreCutoffHz']],
228
- ['chopperPostCutoffHz', ['ChopperPostCutoffHz']],
229
- ['chopperControlCutoffHz', ['ChopperControlCutoffHz']],
230
- ['inputDrive', ['InputDrive']],
231
- ['minInputDrive', ['MinInputDrive']],
232
- ['maxInputDrive', ['MaxInputDrive']],
233
- ['headroom', ['Headroom']],
234
- ['mix', ['Mix']],
235
- ['minMix', ['MinMix']],
236
- ['maxMix', ['MaxMix']],
237
- ['level', ['Level', 'OutputLevel']],
238
- ['minOutputLevel', ['MinOutputLevel']],
239
- ['maxOutputLevel', ['MaxOutputLevel']],
240
- ['toneHz', ['ToneHz']],
241
- ['minToneHz', ['MinToneHz']],
242
- ['maxToneHz', ['MaxToneHz']],
243
- ['directLevel', ['DirectLevel']],
244
- ['oct1Level', ['Oct1Level']],
245
- ['oct2Level', ['Oct2Level']],
246
- ['carrierModRateHz', ['CarrierModRateHz']],
247
- ['minCarrierModRateHz', ['MinCarrierModRateHz', 'MinLfoRateHz']],
248
- ['maxCarrierModRateHz', ['MaxCarrierModRateHz', 'MaxLfoRateHz']],
249
- ['carrierModAmount', ['CarrierModAmount', 'LfoAmount']],
250
- ['carrierModShape', ['CarrierModShape', 'LfoShape']],
254
+ ["inputGain", ["InputGain"]],
255
+ ["outputGain", ["OutputGain"]],
256
+ ["algorithm", ["Algorithm", "Mechanism"]],
257
+ ["dividerMode", ["DividerMode"]],
258
+ ["dividerStages", ["DividerStages"]],
259
+ ["trackerCutoffHz", ["TrackerCutoffHz"]],
260
+ ["schmittHysteresis", ["SchmittHysteresis"]],
261
+ ["gateThreshold", ["GateThreshold"]],
262
+ ["gateRelease", ["GateRelease"]],
263
+ ["square1CutoffHz", ["Square1CutoffHz"]],
264
+ ["square2CutoffHz", ["Square2CutoffHz"]],
265
+ ["chopperPreCutoffHz", ["ChopperPreCutoffHz"]],
266
+ ["chopperPostCutoffHz", ["ChopperPostCutoffHz"]],
267
+ ["chopperControlCutoffHz", ["ChopperControlCutoffHz"]],
268
+ ["inputDrive", ["InputDrive"]],
269
+ ["minInputDrive", ["MinInputDrive"]],
270
+ ["maxInputDrive", ["MaxInputDrive"]],
271
+ ["headroom", ["Headroom"]],
272
+ ["mix", ["Mix"]],
273
+ ["minMix", ["MinMix"]],
274
+ ["maxMix", ["MaxMix"]],
275
+ ["level", ["Level", "OutputLevel"]],
276
+ ["minOutputLevel", ["MinOutputLevel"]],
277
+ ["maxOutputLevel", ["MaxOutputLevel"]],
278
+ ["toneHz", ["ToneHz"]],
279
+ ["minToneHz", ["MinToneHz"]],
280
+ ["maxToneHz", ["MaxToneHz"]],
281
+ ["directLevel", ["DirectLevel"]],
282
+ ["oct1Level", ["Oct1Level"]],
283
+ ["oct2Level", ["Oct2Level"]],
284
+ ["carrierModRateHz", ["CarrierModRateHz"]],
285
+ ["minCarrierModRateHz", ["MinCarrierModRateHz", "MinLfoRateHz"]],
286
+ ["maxCarrierModRateHz", ["MaxCarrierModRateHz", "MaxLfoRateHz"]],
287
+ ["carrierModAmount", ["CarrierModAmount", "LfoAmount"]],
288
+ ["carrierModShape", ["CarrierModShape", "LfoShape"]],
251
289
  ]);
252
290
  }
253
291
  const COMMON_RUNTIME_FIELDS = [
254
- ['inputGain', ['InputGain']],
255
- ['outputGain', ['OutputGain']],
256
- ['sensitivity', ['Sensitivity']],
257
- ['minSensitivity', ['MinSensitivity']],
258
- ['maxSensitivity', ['MaxSensitivity']],
259
- ['attackMs', ['AttackMs']],
260
- ['minAttackMs', ['MinAttackMs']],
261
- ['maxAttackMs', ['MaxAttackMs']],
262
- ['releaseMs', ['ReleaseMs']],
263
- ['minReleaseMs', ['MinReleaseMs']],
264
- ['maxReleaseMs', ['MaxReleaseMs']],
265
- ['triggerThreshold', ['TriggerThreshold']],
266
- ['minGain', ['MinGain']],
267
- ['level', ['Level', 'OutputLevel']],
268
- ['minOutputLevel', ['MinOutputLevel']],
269
- ['maxOutputLevel', ['MaxOutputLevel']],
270
- ['headroom', ['Headroom']],
271
- ['mix', ['Mix']],
272
- ['minMix', ['MinMix']],
273
- ['maxMix', ['MaxMix']],
292
+ ["inputGain", ["InputGain"]],
293
+ ["outputGain", ["OutputGain"]],
294
+ ["sensitivity", ["Sensitivity"]],
295
+ ["minSensitivity", ["MinSensitivity"]],
296
+ ["maxSensitivity", ["MaxSensitivity"]],
297
+ ["attackMs", ["AttackMs"]],
298
+ ["minAttackMs", ["MinAttackMs"]],
299
+ ["maxAttackMs", ["MaxAttackMs"]],
300
+ ["releaseMs", ["ReleaseMs"]],
301
+ ["minReleaseMs", ["MinReleaseMs"]],
302
+ ["maxReleaseMs", ["MaxReleaseMs"]],
303
+ ["triggerThreshold", ["TriggerThreshold"]],
304
+ ["minGain", ["MinGain"]],
305
+ ["level", ["Level", "OutputLevel"]],
306
+ ["minOutputLevel", ["MinOutputLevel"]],
307
+ ["maxOutputLevel", ["MaxOutputLevel"]],
308
+ ["headroom", ["Headroom"]],
309
+ ["mix", ["Mix"]],
310
+ ["minMix", ["MinMix"]],
311
+ ["maxMix", ["MaxMix"]],
274
312
  ];
275
313
  function scalarDescriptor(properties, fields) {
276
314
  const out = {};
@@ -344,7 +382,7 @@ function firstStringList(properties, sourceNames) {
344
382
  return [];
345
383
  }
346
384
  return value
347
- .split(',')
385
+ .split(",")
348
386
  .map((item) => item.trim())
349
387
  .filter((item) => item.length > 0);
350
388
  }
@@ -357,17 +395,17 @@ function firstNumberList(properties, sourceNames) {
357
395
  }
358
396
  function parseNumberList(value) {
359
397
  return value
360
- .split(',')
398
+ .split(",")
361
399
  .map((item) => Number.parseFloat(item.trim()))
362
400
  .filter((item) => Number.isFinite(item));
363
401
  }
364
402
  function parseToneStackSections(properties) {
365
- const value = firstString(properties, ['ToneStackSections', 'Sections']);
403
+ const value = firstString(properties, ["ToneStackSections", "Sections"]);
366
404
  if (value === undefined) {
367
405
  return [];
368
406
  }
369
407
  return value
370
- .split(';')
408
+ .split(";")
371
409
  .map((section) => parseToneStackSection(section))
372
410
  .filter((section) => section !== null);
373
411
  }
@@ -379,21 +417,21 @@ function parseToneStackSection(value) {
379
417
  return { gain, zeroHz, poleHz };
380
418
  }
381
419
  function parseActiveEqBands(properties) {
382
- const frequencies = firstNumberList(properties, ['BandFrequenciesHz']);
420
+ const frequencies = firstNumberList(properties, ["BandFrequenciesHz"]);
383
421
  if (frequencies.length === 0) {
384
422
  return [];
385
423
  }
386
- const types = firstStringList(properties, ['BandFilterTypes']);
387
- const minFrequencies = firstNumberList(properties, ['MinBandFrequenciesHz']);
388
- const maxFrequencies = firstNumberList(properties, ['MaxBandFrequenciesHz']);
389
- const gains = firstNumberList(properties, ['BandGainsDb']);
390
- const minGains = firstNumberList(properties, ['MinBandGainsDb', 'MinGainDb']);
391
- const maxGains = firstNumberList(properties, ['MaxBandGainsDb', 'MaxGainDb']);
392
- const qValues = firstNumberList(properties, ['BandQ', 'Q']);
393
- const labels = firstStringList(properties, ['BandLabels']);
424
+ const types = firstStringList(properties, ["BandFilterTypes"]);
425
+ const minFrequencies = firstNumberList(properties, ["MinBandFrequenciesHz"]);
426
+ const maxFrequencies = firstNumberList(properties, ["MaxBandFrequenciesHz"]);
427
+ const gains = firstNumberList(properties, ["BandGainsDb"]);
428
+ const minGains = firstNumberList(properties, ["MinBandGainsDb", "MinGainDb"]);
429
+ const maxGains = firstNumberList(properties, ["MaxBandGainsDb", "MaxGainDb"]);
430
+ const qValues = firstNumberList(properties, ["BandQ", "Q"]);
431
+ const labels = firstStringList(properties, ["BandLabels"]);
394
432
  return frequencies.map((frequencyHz, index) => {
395
433
  const band = {
396
- type: types[index] ?? 'peaking',
434
+ type: types[index] ?? "peaking",
397
435
  frequencyHz,
398
436
  minFrequencyHz: numberAt(minFrequencies, index, frequencyHz),
399
437
  maxFrequencyHz: numberAt(maxFrequencies, index, frequencyHz),