@opendaw/studio-core 0.0.44 → 0.0.46

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 (75) hide show
  1. package/dist/AudioOfflineRenderer.d.ts +1 -2
  2. package/dist/AudioOfflineRenderer.d.ts.map +1 -1
  3. package/dist/AudioOfflineRenderer.js +10 -3
  4. package/dist/EffectBox.d.ts +2 -2
  5. package/dist/EffectBox.d.ts.map +1 -1
  6. package/dist/EffectFactories.d.ts +9 -0
  7. package/dist/EffectFactories.d.ts.map +1 -1
  8. package/dist/EffectFactories.js +41 -24
  9. package/dist/EffectFactory.d.ts +1 -1
  10. package/dist/EffectFactory.d.ts.map +1 -1
  11. package/dist/EffectParameterDefaults.d.ts +5 -0
  12. package/dist/EffectParameterDefaults.d.ts.map +1 -0
  13. package/dist/EffectParameterDefaults.js +27 -0
  14. package/dist/Engine.d.ts +1 -1
  15. package/dist/Engine.d.ts.map +1 -1
  16. package/dist/EngineFacade.d.ts +1 -1
  17. package/dist/EngineFacade.d.ts.map +1 -1
  18. package/dist/EngineFacade.js +1 -1
  19. package/dist/EngineWorklet.d.ts +1 -1
  20. package/dist/EngineWorklet.d.ts.map +1 -1
  21. package/dist/EngineWorklet.js +3 -2
  22. package/dist/Preferences.d.ts +20 -0
  23. package/dist/Preferences.d.ts.map +1 -0
  24. package/dist/Preferences.js +46 -0
  25. package/dist/capture/CaptureDevices.d.ts +1 -1
  26. package/dist/capture/CaptureDevices.d.ts.map +1 -1
  27. package/dist/capture/CaptureDevices.js +22 -11
  28. package/dist/capture/CaptureMidi.js +1 -1
  29. package/dist/capture/RecordTrack.d.ts +2 -2
  30. package/dist/capture/RecordTrack.d.ts.map +1 -1
  31. package/dist/capture/Recording.d.ts +1 -1
  32. package/dist/capture/Recording.d.ts.map +1 -1
  33. package/dist/capture/Recording.js +1 -1
  34. package/dist/dawproject/BuiltinDevices.d.ts.map +1 -1
  35. package/dist/dawproject/BuiltinDevices.js +3 -2
  36. package/dist/dawproject/{DawProjectImport.d.ts → DawProjectImporter.d.ts} +1 -1
  37. package/dist/dawproject/DawProjectImporter.d.ts.map +1 -0
  38. package/dist/dawproject/{DawProjectImport.js → DawProjectImporter.js} +17 -5
  39. package/dist/dawproject/DawProjectImporter.test.d.ts +2 -0
  40. package/dist/dawproject/DawProjectImporter.test.d.ts.map +1 -0
  41. package/dist/dawproject/{DawProjectImport.test.js → DawProjectImporter.test.js} +1 -1
  42. package/dist/dawproject/DawProjectService.js +1 -1
  43. package/dist/dawproject/index.d.ts +1 -1
  44. package/dist/dawproject/index.d.ts.map +1 -1
  45. package/dist/dawproject/index.js +1 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/midi/MIDILearning.d.ts +1 -1
  50. package/dist/midi/MIDILearning.d.ts.map +1 -1
  51. package/dist/midi/MIDILearning.js +22 -3
  52. package/dist/processors.js +7 -7
  53. package/dist/processors.js.map +4 -4
  54. package/dist/project/Project.d.ts +12 -7
  55. package/dist/project/Project.d.ts.map +1 -1
  56. package/dist/project/Project.js +60 -33
  57. package/dist/project/ProjectMigration.d.ts.map +1 -1
  58. package/dist/project/ProjectMigration.js +10 -1
  59. package/dist/project/Recovery.d.ts +9 -0
  60. package/dist/project/Recovery.d.ts.map +1 -0
  61. package/dist/project/Recovery.js +49 -0
  62. package/dist/project/index.d.ts +1 -0
  63. package/dist/project/index.d.ts.map +1 -1
  64. package/dist/project/index.js +1 -0
  65. package/dist/workers-main.js +2 -2
  66. package/dist/workers-main.js.map +4 -4
  67. package/dist/ysync/YService.d.ts.map +1 -1
  68. package/dist/ysync/YService.js +19 -8
  69. package/dist/ysync/YSync.d.ts +4 -4
  70. package/dist/ysync/YSync.d.ts.map +1 -1
  71. package/dist/ysync/YSync.js +29 -26
  72. package/package.json +49 -49
  73. package/dist/dawproject/DawProjectImport.d.ts.map +0 -1
  74. package/dist/dawproject/DawProjectImport.test.d.ts +0 -2
  75. package/dist/dawproject/DawProjectImport.test.d.ts.map +0 -1
@@ -1,7 +1,6 @@
1
1
  import { int, Option } from "@opendaw/lib-std";
2
2
  import { ExportStemsConfiguration } from "@opendaw/studio-adapters";
3
- import { Project } from "./project/Project";
4
- import { ProjectMeta } from "./project/ProjectMeta";
3
+ import { Project, ProjectMeta } from "./project";
5
4
  export declare namespace AudioOfflineRenderer {
6
5
  const start: (source: Project, meta: ProjectMeta, optExportConfiguration: Option<ExportStemsConfiguration>, sampleRate?: int) => Promise<void>;
7
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AudioOfflineRenderer.d.ts","sourceRoot":"","sources":["../src/AudioOfflineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,GAAG,EAAE,MAAM,EAAmC,MAAM,kBAAkB,CAAA;AAI9G,OAAO,EAAC,wBAAwB,EAAC,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AAIjD,yBAAiB,oBAAoB,CAAC;IAC3B,MAAM,KAAK,GAAU,QAAQ,OAAO,EACf,MAAM,WAAW,EACjB,wBAAwB,MAAM,CAAC,wBAAwB,CAAC,EACxD,aAAY,GAAY,KAAG,OAAO,CAAC,IAAI,CAgClE,CAAA;CAiDJ"}
1
+ {"version":3,"file":"AudioOfflineRenderer.d.ts","sourceRoot":"","sources":["../src/AudioOfflineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,GAAG,EAAE,MAAM,EAAmC,MAAM,kBAAkB,CAAA;AAI9G,OAAO,EAAC,wBAAwB,EAAC,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,WAAW,CAAA;AAI9C,yBAAiB,oBAAoB,CAAC;IAC3B,MAAM,KAAK,GAAU,QAAQ,OAAO,EACf,MAAM,WAAW,EACjB,wBAAwB,MAAM,CAAC,wBAAwB,CAAC,EACxD,aAAY,GAAY,KAAG,OAAO,CAAC,IAAI,CAgClE,CAAA;CAwDJ"}
@@ -76,12 +76,19 @@ export var AudioOfflineRenderer;
76
76
  });
