@opendaw/studio-core 0.0.25 → 0.0.27

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 (118) hide show
  1. package/dist/AudioDevices.js +4 -4
  2. package/dist/AudioOfflineRenderer.d.ts.map +1 -1
  3. package/dist/AudioOfflineRenderer.js +9 -5
  4. package/dist/Engine.d.ts +4 -4
  5. package/dist/Engine.d.ts.map +1 -1
  6. package/dist/EngineFacade.d.ts +4 -4
  7. package/dist/EngineFacade.d.ts.map +1 -1
  8. package/dist/EngineWorklet.d.ts +4 -4
  9. package/dist/EngineWorklet.d.ts.map +1 -1
  10. package/dist/RecordingWorklet.d.ts +1 -1
  11. package/dist/RecordingWorklet.d.ts.map +1 -1
  12. package/dist/RecordingWorklet.js +1 -1
  13. package/dist/WavFile.d.ts +10 -0
  14. package/dist/WavFile.d.ts.map +1 -0
  15. package/dist/WavFile.js +94 -0
  16. package/dist/WorkerAgents.d.ts +1 -1
  17. package/dist/WorkerAgents.d.ts.map +1 -1
  18. package/dist/WorkerAgents.js +15 -3
  19. package/dist/capture/Capture.d.ts +1 -1
  20. package/dist/capture/Capture.d.ts.map +1 -1
  21. package/dist/capture/CaptureAudio.d.ts.map +1 -1
  22. package/dist/capture/CaptureAudio.js +4 -4
  23. package/dist/capture/CaptureDevices.d.ts +1 -1
  24. package/dist/capture/CaptureDevices.d.ts.map +1 -1
  25. package/dist/capture/CaptureMidi.d.ts.map +1 -1
  26. package/dist/capture/CaptureMidi.js +6 -5
  27. package/dist/capture/Recording.d.ts.map +1 -1
  28. package/dist/capture/Recording.js +3 -3
  29. package/dist/clouds/CloudAuthManager.d.ts +10 -0
  30. package/dist/clouds/CloudAuthManager.d.ts.map +1 -0
  31. package/dist/clouds/CloudAuthManager.js +195 -0
  32. package/dist/clouds/CloudBackup.d.ts +8 -0
  33. package/dist/clouds/CloudBackup.d.ts.map +1 -0
  34. package/dist/clouds/CloudBackup.js +55 -0
  35. package/dist/clouds/CloudBackupProjects.d.ts +10 -0
  36. package/dist/clouds/CloudBackupProjects.d.ts.map +1 -0
  37. package/dist/clouds/CloudBackupProjects.js +167 -0
  38. package/dist/clouds/CloudBackupSamples.d.ts +13 -0
  39. package/dist/clouds/CloudBackupSamples.d.ts.map +1 -0
  40. package/dist/clouds/CloudBackupSamples.js +129 -0
  41. package/dist/clouds/CloudHandler.d.ts +9 -0
  42. package/dist/clouds/CloudHandler.d.ts.map +1 -0
  43. package/dist/clouds/CloudHandler.js +1 -0
  44. package/dist/clouds/CloudService.d.ts +2 -0
  45. package/dist/clouds/CloudService.d.ts.map +1 -0
  46. package/dist/clouds/CloudService.js +1 -0
  47. package/dist/clouds/DropboxHandler.d.ts +12 -0
  48. package/dist/clouds/DropboxHandler.d.ts.map +1 -0
  49. package/dist/clouds/DropboxHandler.js +83 -0
  50. package/dist/clouds/GoogleDriveHandler.d.ts +12 -0
  51. package/dist/clouds/GoogleDriveHandler.d.ts.map +1 -0
  52. package/dist/clouds/GoogleDriveHandler.js +256 -0
  53. package/dist/dawproject/DawProject.d.ts +2 -2
  54. package/dist/dawproject/DawProject.d.ts.map +1 -1
  55. package/dist/dawproject/DawProjectExporter.js +2 -2
  56. package/dist/dawproject/DawProjectImport.d.ts +1 -1
  57. package/dist/dawproject/DawProjectImport.d.ts.map +1 -1
  58. package/dist/dawproject/DeviceIO.d.ts +1 -1
  59. package/dist/dawproject/DeviceIO.d.ts.map +1 -1
  60. package/dist/dawproject/DeviceIO.js +2 -1
  61. package/dist/index.d.ts +18 -12
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +18 -12
  64. package/dist/midi/MIDILearning.d.ts +26 -0
  65. package/dist/midi/MIDILearning.d.ts.map +1 -0
  66. package/dist/midi/MIDILearning.js +88 -0
  67. package/dist/midi/MIDIMessageSubscriber.d.ts +5 -0
  68. package/dist/midi/MIDIMessageSubscriber.d.ts.map +1 -0
  69. package/dist/midi/MIDIMessageSubscriber.js +40 -0
  70. package/dist/midi/MidiDevices.d.ts.map +1 -0
  71. package/dist/{MidiDevices.js → midi/MidiDevices.js} +6 -5
  72. package/dist/processors.js +3 -3
  73. package/dist/processors.js.map +4 -4
  74. package/dist/project/Project.d.ts +2 -0
  75. package/dist/project/Project.d.ts.map +1 -1
  76. package/dist/project/Project.js +7 -1
  77. package/dist/project/ProjectApi.d.ts +9 -1
  78. package/dist/project/ProjectApi.d.ts.map +1 -1
  79. package/dist/project/ProjectApi.js +67 -3
  80. package/dist/project/ProjectBundle.d.ts +1 -1
  81. package/dist/project/ProjectBundle.d.ts.map +1 -1
  82. package/dist/project/ProjectBundle.js +10 -12
  83. package/dist/project/ProjectPaths.d.ts +4 -4
  84. package/dist/project/ProjectPaths.d.ts.map +1 -1
  85. package/dist/project/ProjectProfile.d.ts +2 -2
  86. package/dist/project/ProjectProfile.d.ts.map +1 -1
  87. package/dist/project/ProjectProfile.js +3 -3
  88. package/dist/project/ProjectSignals.d.ts +6 -0
  89. package/dist/project/ProjectSignals.d.ts.map +1 -0
  90. package/dist/project/ProjectSignals.js +4 -0
  91. package/dist/project/ProjectStorage.d.ts +23 -0
  92. package/dist/project/ProjectStorage.d.ts.map +1 -0
  93. package/dist/project/ProjectStorage.js +59 -0
  94. package/dist/samples/MainThreadSampleLoader.d.ts +2 -2
  95. package/dist/samples/MainThreadSampleLoader.d.ts.map +1 -1
  96. package/dist/samples/MainThreadSampleLoader.js +2 -3
  97. package/dist/samples/MainThreadSampleManager.d.ts +4 -4
  98. package/dist/samples/MainThreadSampleManager.d.ts.map +1 -1
  99. package/dist/samples/OpenSampleAPI.d.ts +4 -2
  100. package/dist/samples/OpenSampleAPI.d.ts.map +1 -1
  101. package/dist/samples/OpenSampleAPI.js +19 -2
  102. package/dist/samples/SampleAPI.d.ts +2 -2
  103. package/dist/samples/SampleAPI.d.ts.map +1 -1
  104. package/dist/samples/SampleImporter.d.ts +1 -1
  105. package/dist/samples/SampleImporter.d.ts.map +1 -1
  106. package/dist/samples/SampleProvider.d.ts +1 -1
  107. package/dist/samples/SampleProvider.d.ts.map +1 -1
  108. package/dist/samples/SampleStorage.d.ts +7 -5
  109. package/dist/samples/SampleStorage.d.ts.map +1 -1
  110. package/dist/samples/SampleStorage.js +31 -17
  111. package/dist/workers.js +2 -2
  112. package/dist/workers.js.map +4 -4
  113. package/package.json +14 -14
  114. package/dist/MidiDevices.d.ts.map +0 -1
  115. package/dist/Wav.d.ts +0 -6
  116. package/dist/Wav.d.ts.map +0 -1
  117. package/dist/Wav.js +0 -46
  118. /package/dist/{MidiDevices.d.ts → midi/MidiDevices.d.ts} +0 -0
