@libraz/libsonare 1.5.5 → 1.7.0

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 (80) hide show
  1. package/README.md +109 -20
  2. package/dist/analysis.d.ts +5809 -0
  3. package/dist/analysis.js +2574 -0
  4. package/dist/analysis.js.map +1 -0
  5. package/dist/index.d.ts +884 -55
  6. package/dist/index.js +1302 -292
  7. package/dist/index.js.map +1 -1
  8. package/dist/schemas/realtime-voice-changer-preset-pack.schema.json +27 -0
  9. package/dist/schemas/realtime-voice-changer-preset.schema.json +140 -0
  10. package/dist/sonare-analysis.js +2 -0
  11. package/dist/sonare-analysis.wasm +0 -0
  12. package/dist/sonare.js +1 -1
  13. package/dist/sonare.wasm +0 -0
  14. package/dist/worker.d.ts +65 -0
  15. package/dist/worker.js +734 -0
  16. package/dist/worker.js.map +1 -0
  17. package/dist/worklet.d.ts +628 -88
  18. package/dist/worklet.js +1816 -266
  19. package/dist/worklet.js.map +1 -1
  20. package/package.json +23 -11
  21. package/src/_chain_config.ts +5 -3
  22. package/src/analysis.ts +137 -0
  23. package/src/analysis_helpers.ts +40 -29
  24. package/src/audio.ts +7 -2
  25. package/src/clip_page_streamer.ts +62 -8
  26. package/src/codes.ts +87 -64
  27. package/src/effects_mastering.ts +1 -0
  28. package/src/effects_transform.ts +179 -10
  29. package/src/errors.ts +1 -0
  30. package/src/feature_core.ts +140 -2
  31. package/src/feature_music.ts +25 -3
  32. package/src/feature_pitch.ts +70 -1
  33. package/src/feature_spectral.ts +295 -7
  34. package/src/feature_spectrogram.ts +203 -3
  35. package/src/features.ts +16 -1
  36. package/src/index.ts +120 -8
  37. package/src/mastering_chain.ts +20 -8
  38. package/src/mastering_core.ts +5 -0
  39. package/src/mastering_dynamics.ts +7 -1
  40. package/src/metering.ts +6 -1
  41. package/src/mixer.ts +3 -3
  42. package/src/opfs_clip_pages.ts +26 -1
  43. package/src/project.ts +13 -0
  44. package/src/project_class.ts +204 -23
  45. package/src/project_internal.ts +38 -34
  46. package/src/project_types.ts +114 -11
  47. package/src/public_types.ts +68 -0
  48. package/src/public_types_mastering.ts +22 -0
  49. package/src/public_types_mixing.ts +27 -2
  50. package/src/public_types_music.ts +9 -0
  51. package/src/public_types_realtime.ts +23 -5
  52. package/src/public_types_spectral.ts +33 -0
  53. package/src/quick_analysis.ts +46 -10
  54. package/src/realtime_engine.ts +167 -6
  55. package/src/realtime_voice_changer.ts +51 -77
  56. package/src/sonare-analysis.js.d.ts +8 -0
  57. package/src/sonare.js.d.ts +340 -6
  58. package/src/stream_analyzer.ts +6 -1
  59. package/src/streaming_processors.ts +15 -0
  60. package/src/web_midi.ts +46 -11
  61. package/src/worker.ts +196 -0
  62. package/src/worker_client.ts +352 -0
  63. package/src/worker_protocol.ts +59 -0
  64. package/src/worklet/engine-automation.ts +2 -1
  65. package/src/worklet/engine-capture-facade.ts +13 -4
  66. package/src/worklet/engine-clips.ts +12 -3
  67. package/src/worklet/engine-node.ts +264 -21
  68. package/src/worklet/engine-offline.ts +7 -2
  69. package/src/worklet/engine-parameter-facade.ts +55 -5
  70. package/src/worklet/engine-processor.ts +435 -62
  71. package/src/worklet/engine-register.ts +9 -1
  72. package/src/worklet/engine-strips.ts +19 -3
  73. package/src/worklet/engine-sync.ts +2 -6
  74. package/src/worklet/engine-tempo-facade.ts +8 -6
  75. package/src/worklet/engine.ts +390 -13
  76. package/src/worklet/guards.ts +121 -8
  77. package/src/worklet/messages.ts +166 -8
  78. package/src/worklet/protocol.ts +305 -17
  79. package/src/worklet/voice-changer-processor.ts +12 -15
  80. package/src/worklet.ts +20 -1
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Internal structured-clone protocol for the offline Web Worker bridge.
3
+ *
4
+ * Keep this deliberately limited to one-shot operations. Embind handles own
5
+ * native resources and cannot safely cross a worker boundary.
6
+ */
7
+ type OfflineWorkerOperation = 'analyze' | 'detectBpm' | 'detectKey' | 'detectChords' | 'masterAudio' | 'masterAudioStereo';
8
+ interface OfflineWorkerRunMessage {
9
+ type: 'sonare:offline-run';
10
+ id: number;
11
+ operation: OfflineWorkerOperation;
12
+ request: Record<string, unknown>;
13
+ /** A shared flag lets cancellation reach synchronous WASM progress callbacks. */
14
+ cancelBuffer?: SharedArrayBuffer;
15
+ }
16
+ interface OfflineWorkerCancelMessage {
17
+ type: 'sonare:offline-cancel';
18
+ id: number;
19
+ }
20
+ type OfflineWorkerRequestMessage = OfflineWorkerRunMessage | OfflineWorkerCancelMessage;
21
+ interface OfflineWorkerProgressMessage {
22
+ type: 'sonare:offline-progress';
23
+ id: number;
24
+ progress: number;
25
+ stage: string;
26
+ }
27
+ interface OfflineWorkerResultMessage {
28
+ type: 'sonare:offline-result';
29
+ id: number;
30
+ result: unknown;
31
+ }
32
+ interface OfflineWorkerErrorMessage {
33
+ type: 'sonare:offline-error';
34
+ id: number;
35
+ error: {
36
+ name: string;
37
+ message: string;
38
+ code?: number;
39
+ codeName?: string;
40
+ };
41
+ }
42
+ type OfflineWorkerResponseMessage = OfflineWorkerProgressMessage | OfflineWorkerResultMessage | OfflineWorkerErrorMessage;
43
+
44
+ /**
45
+ * Offline one-shot operations hosted inside a dedicated Web Worker.
46
+ *
47
+ * Only value-based calls are exposed here: analysis and preset mastering. Do
48
+ * not add `Project`, `Mixer`, or realtime handles. Their native lifetime is
49
+ * bound to one JavaScript realm, so moving them across a Worker boundary would
50
+ * make ownership and `delete()` semantics unsound.
51
+ */
52
+
53
+ /** Minimal endpoint shared by browser Workers and the Node worker-thread test bridge. */
54
+ interface OfflineWorkerEndpoint {
55
+ postMessage(message: OfflineWorkerResponseMessage, transfer?: Transferable[]): void;
56
+ addEventListener(type: 'message', listener: (event: MessageEvent<OfflineWorkerRequestMessage>) => void): void;
57
+ }
58
+ /**
59
+ * Install the protocol on an endpoint. This export is intentionally useful to
60
+ * the Node `worker_threads` test adapter; browsers install it automatically
61
+ * when this module is loaded as a Worker entry point.
62
+ */
63
+ declare function installOfflineWorkerEndpoint(endpoint: OfflineWorkerEndpoint): void;
64
+
65
+ export { type OfflineWorkerEndpoint, type OfflineWorkerOperation, installOfflineWorkerEndpoint };