77
77
  zip.file(`${trackNames[stemIndex]}.wav`, file, { binary: true });
78
78
  }
79
- const arrayBuffer = await zip.generateAsync({
79
+ const { status, value: arrayBuffer, error } = await Promises.tryCatch(zip.generateAsync({
80
80
  type: "arraybuffer",
81
81
  compression: "DEFLATE",
82
82
  compressionOptions: { level: 6 }
83
- });
83
+ }));
84
84
  dialog.terminate();
85
+ if (status === "rejected") {
86
+ await RuntimeNotifier.info({
87
+ headline: "Error",
88
+ message: `Could not create zip file: ${String(error)}`
89
+ });
90
+ return;
91
+ }
85
92
  const approved = await RuntimeNotifier.approve({
86
93
  headline: "Save Zip",
87
94
  message: `Size: ${arrayBuffer.byteLength >> 20}M`,
@@ -91,7 +98,7 @@ export var AudioOfflineRenderer;
91
98
  return;
92
99
  }
93
100
  const saveResult = await Promises.tryCatch(Files.save(arrayBuffer, { suggestedName: `${meta.name}.zip` }));
94
- if (saveResult.status === "rejected") {
101
+ if (saveResult.status === "rejected" && !Errors.isAbort(saveResult.error)) {
95
102
  panic(String(saveResult.error));
96
103
  }
97
104
  };
@@ -1,3 +1,3 @@
1
- import { ArpeggioDeviceBox, DelayDeviceBox, ModularDeviceBox, PitchDeviceBox, RevampDeviceBox, ReverbDeviceBox, StereoToolDeviceBox, UnknownAudioEffectDeviceBox, UnknownMidiEffectDeviceBox, ZeitgeistDeviceBox } from "@opendaw/studio-boxes";
2
- export type EffectBox = ArpeggioDeviceBox | PitchDeviceBox | ZeitgeistDeviceBox | UnknownMidiEffectDeviceBox | DelayDeviceBox | ReverbDeviceBox | RevampDeviceBox | StereoToolDeviceBox | ModularDeviceBox | UnknownAudioEffectDeviceBox;
1
+ import { ArpeggioDeviceBox, CompressorDeviceBox, CrusherDeviceBox, DelayDeviceBox, FoldDeviceBox, ModularDeviceBox, PitchDeviceBox, RevampDeviceBox, ReverbDeviceBox, StereoToolDeviceBox, UnknownAudioEffectDeviceBox, UnknownMidiEffectDeviceBox, ZeitgeistDeviceBox } from "@opendaw/studio-boxes";
2
+ export type EffectBox = ArpeggioDeviceBox | PitchDeviceBox | ZeitgeistDeviceBox | UnknownMidiEffectDeviceBox | DelayDeviceBox | ReverbDeviceBox | RevampDeviceBox | StereoToolDeviceBox | ModularDeviceBox | UnknownAudioEffectDeviceBox | CompressorDeviceBox | CrusherDeviceBox | FoldDeviceBox;
3
3
  //# sourceMappingURL=EffectBox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EffectBox.d.ts","sourceRoot":"","sources":["../src/EffectBox.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,kBAAkB,EACrB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,MAAM,SAAS,GACf,iBAAiB,GAAG,cAAc,GAAG,kBAAkB,GAAG,0BAA0B,GACpF,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,mBAAmB,GACxE,gBAAgB,GAAG,2BAA2B,CAAA"}
1
+ {"version":3,"file":"EffectBox.d.ts","sourceRoot":"","sources":["../src/EffectBox.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,kBAAkB,EACrB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,MAAM,SAAS,GACf,iBAAiB,GAAG,cAAc,GAAG,kBAAkB,GAAG,0BAA0B,GACpF,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,mBAAmB,GACxE,gBAAgB,GAAG,2BAA2B,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,aAAa,CAAA"}
@@ -5,7 +5,10 @@ export declare namespace EffectFactories {
5
5
  const Zeitgeist: EffectFactory;
6
6
  const StereoTool: EffectFactory;
7
7
  const Delay: EffectFactory;
8
+ const Compressor: EffectFactory;
8
9
  const Reverb: EffectFactory;
10
+ const Crusher: EffectFactory;
11
+ const Fold: EffectFactory;
9
12
  const Revamp: EffectFactory;
10
13
  const Modular: EffectFactory;
11
14
  const MidiNamed: {
@@ -15,18 +18,24 @@ export declare namespace EffectFactories {
15
18
  };
16
19
  const AudioNamed: {
17
20
  StereoTool: EffectFactory;
21
+ Compressor: EffectFactory;
18
22
  Delay: EffectFactory;
19
23
  Reverb: EffectFactory;
20
24
  Revamp: EffectFactory;
25
+ Crusher: EffectFactory;
26
+ Fold: EffectFactory;
21
27
  Modular: EffectFactory;
22
28
  };
23
29
  const MidiList: ReadonlyArray<Readonly<EffectFactory>>;
24
30
  const AudioList: ReadonlyArray<Readonly<EffectFactory>>;
25
31
  const MergedNamed: {
26
32
  StereoTool: EffectFactory;
33
+ Compressor: EffectFactory;
27
34
  Delay: EffectFactory;
28
35
  Reverb: EffectFactory;
29
36
  Revamp: EffectFactory;
37
+ Crusher: EffectFactory;
38
+ Fold: EffectFactory;
30
39
  Modular: EffectFactory;
31
40
  Arpeggio: EffectFactory;
32
41
  Pitch: EffectFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"EffectFactories.d.ts","sourceRoot":"","sources":["../src/EffectFactories.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAE7C,yBAAiB,eAAe,CAAC;IACtB,MAAM,QAAQ,EAAE,aAWtB,CAAA;IAEM,MAAM,KAAK,EAAE,aAWnB,CAAA;IAEM,MAAM,SAAS,EAAE,aAqBvB,CAAA;IAEM,MAAM,UAAU,EAAE,aAYxB,CAAA;IAEM,MAAM,KAAK,EAAE,aAYnB,CAAA;IAEM,MAAM,MAAM,EAAE,aAapB,CAAA;IAEM,MAAM,MAAM,EAAE,aAgCpB,CAAA;IAEM,MAAM,OAAO,EAAE,aAoCrB,CAAA;IAEM,MAAM,SAAS;;;;KAA+B,CAAA;IAC9C,MAAM,UAAU;;;;;;KAA+C,CAAA;IAC/D,MAAM,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAA4B,CAAA;IACjF,MAAM,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAA6B,CAAA;IACnF,MAAM,WAAW;;;;;;;;;KAAgC,CAAA;IACxD,KAAY,cAAc,GAAG,MAAM,OAAO,SAAS,CAAA;IACnD,KAAY,eAAe,GAAG,MAAM,OAAO,UAAU,CAAA;CACxD"}
1
+ {"version":3,"file":"EffectFactories.d.ts","sourceRoot":"","sources":["../src/EffectFactories.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAG7C,yBAAiB,eAAe,CAAC;IACtB,MAAM,QAAQ,EAAE,aAWtB,CAAA;IAEM,MAAM,KAAK,EAAE,aAWnB,CAAA;IAEM,MAAM,SAAS,EAAE,aAqBvB,CAAA;IAEM,MAAM,UAAU,EAAE,aAYxB,CAAA;IAEM,MAAM,KAAK,EAAE,aAYnB,CAAA;IAEM,MAAM,UAAU,EAAE,aAYxB,CAAA;IAEM,MAAM,MAAM,EAAE,aAapB,CAAA;IAEM,MAAM,OAAO,EAAE,aAYrB,CAAA;IAEM,MAAM,IAAI,EAAE,aAYlB,CAAA;IAEM,MAAM,MAAM,EAAE,aAYpB,CAAA;IAEM,MAAM,OAAO,EAAE,aAoCrB,CAAA;IAEM,MAAM,SAAS;;;;KAA+B,CAAA;IAC9C,MAAM,UAAU;;;;;;;;;KAA0E,CAAA;IAC1F,MAAM,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAA4B,CAAA;IACjF,MAAM,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAA6B,CAAA;IACnF,MAAM,WAAW;;;;;;;;;;;;KAAgC,CAAA;IACxD,KAAY,cAAc,GAAG,MAAM,OAAO,SAAS,CAAA;IACnD,KAAY,eAAe,GAAG,MAAM,OAAO,UAAU,CAAA;CACxD"}
@@ -1,6 +1,7 @@
1
- import { INVERSE_SQRT_2, UUID } from "@opendaw/lib-std";
2
- import { ArpeggioDeviceBox, DelayDeviceBox, GrooveShuffleBox, ModularAudioInputBox, ModularAudioOutputBox, ModularBox, ModularDeviceBox, ModuleConnectionBox, PitchDeviceBox, RevampDeviceBox, ReverbDeviceBox, StereoToolDeviceBox, ZeitgeistDeviceBox } from "@opendaw/studio-boxes";
1
+ import { UUID } from "@opendaw/lib-std";
2
+ import { ArpeggioDeviceBox, CompressorDeviceBox, CrusherDeviceBox, DelayDeviceBox, FoldDeviceBox, GrooveShuffleBox, ModularAudioInputBox, ModularAudioOutputBox, ModularBox, ModularDeviceBox, ModuleConnectionBox, PitchDeviceBox, RevampDeviceBox, ReverbDeviceBox, StereoToolDeviceBox, ZeitgeistDeviceBox } from "@opendaw/studio-boxes";
3
3
  import { IconSymbol } from "@opendaw/studio-adapters";
4
+ import { EffectParameterDefaults } from "./EffectParameterDefaults";
4
5
  export var EffectFactories;
5
6
  (function (EffectFactories) {
6
7
  EffectFactories.Arpeggio = {
@@ -73,6 +74,18 @@ export var EffectFactories;
73
74
  box.host.refer(unit);
74
75
  })
75
76
  };
77
+ EffectFactories.Compressor = {
78
+ defaultName: "Compressor",
79
+ defaultIcon: IconSymbol.Compressor,
80
+ description: "Reduces the dynamic range by attenuating signals above a threshold",
81
+ separatorBefore: false,
82
+ type: "audio",
83
+ create: ({ boxGraph }, unit, index) => CompressorDeviceBox.create(boxGraph, UUID.generate(), box => {
84
+ box.label.setValue("Compressor");
85
+ box.index.setValue(index);
86
+ box.host.refer(unit);
87
+ })
88
+ };
76
89
  EffectFactories.Reverb = {
77
90
  defaultName: "Reverb",
78
91
  defaultIcon: IconSymbol.Cube,
@@ -86,6 +99,30 @@ export var EffectFactories;
86
99
  box.host.refer(unit);
87
100
  })
88
101
  };
102
+ EffectFactories.Crusher = {
103
+ defaultName: "Crusher",
104
+ defaultIcon: IconSymbol.Bug,
105
+ description: "Degrates the audio signal",
106
+ separatorBefore: false,
107
+ type: "audio",
108
+ create: ({ boxGraph }, unit, index) => CrusherDeviceBox.create(boxGraph, UUID.generate(), box => {
109
+ box.label.setValue("Crusher");
110
+ box.index.setValue(index);
111
+ box.host.refer(unit);
112
+ })
113
+ };
114
+ EffectFactories.Fold = {
115
+ defaultName: "Fold",
116
+ defaultIcon: IconSymbol.Waveform,
117
+ description: "Folds the signal back into audio-range",
118
+ separatorBefore: false,
119
+ type: "audio",
120
+ create: ({ boxGraph }, unit, index) => FoldDeviceBox.create(boxGraph, UUID.generate(), box => {
121
+ box.label.setValue("Fold");
122
+ box.index.setValue(index);
123
+ box.host.refer(unit);
124
+ })
125
+ };
89
126
  EffectFactories.Revamp = {
90
127
  defaultName: "Revamp",
91
128
  defaultIcon: IconSymbol.EQ,
@@ -93,27 +130,7 @@ export var EffectFactories;
93
130
  separatorBefore: false,
94
131
  type: "audio",
95
132
  create: ({ boxGraph }, unit, index) => RevampDeviceBox.create(boxGraph, UUID.generate(), box => {
96
- box.label.setValue("Revamp");
97
- box.highPass.frequency.setInitValue(40.0);
98
- box.highPass.order.setInitValue(2);
99
- box.highPass.q.setInitValue(INVERSE_SQRT_2);
100
- box.highPass.enabled.setInitValue(true);
101
- box.lowShelf.frequency.setInitValue(80.0);
102
- box.lowShelf.gain.setInitValue(6);
103
- box.lowBell.frequency.setInitValue(120.0);
104
- box.lowBell.gain.setInitValue(6);
105
- box.lowBell.q.setInitValue(INVERSE_SQRT_2);
106
- box.midBell.frequency.setInitValue(640.0);
107
- box.midBell.q.setInitValue(INVERSE_SQRT_2);
108
- box.midBell.gain.setInitValue(6);
109
- box.highBell.frequency.setInitValue(3600.0);
110
- box.highBell.q.setInitValue(INVERSE_SQRT_2);
111
- box.highBell.gain.setInitValue(6);
112
- box.highShelf.frequency.setInitValue(10000.0);
113
- box.highShelf.gain.setInitValue(6);
114
- box.lowPass.frequency.setInitValue(15000.0);
115
- box.lowPass.order.setInitValue(2);
116
- box.lowPass.q.setInitValue(INVERSE_SQRT_2);
133
+ EffectParameterDefaults.defaultRevampDeviceBox(box);
117
134
  box.index.setValue(index);
118
135
  box.host.refer(unit);
119
136
  })
@@ -156,7 +173,7 @@ export var EffectFactories;
156
173
  }
157
174
  };
158
175
  EffectFactories.MidiNamed = { Arpeggio: EffectFactories.Arpeggio, Pitch: EffectFactories.Pitch, Zeitgeist: EffectFactories.Zeitgeist };
159
- EffectFactories.AudioNamed = { StereoTool: EffectFactories.StereoTool, Delay: EffectFactories.Delay, Reverb: EffectFactories.Reverb, Revamp: EffectFactories.Revamp, Modular: EffectFactories.Modular };
176
+ EffectFactories.AudioNamed = { StereoTool: EffectFactories.StereoTool, Compressor: EffectFactories.Compressor, Delay: EffectFactories.Delay, Reverb: EffectFactories.Reverb, Revamp: EffectFactories.Revamp, Crusher: EffectFactories.Crusher, Fold: EffectFactories.Fold, Modular: EffectFactories.Modular };
160
177
  EffectFactories.MidiList = Object.values(EffectFactories.MidiNamed);
161
178
  EffectFactories.AudioList = Object.values(EffectFactories.AudioNamed);
162
179
  EffectFactories.MergedNamed = { ...EffectFactories.MidiNamed, ...EffectFactories.AudioNamed };
@@ -1,7 +1,7 @@
1
1
  import { EffectPointerType, IconSymbol } from "@opendaw/studio-adapters";
2
2
  import { Field } from "@opendaw/lib-box";
3
3
  import { int } from "@opendaw/lib-std";
4
- import { Project } from "./project/Project";
4
+ import { Project } from "./project";
5
5
  import { EffectBox } from "./EffectBox";
6
6
  export interface EffectFactory {
7
7
  get defaultName(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"EffectFactory.d.ts","sourceRoot":"","sources":["../src/EffectFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AACpC,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAErC,MAAM,WAAW,aAAa;IAC1B,IAAI,WAAW,IAAI,MAAM,CAAA;IACzB,IAAI,WAAW,IAAI,UAAU,CAAA;IAC7B,IAAI,WAAW,IAAI,MAAM,CAAA;IACzB,IAAI,eAAe,IAAI,OAAO,CAAA;IAC9B,IAAI,IAAI,IAAI,OAAO,GAAG,MAAM,CAAA;IAE5B,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,SAAS,CAAA;CAClF"}
1
+ {"version":3,"file":"EffectFactory.d.ts","sourceRoot":"","sources":["../src/EffectFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AACpC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAErC,MAAM,WAAW,aAAa;IAC1B,IAAI,WAAW,IAAI,MAAM,CAAA;IACzB,IAAI,WAAW,IAAI,UAAU,CAAA;IAC7B,IAAI,WAAW,IAAI,MAAM,CAAA;IACzB,IAAI,eAAe,IAAI,OAAO,CAAA;IAC9B,IAAI,IAAI,IAAI,OAAO,GAAG,MAAM,CAAA;IAE5B,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,SAAS,CAAA;CAClF"}
@@ -0,0 +1,5 @@
1
+ import { RevampDeviceBox } from "@opendaw/studio-boxes";
2
+ export declare namespace EffectParameterDefaults {
3
+ const defaultRevampDeviceBox: (box: RevampDeviceBox) => void;
4
+ }
5
+ //# sourceMappingURL=EffectParameterDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EffectParameterDefaults.d.ts","sourceRoot":"","sources":["../src/EffectParameterDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAGrD,yBAAiB,uBAAuB,CAAC;IAC9B,MAAM,sBAAsB,GAAI,KAAK,eAAe,SAsB1D,CAAA;CACJ"}
@@ -0,0 +1,27 @@
1
+ import { INVERSE_SQRT_2 } from "@opendaw/lib-std";
2
+ export var EffectParameterDefaults;
3
+ (function (EffectParameterDefaults) {
4
+ EffectParameterDefaults.defaultRevampDeviceBox = (box) => {
5
+ box.label.setValue("Revamp");
6
+ box.highPass.frequency.setInitValue(40.0);
7
+ box.highPass.order.setInitValue(1);
8
+ box.highPass.q.setInitValue(Math.SQRT1_2);
9
+ box.highPass.enabled.setInitValue(true);
10
+ box.lowShelf.frequency.setInitValue(80.0);
11
+ box.lowShelf.gain.setInitValue(6);
12
+ box.lowBell.frequency.setInitValue(120.0);
13
+ box.lowBell.gain.setInitValue(6);
14
+ box.lowBell.q.setInitValue(INVERSE_SQRT_2);
15
+ box.midBell.frequency.setInitValue(640.0);
16
+ box.midBell.q.setInitValue(INVERSE_SQRT_2);
17
+ box.midBell.gain.setInitValue(6);
18
+ box.highBell.frequency.setInitValue(3600.0);
19
+ box.highBell.q.setInitValue(INVERSE_SQRT_2);
20
+ box.highBell.gain.setInitValue(6);
21
+ box.highShelf.frequency.setInitValue(10000.0);
22
+ box.highShelf.gain.setInitValue(6);
23
+ box.lowPass.frequency.setInitValue(15000.0);
24
+ box.lowPass.order.setInitValue(1);
25
+ box.lowPass.q.setInitValue(Math.SQRT1_2);
26
+ };
27
+ })(EffectParameterDefaults || (EffectParameterDefaults = {}));
package/dist/Engine.d.ts CHANGED
@@ -6,7 +6,7 @@ export interface Engine extends Terminable {
6
6
  play(): void;
7
7
  stop(): void;
8
8
  setPosition(position: ppqn): void;
9
- startRecording(countIn: boolean): void;
9
+ prepareRecordingState(countIn: boolean): void;
10
10
  stopRecording(): void;
11
11
  isReady(): Promise<void>;
12
12
  queryLoadingComplete(): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EACH,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,gBAAgB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AAEzC,MAAM,WAAW,MAAO,SAAQ,UAAU;IACtC,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,IAAI,IAAI,CAAA;IACZ,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACtC,aAAa,IAAI,IAAI,CAAA;IACrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,IAAI,IAAI,CAAA;IACZ,KAAK,IAAI,IAAI,CAAA;IACb,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY,CAAA;IAC5D,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACxC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC3D,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAAA;IAE7E,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IACzC,IAAI,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC3C,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,gBAAgB,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,iBAAiB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,wBAAwB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAC/D,IAAI,iBAAiB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,qBAAqB,IAAI,eAAe,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAC/D,IAAI,OAAO,IAAI,OAAO,CAAA;CACzB"}
1
+ {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EACH,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,gBAAgB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AAEzC,MAAM,WAAW,MAAO,SAAQ,UAAU;IACtC,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,IAAI,IAAI,CAAA;IACZ,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,aAAa,IAAI,IAAI,CAAA;IACrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,IAAI,IAAI,CAAA;IACZ,KAAK,IAAI,IAAI,CAAA;IACb,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY,CAAA;IAC5D,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACxC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC3D,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAAA;IAE7E,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IACzC,IAAI,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC3C,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAC5C,IAAI,gBAAgB,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,iBAAiB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,wBAAwB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAC/D,IAAI,iBAAiB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,qBAAqB,IAAI,eAAe,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAC/D,IAAI,OAAO,IAAI,OAAO,CAAA;CACzB"}
@@ -13,7 +13,7 @@ export declare class EngineFacade implements Engine {
13
13
  play(): void;
14
14
  stop(reset?: boolean): void;
15
15
  setPosition(position: ppqn): void;
16
- startRecording(countIn: boolean): void;
16
+ prepareRecordingState(countIn: boolean): void;
17
17
  stopRecording(): void;
18
18
  get position(): ObservableValue<ppqn>;
19
19
  get isPlaying(): ObservableValue<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"EngineFacade.d.ts","sourceRoot":"","sources":["../src/EngineFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,QAAQ,EAER,YAAY,EAEZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,gBAAgB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AAEzC,qBAAa,YAAa,YAAW,MAAM;;;IAmBvC,UAAU,CAAC,OAAO,EAAE,aAAa;IAmBjC,aAAa,IAAI,IAAI;IAErB,cAAc,IAAI,IAAI;IAMtB,IAAI,IAAI,IAAI;IACZ,IAAI,CAAC,KAAK,GAAE,OAAe,GAAG,IAAI;IAClC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IACjC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IACtC,aAAa,IAAI,IAAI;IAErB,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAwB;IAC7D,IAAI,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAyB;IAClE,IAAI,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,CAA2B;IACtE,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,CAA4B;IACxE,IAAI,gBAAgB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAgC;IACvF,IAAI,iBAAiB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAiC;IAC/E,IAAI,wBAAwB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAwC;IACvG,IAAI,iBAAiB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAiC;IAC9E,IAAI,qBAAqB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAqC;IACtF,IAAI,WAAW,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAA2B;IACjG,IAAI,OAAO,IAAI,OAAO,CAAmE;IAEzF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAGxC,KAAK,IAAI,IAAI;IACb,UAAU,IAAI,MAAM;IACpB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAG7E,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY;IAG5D,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;IAGxC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAGpC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAG1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAI3D,SAAS,IAAI,IAAI;CAIpB"}
1
+ {"version":3,"file":"EngineFacade.d.ts","sourceRoot":"","sources":["../src/EngineFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,GAAG,EACH,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,QAAQ,EAER,YAAY,EAEZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,gBAAgB,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AAEzC,qBAAa,YAAa,YAAW,MAAM;;;IAmBvC,UAAU,CAAC,OAAO,EAAE,aAAa;IAmBjC,aAAa,IAAI,IAAI;IAErB,cAAc,IAAI,IAAI;IAMtB,IAAI,IAAI,IAAI;IACZ,IAAI,CAAC,KAAK,GAAE,OAAe,GAAG,IAAI;IAClC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAC7C,aAAa,IAAI,IAAI;IAErB,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAwB;IAC7D,IAAI,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAyB;IAClE,IAAI,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,CAA2B;IACtE,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,CAA4B;IACxE,IAAI,gBAAgB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAgC;IACvF,IAAI,iBAAiB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAiC;IAC/E,IAAI,wBAAwB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAwC;IACvG,IAAI,iBAAiB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAiC;IAC9E,IAAI,qBAAqB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAqC;IACtF,IAAI,WAAW,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAA2B;IACjG,IAAI,OAAO,IAAI,OAAO,CAAmE;IAEzF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAGxC,KAAK,IAAI,IAAI;IACb,UAAU,IAAI,MAAM;IACpB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAG7E,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY;IAG5D,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;IAGxC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAGpC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAG1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAI3D,SAAS,IAAI,IAAI;CAIpB"}
@@ -28,7 +28,7 @@ export class EngineFacade {
28
28
  play() { this.#worklet.ifSome(worklet => worklet.play()); }
29
29
  stop(reset = false) { this.#worklet.ifSome(worklet => worklet.stop(reset)); }
30
30
  setPosition(position) { this.#worklet.ifSome(worklet => worklet.setPosition(position)); }
31
- startRecording(countIn) { this.#worklet.ifSome(worklet => worklet.startRecording(countIn)); }
31
+ prepareRecordingState(countIn) { this.#worklet.ifSome(worklet => worklet.prepareRecordingState(countIn)); }
32
32
  stopRecording() { this.#worklet.ifSome(worklet => worklet.stopRecording()); }
33
33
  get position() { return this.#position; }
34
34
  get isPlaying() { return this.#isPlaying; }
@@ -11,7 +11,7 @@ export declare class EngineWorklet extends AudioWorkletNode implements Engine {
11
11
  play(): void;
12
12
  stop(reset?: boolean): void;
13
13
  setPosition(position: ppqn): void;
14
- startRecording(countIn: boolean): void;
14
+ prepareRecordingState(countIn: boolean): void;
15
15
  stopRecording(): void;
16
16
  panic(): void;
17
17
  get isPlaying(): ObservableValue<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"EngineWorklet.d.ts","sourceRoot":"","sources":["../src/EngineWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,GAAG,EACH,sBAAsB,EAEtB,QAAQ,EACR,eAAe,EACf,QAAQ,EAER,YAAY,EAGZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAIrC,OAAO,EAEH,gBAAgB,EAOhB,wBAAwB,EACxB,UAAU,EACV,gBAAgB,EACnB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,qBAAa,aAAc,SAAQ,gBAAiB,YAAW,MAAM;;IACjE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAQ;IAEtB,QAAQ,CAAC,EAAE,SAAqB;gBAqBpB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,OAAO,EAChB,mBAAmB,CAAC,EAAE,wBAAwB,EAC9C,OAAO,CAAC,EAAE,gBAAgB;IAsHtC,IAAI,IAAI,IAAI;IACZ,IAAI,CAAC,KAAK,GAAE,OAAe,GAAG,IAAI;IAClC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IACjC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IACtC,aAAa,IAAI,IAAI;IACrB,KAAK,IAAI,IAAI;IAEb,IAAI,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAyB;IAClE,IAAI,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,CAA2B;IACtE,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,CAA4B;IACxE,IAAI,iBAAiB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAiC;IAC9E,IAAI,qBAAqB,IAAI,eAAe,CAAC,MAAM,CAAC,CAAqC;IACzF,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAwB;IAC7D,IAAI,iBAAiB,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAiC;IACxF,IAAI,wBAAwB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAwC;IACvG,IAAI,gBAAgB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAgC;IACvF,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAA2B;IAC1F,IAAI,OAAO,IAAI,OAAO,CAAuB;IAE7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IACxC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IACpC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY;IAC5D,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;IACxC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAI1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAG3D,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAQ7E,SAAS,IAAI,IAAI;CAIpB"}
1
+ {"version":3,"file":"EngineWorklet.d.ts","sourceRoot":"","sources":["../src/EngineWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,GAAG,EACH,sBAAsB,EAEtB,QAAQ,EACR,eAAe,EACf,QAAQ,EAER,YAAY,EAGZ,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAIrC,OAAO,EAEH,gBAAgB,EAOhB,wBAAwB,EACxB,UAAU,EACV,gBAAgB,EACnB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAGjC,qBAAa,aAAc,SAAQ,gBAAiB,YAAW,MAAM;;IACjE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAQ;IAEtB,QAAQ,CAAC,EAAE,SAAqB;gBAqBpB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,OAAO,EAChB,mBAAmB,CAAC,EAAE,wBAAwB,EAC9C,OAAO,CAAC,EAAE,gBAAgB;IAuHtC,IAAI,IAAI,IAAI;IACZ,IAAI,CAAC,KAAK,GAAE,OAAe,GAAG,IAAI;IAClC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAC7C,aAAa,IAAI,IAAI;IACrB,KAAK,IAAI,IAAI;IAEb,IAAI,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAyB;IAClE,IAAI,WAAW,IAAI,eAAe,CAAC,OAAO,CAAC,CAA2B;IACtE,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,CAA4B;IACxE,IAAI,iBAAiB,IAAI,eAAe,CAAC,GAAG,CAAC,CAAiC;IAC9E,IAAI,qBAAqB,IAAI,eAAe,CAAC,MAAM,CAAC,CAAqC;IACzF,IAAI,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAwB;IAC7D,IAAI,iBAAiB,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAiC;IACxF,IAAI,wBAAwB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAwC;IACvG,IAAI,gBAAgB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAgC;IACvF,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAA2B;IAC1F,IAAI,OAAO,IAAI,OAAO,CAAuB;IAE7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACxB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IACxC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IACpC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY;IAC5D,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;IACxC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAI1D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;IAG3D,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAQ7E,SAAS,IAAI,IAAI;CAIpB"}
@@ -56,7 +56,7 @@ export class EngineWorklet extends AudioWorkletNode {
56
56
  play() { dispatcher.dispatchAndForget(this.play); }
57
57
  stop(reset) { dispatcher.dispatchAndForget(this.stop, reset); }
58
58
  setPosition(position) { dispatcher.dispatchAndForget(this.setPosition, position); }
59
- startRecording(countIn) { dispatcher.dispatchAndForget(this.startRecording, countIn); }
59
+ prepareRecordingState(countIn) { dispatcher.dispatchAndForget(this.prepareRecordingState, countIn); }
60
60
  stopRecording() { dispatcher.dispatchAndForget(this.stopRecording); }
61
61
  setMetronomeEnabled(enabled) {
62
62
  dispatcher.dispatchAndForget(this.setMetronomeEnabled, enabled);
@@ -82,6 +82,7 @@ export class EngineWorklet extends AudioWorkletNode {
82
82
  }));
83
83
  Communicator.executor(messenger.channel("engine-to-client"), {
84
84
  log: (message) => console.log("WORKLET", message),
85
+ error: (reason) => this.dispatchEvent(new ErrorEvent("error", { error: reason })),
85
86
  ready: () => resolve(),
86
87
  fetchAudio: (uuid) => {
87
88
  return new Promise((resolve, reject) => {
@@ -132,7 +133,7 @@ export class EngineWorklet extends AudioWorkletNode {
132
133
  play() { this.#commands.play(); }
133
134
  stop(reset = false) { this.#commands.stop(reset); }
134
135
  setPosition(position) { this.#commands.setPosition(position); }
135
- startRecording(countIn) { this.#commands.startRecording(countIn); }
136
+ prepareRecordingState(countIn) { this.#commands.prepareRecordingState(countIn); }
136
137
  stopRecording() { this.#commands.stopRecording(); }
137
138
  panic() { this.#commands.panic(); }
138
139
  get isPlaying() { return this.#isPlaying; }
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ import { Observer, Subscription } from "@opendaw/lib-std";
3
+ declare const PreferencesSchema: z.ZodObject<{
4
+ "auto-open-clips": z.ZodDefault<z.ZodBoolean>;
5
+ "auto-create-output-compressor": z.ZodDefault<z.ZodBoolean>;
6
+ "footer-show-fps-meter": z.ZodDefault<z.ZodBoolean>;
7
+ "footer-show-build-infos": z.ZodDefault<z.ZodBoolean>;
8
+ }, z.core.$strip>;
9
+ export type Preferences = z.infer<typeof PreferencesSchema>;
10
+ export declare const Preferences: {
11
+ values: {
12
+ "auto-open-clips": boolean;
13
+ "auto-create-output-compressor": boolean;
14
+ "footer-show-fps-meter": boolean;
15
+ "footer-show-build-infos": boolean;
16
+ };
17
+ catchupAndSubscribe: <KEY extends keyof Preferences>(observer: Observer<Preferences[KEY]>, property: KEY) => Subscription;
18
+ };
19
+ export {};
20
+ //# sourceMappingURL=Preferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Preferences.d.ts","sourceRoot":"","sources":["../src/Preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AACrB,OAAO,EAAsB,QAAQ,EAAE,YAAY,EAAW,MAAM,kBAAkB,CAAA;AAEtF,QAAA,MAAM,iBAAiB;;;;;iBAKrB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,eAAO,MAAM,WAAW;;;;;;;0BAkCM,GAAG,SAAS,MAAM,WAAW,YACrC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,KAAG,YAAY;CAK1E,CAAA"}
@@ -0,0 +1,46 @@
1
+ import { z } from "zod";
2
+ import { isDefined, Notifier, tryCatch } from "@opendaw/lib-std";
3
+ const PreferencesSchema = z.object({
4
+ "auto-open-clips": z.boolean().default(false),
5
+ "auto-create-output-compressor": z.boolean().default(true),
6
+ "footer-show-fps-meter": z.boolean().default(false),
7
+ "footer-show-build-infos": z.boolean().default(false)
8
+ });
9
+ export const Preferences = (() => {
10
+ const STORAGE_KEY = "preferences";
11
+ const notifier = new Notifier();
12
+ const watch = (target) => new Proxy(target, {
13
+ set(obj, prop, value) {
14
+ const key = prop;
15
+ console.debug(`preference changed. key: ${key}, value: ${value}`);
16
+ obj[key] = value;
17
+ notifier.notify(key);
18
+ tryCatch(() => localStorage.setItem(STORAGE_KEY, JSON.stringify(target)));
19
+ return true;
20
+ },
21
+ preventExtensions() {
22
+ // Prevent the proxy target from being made non-extensible
23
+ return false;
24
+ }
25
+ });
26
+ const getOrCreate = () => {
27
+ const stored = localStorage.getItem(STORAGE_KEY);
28
+ if (isDefined(stored)) {
29
+ const { status, value } = tryCatch(() => JSON.parse(stored));
30
+ if (status === "success") {
31
+ return watch({ ...PreferencesSchema.parse(value) });
32
+ }
33
+ }
34
+ return watch({ ...PreferencesSchema.parse({}) });
35
+ };
36
+ const preferences = getOrCreate();
37
+ return {
38
+ values: preferences,
39
+ catchupAndSubscribe: (observer, property) => {
40
+ observer(preferences[property]);
41
+ return notifier.subscribe(key => { if (key === property) {
42
+ observer(preferences[property]);
43
+ } });
44
+ }
45
+ };
46
+ })();
@@ -1,5 +1,5 @@
1
1
  import { Option, Terminable, UUID } from "@opendaw/lib-std";
2
- import { Project } from "../project/Project";
2
+ import { Project } from "../project";
3
3
  import { Capture } from "./Capture";
4
4
  export declare class CaptureDevices implements Terminable {
5
5
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"CaptureDevices.d.ts","sourceRoot":"","sources":["../../src/capture/CaptureDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,MAAM,EAA2B,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAElH,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAIjC,qBAAa,cAAe,YAAW,UAAU;;gBAKjC,OAAO,EAAE,OAAO;IAiB5B,IAAI,OAAO,IAAI,OAAO,CAAuB;IAE7C,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAEtC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAUlD,WAAW,IAAI,aAAa,CAAC,OAAO,CAAC;IAKrC,SAAS,IAAI,IAAI;CAKpB"}
1
+ {"version":3,"file":"CaptureDevices.d.ts","sourceRoot":"","sources":["../../src/capture/CaptureDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,MAAM,EAA2B,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAElH,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAA;AAClC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAMjC,qBAAa,cAAe,YAAW,UAAU;;gBAMjC,OAAO,EAAE,OAAO;IA6B5B,IAAI,OAAO,IAAI,OAAO,CAAuB;IAE7C,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAEtC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAUlD,WAAW,IAAI,aAAa,CAAC,OAAO,CAAC;IAKrC,SAAS,IAAI,IAAI;CAKpB"}
@@ -6,22 +6,33 @@ export class CaptureDevices {
6
6
  #project;
7
7
  #subscription;
8
8
  #captures;
9
+ #captureSubscriptions;
9
10
  constructor(project) {
10
11
  this.#project = project;
11
- this.#captures = UUID.newSet(unit => unit.uuid);
12
+ this.#captures = UUID.newSet(({ uuid }) => uuid);
13
+ this.#captureSubscriptions = UUID.newSet(({ uuid }) => uuid);
12
14
  this.#subscription = this.#project.rootBox.audioUnits.pointerHub.catchupAndSubscribe({
13
- onAdd: ({ box }) => {
15
+ onAdded: ({ box }) => {
16
+ const uuid = box.address.uuid;
14
17
  const audioUnitBox = asInstanceOf(box, AudioUnitBox);
15
- const capture = audioUnitBox.capture.targetVertex
16
- .ifSome(({ box }) => box.accept({
17
- visitCaptureMidiBox: (box) => new CaptureMidi(this, audioUnitBox, box),
18
- visitCaptureAudioBox: (box) => new CaptureAudio(this, audioUnitBox, box)
19
- }));
20
- if (isDefined(capture)) {
21
- this.#captures.add(capture);
22
- }
18
+ const subscription = audioUnitBox.capture.catchupAndSubscribe(pointer => {
19
+ this.#captures.removeByKeyIfExist(uuid)?.terminate();
20
+ pointer.targetVertex.ifSome(({ box }) => {
21
+ const capture = box.accept({
22
+ visitCaptureMidiBox: (box) => new CaptureMidi(this, audioUnitBox, box),
23
+ visitCaptureAudioBox: (box) => new CaptureAudio(this, audioUnitBox, box)
24
+ });
25
+ if (isDefined(capture)) {
26
+ this.#captures.add(capture);
27
+ }
28
+ });
29
+ });
30
+ this.#captureSubscriptions.add({ uuid, subscription });
23
31
  },
24
- onRemove: ({ box: { address: { uuid } } }) => this.#captures.removeByKeyIfExist(uuid)?.terminate()
32
+ onRemoved: ({ box: { address: { uuid } } }) => {
33
+ this.#captures.removeByKeyIfExist(uuid)?.terminate();
34
+ this.#captureSubscriptions.get(uuid).subscription.terminate();
35
+ }
25
36
  });
26
37
  }
27
38
  get project() { return this.#project; }
@@ -3,7 +3,7 @@ import { Events } from "@opendaw/lib-dom";
3
3
  import { MidiData } from "@opendaw/lib-midi";
4
4
  import { Promises } from "@opendaw/lib-runtime";
5
5
  import { NoteSignal } from "@opendaw/studio-adapters";
6
- import { MidiDevices } from "../midi/MidiDevices";
6
+ import { MidiDevices } from "../midi";
7
7
  import { Capture } from "./Capture";
8
8
  import { RecordMidi } from "./RecordMidi";
9
9
  var warn = Errors.warn;
@@ -1,7 +1,7 @@
1
1
  import { AudioUnitBox, TrackBox } from "@opendaw/studio-boxes";
2
2
  import { TrackType } from "@opendaw/studio-adapters";
3
- import { Editing } from "@opendaw/lib-box";
3
+ import { BoxEditing } from "@opendaw/lib-box";
4
4
  export declare namespace RecordTrack {
5
- const findOrCreate: (editing: Editing, audioUnitBox: AudioUnitBox, type: TrackType) => TrackBox;
5
+ const findOrCreate: (editing: BoxEditing, audioUnitBox: AudioUnitBox, type: TrackType) => TrackBox;
6
6
  }
7
7
  //# sourceMappingURL=RecordTrack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecordTrack.d.ts","sourceRoot":"","sources":["../../src/capture/RecordTrack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE5D,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AAExC,yBAAiB,WAAW,CAAC;IAClB,MAAM,YAAY,GAAI,SAAS,OAAO,EAAE,cAAc,YAAY,EAAE,MAAM,SAAS,KAAG,QAe5F,CAAA;CACJ"}
1
+ {"version":3,"file":"RecordTrack.d.ts","sourceRoot":"","sources":["../../src/capture/RecordTrack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE5D,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAE3C,yBAAiB,WAAW,CAAC;IAClB,MAAM,YAAY,GAAI,SAAS,UAAU,EAAE,cAAc,YAAY,EAAE,MAAM,SAAS,KAAG,QAe/F,CAAA;CACJ"}
@@ -1,5 +1,5 @@
1
1
  import { Terminable } from "@opendaw/lib-std";
2
- import { Project } from "../project/Project";
2
+ import { Project } from "../project";
3
3
  export declare class Recording {
4
4
  #private;
5
5
  static get isRecording(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Recording.d.ts","sourceRoot":"","sources":["../../src/capture/Recording.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,UAAU,EAAa,MAAM,kBAAkB,CAAA;AAK7F,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAA;AAE1C,qBAAa,SAAS;;IAClB,MAAM,KAAK,WAAW,IAAI,OAAO,CAA2B;WAE/C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IA6D3E,OAAO;CACV"}
1
+ {"version":3,"file":"Recording.d.ts","sourceRoot":"","sources":["../../src/capture/Recording.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,UAAU,EAAa,MAAM,kBAAkB,CAAA;AAK7F,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAA;AAElC,qBAAa,SAAS;;IAClB,MAAM,KAAK,WAAW,IAAI,OAAO,CAA2B;WAE/C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IA6D3E,OAAO;CACV"}
@@ -25,7 +25,7 @@ export class Recording {
25
25
  return Errors.warn(String(error));
26
26
  }
27
27
  terminator.ownAll(...captures.map(capture => capture.startRecording()));
28
- engine.startRecording(countIn);
28
+ engine.prepareRecordingState(countIn);
29
29
  const { isRecording, isCountingIn } = engine;
30
30
  const stop = () => {
31
31
  if (isRecording.getValue() || isCountingIn.getValue()) {
@@ -1 +1 @@
1
- {"version":3,"file":"BuiltinDevices.d.ts","sourceRoot":"","sources":["../../src/dawproject/BuiltinDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAmB,MAAM,yBAAyB,CAAA;AACjG,OAAO,EAAC,eAAe,EAA0B,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAY,GAAG,EAAO,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAG9C,yBAAiB,cAAc,CAAC;IACrB,MAAM,SAAS,GAAI,UAAU,QAAQ,EAClB,WAAW,eAAe,EAC1B,OAAO,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EACvE,OAAO,GAAG,KAAG,eA4DtC,CAAA;CACJ"}
1
+ {"version":3,"file":"BuiltinDevices.d.ts","sourceRoot":"","sources":["../../src/dawproject/BuiltinDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAmB,MAAM,yBAAyB,CAAA;AACjG,OAAO,EAAC,eAAe,EAA0B,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAY,GAAG,EAAO,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAG9C,yBAAiB,cAAc,CAAC;IACrB,MAAM,SAAS,GAAI,UAAU,QAAQ,EAClB,WAAW,eAAe,EAC1B,OAAO,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EACvE,OAAO,GAAG,KAAG,eA6DtC,CAAA;CACJ"}
@@ -1,7 +1,7 @@
1
1
  import { EqBandType, ParameterDecoder } from "@opendaw/lib-dawproject";
2
2
  import { RevampDeviceBox } from "@opendaw/studio-boxes";
3
3
  import { ifDefined, UUID } from "@opendaw/lib-std";
4
- import { semitoneToHz } from "@opendaw/lib-dsp";
4
+ import { EffectParameterDefaults } from "../EffectParameterDefaults";
5
5
  export var BuiltinDevices;
6
6
  (function (BuiltinDevices) {
7
7
  BuiltinDevices.equalizer = (boxGraph, equalizer, field, index) => {
@@ -23,7 +23,7 @@ export var BuiltinDevices;
23
23
  const readPass = (schema, pass) => {
24
24
  const { order, frequency, q, enabled } = pass;
25
25
  order.setValue(mapOrder(schema.order));
26
- frequency.setValue(semitoneToHz(schema.freq.value));
26
+ frequency.setValue(ParameterDecoder.readValue(schema.freq));
27
27
  ifDefined(schema.Q?.value, value => q.setValue(value));
28
28
  ifDefined(schema.enabled?.value, value => enabled.setValue(value));
29
29
  };
@@ -34,6 +34,7 @@ export var BuiltinDevices;
34
34
  ifDefined(schema.enabled?.value, value => enabled.setValue(value));
35
35
  };
36
36
  return RevampDeviceBox.create(boxGraph, UUID.generate(), box => {
37
+ EffectParameterDefaults.defaultRevampDeviceBox(box);
37
38
  box.host.refer(field);
38
39
  box.index.setValue(index);
39
40
  box.label.setValue(equalizer.deviceName ?? "Revamp");
@@ -9,4 +9,4 @@ export declare namespace DawProjectImport {
9
9
  };
10
10
  const read: (schema: ProjectSchema, resources: DawProject.ResourceProvider) => Promise<Result>;
11
11
  }
12
- //# sourceMappingURL=DawProjectImport.d.ts.map
12
+ //# sourceMappingURL=DawProjectImporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DawProjectImporter.d.ts","sourceRoot":"","sources":["../../src/dawproject/DawProjectImporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAiBH,IAAI,EAEP,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAcH,aAAa,EAOhB,MAAM,yBAAyB,CAAA;AAuBhC,OAAO,EAAyC,eAAe,EAAY,MAAM,0BAA0B,CAAA;AAC3G,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAQvC,yBAAiB,gBAAgB,CAAC;IAW9B,KAAY,MAAM,GAAG;QACjB,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,QAAQ,EAAE,eAAe,CAAA;KAC5B,CAAA;IAOM,MAAM,IAAI,GAAU,QAAQ,aAAa,EAAE,WAAW,UAAU,CAAC,gBAAgB,KAAG,OAAO,CAAC,MAAM,CA2XxG,CAAA;CAaJ"}