@@ -1,11 +1,11 @@
1
1
  import { Promises } from "@opendaw/lib-runtime";
2
- import { Arrays, isInstanceOf, warn } from "@opendaw/lib-std";
2
+ import { Arrays, Errors } from "@opendaw/lib-std";
3
3
  import { ConstrainDOM } from "@opendaw/lib-dom";
4
4
  export class AudioDevices {
5
5
  static async requestPermission() {
6
6
  const { status, value: stream } = await Promises.tryCatch(navigator.mediaDevices.getUserMedia({ audio: true }));
7
7
  if (status === "rejected") {
8
- return warn("Could not request permission.");
8
+ return Errors.warn("Could not request permission.");
9
9
  }
10
10
  stream.getTracks().forEach(track => track.stop());
11
11
  await this.updateInputList();
@@ -13,7 +13,7 @@ export class AudioDevices {
13
13
  static async requestStream(constraints) {
14
14
  const { status, value: stream, error } = await Promises.tryCatch(navigator.mediaDevices.getUserMedia({ audio: constraints }));
15
15
  if (status === "rejected") {
16
- return warn(isInstanceOf(error, OverconstrainedError) ?
16
+ return Errors.warn(Errors.isOverconstrained(error) ?
17
17
  error.constraint === "deviceId"
18
18
  ? `Could not find device with id: '${ConstrainDOM.resolveString(constraints.deviceId)}'`
19
19
  : error.constraint
@@ -26,7 +26,7 @@ export class AudioDevices {
26
26
  this.#inputs = Arrays.empty();
27
27
  const { status, value: devices } = await Promises.tryCatch(navigator.mediaDevices.enumerateDevices());
28
28
  if (status === "rejected") {
29
- return warn("Could not enumerate devices.");
29
+ return Errors.warn("Could not enumerate devices.");
30
30
  }
31
31
  this.#inputs = devices.filter(device => device.kind === "audioinput" && device.deviceId !== "" && device.groupId !== "");
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AudioOfflineRenderer.d.ts","sourceRoot":"","sources":["../src/AudioOfflineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,GAAG,EAAE,MAAM,EAAmC,MAAM,kBAAkB,CAAA;AAItG,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,CA4BlE,CAAA;CA6CJ"}
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,CA4BlE,CAAA;CAiDJ"}
@@ -1,9 +1,9 @@
1
- import { DefaultObservableValue, panic, RuntimeNotifier, TimeSpan } from "@opendaw/lib-std";
1
+ import { DefaultObservableValue, Errors, panic, RuntimeNotifier, TimeSpan } from "@opendaw/lib-std";
2
2
  import { PPQN } from "@opendaw/lib-dsp";
3
- import { AnimationFrame, Errors, Files } from "@opendaw/lib-dom";
3
+ import { AnimationFrame, Files } from "@opendaw/lib-dom";
4
4
  import { Promises, Wait } from "@opendaw/lib-runtime";
5
5
  import { ExportStemsConfiguration } from "@opendaw/studio-adapters";
6
- import { encodeWavFloat } from "./Wav";
6
+ import { WavFile } from "./WavFile";
7
7
  import { AudioWorklets } from "./AudioWorklets";
8
8
  export var AudioOfflineRenderer;
9
9
  (function (AudioOfflineRenderer) {
@@ -48,7 +48,7 @@ export var AudioOfflineRenderer;
48
48
  if (!approved) {
49
49
  return;
50
50
  }
51
- const wavFile = encodeWavFloat(buffer);
51
+ const wavFile = WavFile.encodeFloats(buffer);
52
52
  const suggestedName = `${meta.name}.wav`;
53
53
  const saveResult = await Promises.tryCatch(Files.save(wavFile, { suggestedName }));
54
54
  if (saveResult.status === "rejected" && !Errors.isAbort(saveResult.error)) {
@@ -63,7 +63,11 @@ export var AudioOfflineRenderer;
63
63
  for (let stemIndex = 0; stemIndex < numStems; stemIndex++) {
64
64
  const l = buffer.getChannelData(stemIndex * 2);
65
65
  const r = buffer.getChannelData(stemIndex * 2 + 1);
66
- const file = encodeWavFloat({ channels: [l, r], sampleRate: buffer.sampleRate, numFrames: buffer.length });
66
+ const file = WavFile.encodeFloats({
67
+ channels: [l, r],
68
+ sampleRate: buffer.sampleRate,
69
+ numFrames: buffer.length
70
+ });
67
71
  zip.file(`${trackNames[stemIndex]}.wav`, file, { binary: true });
68
72
  }
69
73
  const arrayBuffer = await zip.generateAsync({
package/dist/Engine.d.ts CHANGED
@@ -14,9 +14,9 @@ export interface Engine extends Terminable {
14
14
  panic(): void;
15
15
  noteSignal(signal: NoteSignal): void;
16
16
  subscribeNotes(observer: Observer<NoteSignal>): Subscription;
17
- ignoreNoteRegion(uuid: UUID.Format): void;
18
- scheduleClipPlay(clipIds: ReadonlyArray<UUID.Format>): void;
19
- scheduleClipStop(trackIds: ReadonlyArray<UUID.Format>): void;
17
+ ignoreNoteRegion(uuid: UUID.Bytes): void;
18
+ scheduleClipPlay(clipIds: ReadonlyArray<UUID.Bytes>): void;
19
+ scheduleClipStop(trackIds: ReadonlyArray<UUID.Bytes>): void;
20
20
  subscribeClipNotification(observer: Observer<ClipNotification>): Subscription;
21
21
  get position(): ObservableValue<ppqn>;
22
22
  get isPlaying(): ObservableValue<boolean>;
@@ -26,7 +26,7 @@ export interface Engine extends Terminable {
26
26
  get playbackTimestamp(): ObservableValue<ppqn>;
27
27
  get countInBeatsTotal(): ObservableValue<int>;
28
28
  get countInBeatsRemaining(): ObservableValue<number>;
29
- get markerState(): ObservableValue<Nullable<[UUID.Format, int]>>;
29
+ get markerState(): ObservableValue<Nullable<[UUID.Bytes, int]>>;
30
30
  get project(): Project;
31
31
  }
32
32
  //# sourceMappingURL=Engine.d.ts.map
@@ -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,EAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACzG,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,MAAM,GAAG,IAAI,CAAA;IACzC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAC3D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAC5D,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,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,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAChE,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,EAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACzG,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,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"}
@@ -23,7 +23,7 @@ export declare class EngineFacade implements Engine {
23
23
  get playbackTimestamp(): ObservableValue<ppqn>;
24
24
  get countInBeatsTotal(): ObservableValue<int>;
25
25
  get countInBeatsRemaining(): ObservableValue<int>;
26
- get markerState(): DefaultObservableValue<Nullable<[UUID.Format, int]>>;
26
+ get markerState(): DefaultObservableValue<Nullable<[UUID.Bytes, int]>>;
27
27
  get project(): Project;
28
28
  isReady(): Promise<void>;
29
29
  queryLoadingComplete(): Promise<boolean>;
@@ -31,10 +31,10 @@ export declare class EngineFacade implements Engine {
31
31
  sampleRate(): number;
32
32
  subscribeClipNotification(observer: Observer<ClipNotification>): Subscription;
33
33
  subscribeNotes(observer: Observer<NoteSignal>): Subscription;
34
- ignoreNoteRegion(uuid: UUID.Format): void;
34
+ ignoreNoteRegion(uuid: UUID.Bytes): void;
35
35
  noteSignal(signal: NoteSignal): void;
36
- scheduleClipPlay(clipIds: ReadonlyArray<UUID.Format>): void;
37
- scheduleClipStop(trackIds: ReadonlyArray<UUID.Format>): void;
36
+ scheduleClipPlay(clipIds: ReadonlyArray<UUID.Bytes>): void;
37
+ scheduleClipStop(trackIds: ReadonlyArray<UUID.Bytes>): void;
38
38
  terminate(): void;
39
39
  }
40
40
  //# sourceMappingURL=EngineFacade.d.ts.map
@@ -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;;;IAkBvC,UAAU,CAAC,OAAO,EAAE,aAAa;IAiBjC,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,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,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAA2B;IAClG,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,MAAM,GAAG,IAAI;IAGzC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAGpC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;IAG3D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;IAI5D,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;;;IAkBvC,UAAU,CAAC,OAAO,EAAE,aAAa;IAiBjC,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,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"}
@@ -22,15 +22,15 @@ export declare class EngineWorklet extends AudioWorkletNode implements Engine {
22
22
  get position(): ObservableValue<ppqn>;
23
23
  get playbackTimestamp(): MutableObservableValue<number>;
24
24
  get metronomeEnabled(): MutableObservableValue<boolean>;
25
- get markerState(): ObservableValue<Nullable<[UUID.Format, int]>>;
25
+ get markerState(): ObservableValue<Nullable<[UUID.Bytes, int]>>;
26
26
  get project(): Project;
27
27
  isReady(): Promise<void>;
28
28
  queryLoadingComplete(): Promise<boolean>;
29
29
  noteSignal(signal: NoteSignal): void;
30
30
  subscribeNotes(observer: Observer<NoteSignal>): Subscription;
31
- ignoreNoteRegion(uuid: UUID.Format): void;
32
- scheduleClipPlay(clipIds: ReadonlyArray<UUID.Format>): void;
33
- scheduleClipStop(trackIds: ReadonlyArray<UUID.Format>): void;
31
+ ignoreNoteRegion(uuid: UUID.Bytes): void;
32
+ scheduleClipPlay(clipIds: ReadonlyArray<UUID.Bytes>): void;
33
+ scheduleClipStop(trackIds: ReadonlyArray<UUID.Bytes>): void;
34
34
  subscribeClipNotification(observer: Observer<ClipNotification>): Subscription;
35
35
  terminate(): void;
36
36
  }
@@ -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,EACb,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAE/B,qBAAa,aAAc,SAAQ,gBAAiB,YAAW,MAAM;;IACjE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAQ;IAEtB,QAAQ,CAAC,EAAE,SAAqB;gBAoBpB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,OAAO,EAChB,mBAAmB,CAAC,EAAE,wBAAwB;IA8F1D,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,gBAAgB,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAgC;IACvF,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAA2B;IAC3F,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,MAAM,GAAG,IAAI;IACzC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;IAI3D,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;IAG5D,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,EACb,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAE/B,qBAAa,aAAc,SAAQ,gBAAiB,YAAW,MAAM;;IACjE,MAAM,CAAC,EAAE,EAAE,GAAG,CAAQ;IAEtB,QAAQ,CAAC,EAAE,SAAqB;gBAoBpB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,OAAO,EAChB,mBAAmB,CAAC,EAAE,wBAAwB;IA8F1D,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,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"}
@@ -3,7 +3,7 @@ import { Peaks } from "@opendaw/lib-fusion";
3
3
  import { AudioData, RingBuffer, SampleLoader, SampleLoaderState } from "@opendaw/studio-adapters";
4
4
  export declare class RecordingWorklet extends AudioWorkletNode implements Terminable, SampleLoader {
5
5
  #private;
6
- readonly uuid: UUID.Format;
6
+ readonly uuid: UUID.Bytes;
7
7
  constructor(context: BaseAudioContext, config: RingBuffer.Config, outputLatency: number);
8
8
  own<T extends Terminable>(terminable: T): T;
9
9
  limit(count: int): void;
@@ -1 +1 @@
1
- {"version":3,"file":"RecordingWorklet.d.ts","sourceRoot":"","sources":["../src/RecordingWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,GAAG,EAEH,QAAQ,EACR,MAAM,EAEN,YAAY,EACZ,UAAU,EAEV,IAAI,EACP,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAC,KAAK,EAAc,MAAM,qBAAqB,CAAA;AACtD,OAAO,EACH,SAAS,EAET,UAAU,EACV,YAAY,EACZ,iBAAiB,EAEpB,MAAM,0BAA0B,CAAA;AAMjC,qBAAa,gBAAiB,SAAQ,gBAAiB,YAAW,UAAU,EAAE,YAAY;;IAGtF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAkB;gBAahC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM;IA2BvF,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC;IAE3C,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAEvB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAE/B,IAAI,cAAc,IAAI,GAAG,CAA6C;IACtE,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,CAAoB;IACjD,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAA6E;IACvG,IAAI,KAAK,IAAI,iBAAiB,CAAqB;IAEnD,UAAU,IAAI,IAAI;IAElB,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,YAAY;IAQ9D,SAAS,IAAI,IAAI;IAMjB,QAAQ,IAAI,MAAM;CAkCrB"}
1
+ {"version":3,"file":"RecordingWorklet.d.ts","sourceRoot":"","sources":["../src/RecordingWorklet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,GAAG,EAEH,QAAQ,EACR,MAAM,EAEN,YAAY,EACZ,UAAU,EAEV,IAAI,EACP,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAC,KAAK,EAAc,MAAM,qBAAqB,CAAA;AACtD,OAAO,EACH,SAAS,EAET,UAAU,EACV,YAAY,EACZ,iBAAiB,EAEpB,MAAM,0BAA0B,CAAA;AAMjC,qBAAa,gBAAiB,SAAQ,gBAAiB,YAAW,UAAU,EAAE,YAAY;;IAGtF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAkB;gBAa/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM;IA2BvF,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC;IAE3C,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAEvB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAE/B,IAAI,cAAc,IAAI,GAAG,CAA6C;IACtE,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,CAAoB;IACjD,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAA6E;IACvG,IAAI,KAAK,IAAI,iBAAiB,CAAqB;IAEnD,UAAU,IAAI,IAAI;IAElB,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,YAAY;IAQ9D,SAAS,IAAI,IAAI;IAMjB,QAAQ,IAAI,MAAM;CAkCrB"}
@@ -89,7 +89,7 @@ export class RecordingWorklet extends AudioWorkletNode {
89
89
  const bpm = BPMTools.detect(frames[0], sample_rate);
90
90
  const duration = totalSamples / sample_rate;
91
91
  const meta = { name: "Recording", bpm, sample_rate, duration };
92
- await SampleStorage.store(this.uuid, audioData, peaks, meta);
92
+ await SampleStorage.saveSample(this.uuid, audioData, peaks, meta);
93
93
  this.#setState({ type: "loaded" });
94
94
  this.terminate();
95
95
  }
@@ -0,0 +1,10 @@
1
+ export declare namespace WavFile {
2
+ type Audio = {
3
+ channels: ReadonlyArray<Float32Array>;
4
+ sampleRate: number;
5
+ numFrames: number;
6
+ };
7
+ const decodeFloats: (buffer: ArrayBuffer) => Audio;
8
+ const encodeFloats: (audio: Audio | AudioBuffer) => ArrayBuffer;
9
+ }
10
+ //# sourceMappingURL=WavFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WavFile.d.ts","sourceRoot":"","sources":["../src/WavFile.ts"],"names":[],"mappings":"AAEA,yBAAiB,OAAO,CAAC;IAMrB,KAAY,KAAK,GAAG;QAChB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QACtC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAA;KACpB,CAAA;IAEM,MAAM,YAAY,GAAI,QAAQ,WAAW,KAAG,KA2ClD,CAAA;IAEM,MAAM,YAAY,GAAI,OAAO,KAAK,GAAG,WAAW,KAAG,WAuCzD,CAAA;CACJ"}
@@ -0,0 +1,94 @@
1
+ import { Arrays, panic } from "@opendaw/lib-std";
2
+ export var WavFile;
3
+ (function (WavFile) {
4
+ const MAGIC_RIFF = 0x46464952;
5
+ const MAGIC_WAVE = 0x45564157;
6
+ const MAGIC_FMT = 0x20746d66;
7
+ const MAGIC_DATA = 0x61746164;
8
+ WavFile.decodeFloats = (buffer) => {
9
+ const view = new DataView(buffer);
10
+ if (view.getUint32(0, true) !== MAGIC_RIFF
11
+ || view.getUint32(8, true) !== MAGIC_WAVE) {
12
+ return panic("Not a RIFF/WAVE file");
13
+ }
14
+ let fmtOffset = -1;
15
+ let dataOffset = -1;
16
+ let dataSize = 0;
17
+ for (let o = 12; o + 8 <= view.byteLength;) {
18
+ const id = view.getUint32(o, true);
19
+ const size = view.getUint32(o + 4, true);
20
+ const next = o + 8 + ((size + 1) & ~1);
21
+ if (id === MAGIC_FMT)
22
+ fmtOffset = o + 8;
23
+ if (id === MAGIC_DATA) {
24
+ dataOffset = o + 8;
25
+ dataSize = size;
26
+ }
27
+ o = next;
28
+ }
29
+ if (fmtOffset < 0 || dataOffset < 0) {
30
+ return panic("Missing fmt or data chunk");
31
+ }
32
+ const audioFormat = view.getUint16(fmtOffset, true); // 3 = IEEE float
33
+ const numChannels = view.getUint16(fmtOffset + 2, true);
34
+ const sampleRate = view.getUint32(fmtOffset + 4, true);
35
+ const blockAlign = view.getUint16(fmtOffset + 12, true);
36
+ const bitsPerSample = view.getUint16(fmtOffset + 14, true);
37
+ if (audioFormat !== 3 || bitsPerSample !== 32) {
38
+ return panic("Expected 32-bit float WAV (format 3)");
39
+ }
40
+ if (blockAlign !== numChannels * 4) {
41
+ return panic("Invalid block alignment");
42
+ }
43
+ const numFrames = Math.floor(dataSize / blockAlign);
44
+ const interleaved = new Float32Array(buffer, dataOffset, numFrames * numChannels);
45
+ const channels = Arrays.create(() => new Float32Array(numFrames), numChannels);
46
+ for (let i = 0, w = 0; i < numFrames; i++) {
47
+ for (let c = 0; c < numChannels; c++) {
48
+ channels[c][i] = interleaved[w++];
49
+ }
50
+ }
51
+ return { channels, sampleRate, numFrames };
52
+ };
53
+ WavFile.encodeFloats = (audio) => {
54
+ const bytesPerChannel = Float32Array.BYTES_PER_ELEMENT;
55
+ const sampleRate = audio.sampleRate;
56
+ let numFrames;
57
+ let numberOfChannels;
58
+ let channels;
59
+ if (audio instanceof AudioBuffer) {
60
+ channels = Arrays.create(index => audio.getChannelData(index), audio.numberOfChannels);
61
+ numFrames = audio.length;
62
+ numberOfChannels = audio.numberOfChannels;
63
+ }
64
+ else {
65
+ channels = audio.channels;
66
+ numFrames = audio.numFrames;
67
+ numberOfChannels = audio.channels.length;
68
+ }
69
+ const size = 44 + numFrames * numberOfChannels * bytesPerChannel;
70
+ const buf = new ArrayBuffer(size);
71
+ const view = new DataView(buf);
72
+ view.setUint32(0, MAGIC_RIFF, true);
73
+ view.setUint32(4, size - 8, true);
74
+ view.setUint32(8, MAGIC_WAVE, true);
75
+ view.setUint32(12, MAGIC_FMT, true);
76
+ view.setUint32(16, 16, true); // chunk length
77
+ view.setUint16(20, 3, true); // compression
78
+ view.setUint16(22, numberOfChannels, true);
79
+ view.setUint32(24, sampleRate, true);
80
+ view.setUint32(28, sampleRate * numberOfChannels * bytesPerChannel, true);
81
+ view.setUint16(32, numberOfChannels * bytesPerChannel, true);
82
+ view.setUint16(34, 8 * bytesPerChannel, true);
83
+ view.setUint32(36, MAGIC_DATA, true);
84
+ view.setUint32(40, numberOfChannels * numFrames * bytesPerChannel, true);
85
+ let w = 44;
86
+ for (let i = 0; i < numFrames; ++i) {
87
+ for (let j = 0; j < numberOfChannels; ++j) {
88
+ view.setFloat32(w, channels[j][i], true);
89
+ w += bytesPerChannel;
90
+ }
91
+ }
92
+ return view.buffer;
93
+ };
94
+ })(WavFile || (WavFile = {}));
@@ -2,7 +2,7 @@ import { Option } from "@opendaw/lib-std";
2
2
  import type { OpfsProtocol, SamplePeakProtocol } from "@opendaw/lib-fusion";
3
3
  import { Messenger } from "@opendaw/lib-runtime";
4
4
  export declare class WorkerAgents {
5
- static install(): void;
5
+ static install(): Promise<void>;
6
6
  static messenger: Option<Messenger>;
7
7
  static get Peak(): SamplePeakProtocol;
8
8
  static get Opfs(): OpfsProtocol;
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerAgents.d.ts","sourceRoot":"","sources":["../src/WorkerAgents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,EAAY,MAAM,kBAAkB,CAAA;AACzE,OAAO,KAAK,EAAC,YAAY,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAEzE,OAAO,EAAe,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAI5D,qBAAa,YAAY;IACrB,MAAM,CAAC,OAAO,IAAI,IAAI;IAItB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAc;IAGjD,MAAM,KAAK,IAAI,IAAI,kBAAkB,CAapC;IAGD,MAAM,KAAK,IAAI,IAAI,YAAY,CAS9B;CACJ"}
1
+ {"version":3,"file":"WorkerAgents.d.ts","sourceRoot":"","sources":["../src/WorkerAgents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,MAAM,EAAY,MAAM,kBAAkB,CAAA;AACjF,OAAO,KAAK,EAAC,YAAY,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAe,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAI5D,qBAAa,YAAY;WACR,OAAO;IAgBpB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAc;IAGjD,MAAM,KAAK,IAAI,IAAI,kBAAkB,CAapC;IAGD,MAAM,KAAK,IAAI,IAAI,YAAY,CAS9B;CACJ"}
@@ -7,12 +7,24 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { Lazy, Option } from "@opendaw/lib-std";
10
+ import { assert, Lazy, Option } from "@opendaw/lib-std";
11
11
  import { Communicator, Messenger } from "@opendaw/lib-runtime";
12
12
  const WorkerUrl = new URL("./workers.js", import.meta.url);
13
13
  export class WorkerAgents {
14
- static install() {
15
- this.messenger = Option.wrap(Messenger.for(new Worker(WorkerUrl, { type: "module" })));
14
+ static async install() {
15
+ assert(this.messenger.isEmpty(), "WorkerAgents are already installed");
16
+ console.debug("WorkerAgents", WorkerUrl);
17
+ const message = Messenger.for(new Worker(WorkerUrl, { type: "module" }));
18
+ this.messenger = Option.wrap(message);
19
+ const { resolve, promise } = Promise.withResolvers();
20
+ const subscription = message.channel("initialize").subscribe(data => {
21
+ if (data === "ready") {
22
+ console.debug("WorkerAgents ready");
23
+ resolve();
24
+ subscription.terminate();
25
+ }
26
+ });
27
+ return promise;
16
28
  }
17
29
  static messenger = Option.None;
18
30
  static get Peak() {
@@ -9,7 +9,7 @@ export declare abstract class Capture<BOX extends CaptureBox = CaptureBox> imple
9
9
  abstract get deviceLabel(): Option<string>;
10
10
  abstract prepareRecording(): Promise<void>;
11
11
  abstract startRecording(): Terminable;
12
- get uuid(): UUID.Format;
12
+ get uuid(): UUID.Bytes;
13
13
  get manager(): CaptureDevices;
14
14
  get audioUnitBox(): AudioUnitBox;
15
15
  get captureBox(): BOX;
@@ -1 +1 @@
1
- {"version":3,"file":"Capture.d.ts","sourceRoot":"","sources":["../../src/capture/Capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,sBAAsB,EACtB,MAAM,EACN,UAAU,EAEV,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAE/C,8BAAsB,OAAO,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,CAAE,YAAW,UAAU;;IAUpF,SAAS,aAAa,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG;IAmB1F,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAA;IAC5B,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1C,QAAQ,CAAC,cAAc,IAAI,UAAU;IAErC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAyC;IAChE,IAAI,OAAO,IAAI,cAAc,CAAuB;IACpD,IAAI,YAAY,IAAI,YAAY,CAA4B;IAC5D,IAAI,UAAU,IAAI,GAAG,CAA0B;IAC/C,IAAI,KAAK,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAqB;IACjE,IAAI,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAwB;IAE9E,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC;IAC3C,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IACpE,SAAS,IAAI,IAAI;CACpB"}
1
+ {"version":3,"file":"Capture.d.ts","sourceRoot":"","sources":["../../src/capture/Capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,sBAAsB,EACtB,MAAM,EACN,UAAU,EAEV,IAAI,EACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAE/C,8BAAsB,OAAO,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,CAAE,YAAW,UAAU;;IAUpF,SAAS,aAAa,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG;IAmB1F,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAA;IAC5B,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1C,QAAQ,CAAC,cAAc,IAAI,UAAU;IAErC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAyC;IAC/D,IAAI,OAAO,IAAI,cAAc,CAAuB;IACpD,IAAI,YAAY,IAAI,YAAY,CAA4B;IAC5D,IAAI,UAAU,IAAI,GAAG,CAA0B;IAC/C,IAAI,KAAK,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAqB;IACjE,IAAI,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAwB;IAE9E,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC;IAC3C,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IACpE,SAAS,IAAI,IAAI;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"CaptureAudio.d.ts","sourceRoot":"","sources":["../../src/capture/CaptureAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,uBAAuB,EACvB,MAAM,EAEN,UAAU,EAEb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAI/C,qBAAa,YAAa,SAAQ,OAAO,CAAC,eAAe,CAAC;;gBAQ1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe;IA4BjG,IAAI,MAAM,IAAI,MAAM,CAAsB;IAE1C,IAAI,MAAM,IAAI,uBAAuB,CAAC,WAAW,CAAC,CAAsB;IAExE,IAAI,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,CAEnC;IAED,IAAI,KAAK,IAAI,MAAM,CAAsE;IAEzF,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAA+D;IAEhG,IAAI,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAE/C;IAEK,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBvC,cAAc,IAAI,UAAU;CA+D/B"}
1
+ {"version":3,"file":"CaptureAudio.d.ts","sourceRoot":"","sources":["../../src/capture/CaptureAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,uBAAuB,EACvB,MAAM,EAEN,UAAU,EACb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAI/C,qBAAa,YAAa,SAAQ,OAAO,CAAC,eAAe,CAAC;;gBAQ1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe;IA4BjG,IAAI,MAAM,IAAI,MAAM,CAAsB;IAE1C,IAAI,MAAM,IAAI,uBAAuB,CAAC,WAAW,CAAC,CAAsB;IAExE,IAAI,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,CAEnC;IAED,IAAI,KAAK,IAAI,MAAM,CAAsE;IAEzF,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAA+D;IAEhG,IAAI,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAE/C;IAEK,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBvC,cAAc,IAAI,UAAU;CA+D/B"}
@@ -1,4 +1,4 @@
1
- import { abort, isDefined, isUndefined, MutableObservableOption, Option, RuntimeNotifier, Terminable, warn } from "@opendaw/lib-std";
1
+ import { Errors, isDefined, isUndefined, MutableObservableOption, Option, RuntimeNotifier, Terminable } from "@opendaw/lib-std";
2
2
  import { Promises } from "@opendaw/lib-runtime";
3
3
  import { Capture } from "./Capture";
4
4
  import { RecordAudio } from "./RecordAudio";
@@ -11,7 +11,7 @@ export class CaptureAudio extends Capture {
11
11
  constructor(manager, audioUnitBox, captureAudioBox) {
12
12
  super(manager, audioUnitBox, captureAudioBox);
13
13
  this.#stream = new MutableObservableOption();
14
- this.#streamGenerator = Promises.sequential(() => this.#updateStream());
14
+ this.#streamGenerator = Promises.sequentialize(() => this.#updateStream());
15
15
  this.ownAll(captureAudioBox.requestChannels.catchupAndSubscribe(owner => {
16
16
  const channels = owner.getValue();
17
17
  this.#requestChannels = channels === 1 || channels === 2 ? Option.wrap(channels) : Option.None;
@@ -50,7 +50,7 @@ export class CaptureAudio extends Capture {
50
50
  cancelText: "Cancel"
51
51
  });
52
52
  if (!approved) {
53
- return abort("Recording cancelled");
53
+ return Promise.reject("Recording cancelled");
54
54
  }
55
55
  }
56
56
  return this.#streamGenerator();
@@ -110,7 +110,7 @@ export class CaptureAudio extends Capture {
110
110
  }
111
111
  else {
112
112
  stream.getAudioTracks().forEach(track => track.stop());
113
- return warn(`Could not find audio device with id: '${deviceId} in ${gotDeviceId}'`);
113
+ return Errors.warn(`Could not find audio device with id: '${deviceId} in ${gotDeviceId}'`);
114
114
  }
115
115
  });
116
116
  }
@@ -5,7 +5,7 @@ export declare class CaptureDevices implements Terminable {
5
5
  #private;
6
6
  constructor(project: Project);
7
7
  get project(): Project;
8
- get(uuid: UUID.Format): Option<Capture>;
8
+ get(uuid: UUID.Bytes): Option<Capture>;
9
9
  setArm(subject: Capture, exclusive: boolean): void;
10
10
  filterArmed(): ReadonlyArray<Capture>;
11
11
  terminate(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"CaptureDevices.d.ts","sourceRoot":"","sources":["../../src/capture/CaptureDevices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,MAAM,EAA2B,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAEpH,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,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAEvC,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,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 +1 @@
1
- {"version":3,"file":"CaptureMidi.d.ts","sourceRoot":"","sources":["../../src/capture/CaptureMidi.ts"],"names":[],"mappings":"AAAA,OAAO,EAOH,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,UAAU,EAEb,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAG/C,qBAAa,WAAY,SAAQ,OAAO,CAAC,cAAc,CAAC;;gBAOxC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc;IA8B/F,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAEhC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY;IAE5D,IAAI,KAAK,IAAI,MAAM,CAgBlB;IAED,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAIhC;IAEK,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBvC,cAAc,IAAI,UAAU;CAgD/B"}
1
+ {"version":3,"file":"CaptureMidi.d.ts","sourceRoot":"","sources":["../../src/capture/CaptureMidi.ts"],"names":[],"mappings":"AAAA,OAAO,EAQH,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,UAAU,EACb,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAI/C,qBAAa,WAAY,SAAQ,OAAO,CAAC,cAAc,CAAC;;gBAOxC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc;IA8B/F,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAEhC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY;IAE5D,IAAI,KAAK,IAAI,MAAM,CAgBlB;IAED,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAIhC;IAEK,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBvC,cAAc,IAAI,UAAU;CAgD/B"}
@@ -1,11 +1,12 @@
1
- import { assert, isDefined, isUndefined, Notifier, Option, Terminable, warn } from "@opendaw/lib-std";
1
+ import { assert, Errors, isDefined, isUndefined, Notifier, Option, Terminable } from "@opendaw/lib-std";
2
2
  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 "../MidiDevices";
6
+ import { MidiDevices } from "../midi/MidiDevices";
7
7
  import { Capture } from "./Capture";
8
8
  import { RecordMidi } from "./RecordMidi";
9
+ var warn = Errors.warn;
9
10
  export class CaptureMidi extends Capture {
10
11
  #streamGenerator;
11
12
  #notifier = new Notifier();
@@ -13,7 +14,7 @@ export class CaptureMidi extends Capture {
13
14
  #stream = Option.None;
14
15
  constructor(manager, audioUnitBox, captureMidiBox) {
15
16
  super(manager, audioUnitBox, captureMidiBox);
16
- this.#streamGenerator = Promises.sequential(() => this.#updateStream());
17
+ this.#streamGenerator = Promises.sequentialize(() => this.#updateStream());
17
18
  this.ownAll(captureMidiBox.channel.catchupAndSubscribe(async (owner) => {
18
19
  const channel = owner.getValue();
19
20
  this.#filterChannel = channel >= 0 ? Option.wrap(channel) : Option.None;
@@ -66,12 +67,12 @@ export class CaptureMidi extends Capture {
66
67
  await MidiDevices.requestPermission();
67
68
  }
68
69
  else {
69
- return warn("MIDI not available");
70
+ return Errors.warn("MIDI not available");
70
71
  }
71
72
  }
72
73
  const optInputs = MidiDevices.inputs();
73
74
  if (optInputs.isEmpty()) {
74
- return warn("MIDI not available");
75
+ return Errors.warn("MIDI not available");
75
76
  }
76
77
  const inputs = optInputs.unwrap();
77
78
  if (inputs.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"Recording.d.ts","sourceRoot":"","sources":["../../src/capture/Recording.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,UAAU,EAAmB,MAAM,kBAAkB,CAAA;AAK3F,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;IA8D3E,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,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;IA8D3E,OAAO;CACV"}
@@ -1,4 +1,4 @@
1
- import { asInstanceOf, assert, Option, Terminable, Terminator, warn } from "@opendaw/lib-std";
1
+ import { asInstanceOf, assert, Errors, Option, Terminable, Terminator } from "@opendaw/lib-std";
2
2
  import { Promises } from "@opendaw/lib-runtime";
3
3
  import { AudioUnitBox } from "@opendaw/studio-boxes";
4
4
  import { AudioUnitType } from "@opendaw/studio-enums";
@@ -17,12 +17,12 @@ export class Recording {
17
17
  const captures = captureDevices.filterArmed();
18
18
  if (captures.length === 0) {
19
19
  this.#isRecording = false;
20
- return warn("No track is armed for Recording");
20
+ return Errors.warn("No track is armed for Recording");
21
21
  }
22
22
  const { status, error } = await Promises.tryCatch(Promise.all(captures.map(capture => capture.prepareRecording())));
23
23
  if (status === "rejected") {
24
24
  this.#isRecording = false;
25
- return warn(String(error));
25
+ return Errors.warn(String(error));
26
26
  }
27
27
  terminator.ownAll(...captures.map(capture => capture.startRecording()));
28
28
  engine.startRecording(countIn);
@@ -0,0 +1,10 @@
1
+ import { CloudHandler } from "./CloudHandler";
2
+ import { CloudService } from "./CloudService";
3
+ export declare class CloudAuthManager {
4
+ #private;
5
+ static create(): CloudAuthManager;
6
+ readonly id: number;
7
+ private constructor();
8
+ getHandler(service: CloudService): Promise<CloudHandler>;
9
+ }
10
+ //# sourceMappingURL=CloudAuthManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloudAuthManager.d.ts","sourceRoot":"","sources":["../../src/clouds/CloudAuthManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAE3C,qBAAa,gBAAgB;;IACzB,MAAM,CAAC,MAAM,IAAI,gBAAgB;IAqBjC,QAAQ,CAAC,EAAE,SAAyB;IAIpC,OAAO;IAED,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;CAmLjE"}