@octoseq/visualiser 0.1.0-main.c336fba → 0.1.0-main.d9e42ef

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@octoseq/visualiser",
3
- "version": "0.1.0-main.c336fba",
3
+ "version": "0.1.0-main.d9e42ef",
4
4
  "description": "WASM-based visualiser for Octoseq",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -99,6 +99,22 @@ export class WasmVisualiser {
99
99
  * Clear all band event streams.
100
100
  */
101
101
  clear_band_events(): void;
102
+ /**
103
+ * Push a named event stream (e.g., "beatCandidates") for script access.
104
+ *
105
+ * The event stream will be available as `inputs.<name>` in Rhai scripts.
106
+ * This is used for MIR-derived events like beat candidates, onset peaks, etc.
107
+ *
108
+ * The JSON format should be an array of event objects with:
109
+ * - time: f32
110
+ * - weight: f32
111
+ * - beat_position: Option<f32>
112
+ * - beat_phase: Option<f32>
113
+ * - cluster_id: Option<u32>
114
+ *
115
+ * Returns true if successful, false if parsing failed.
116
+ */
117
+ push_event_stream(name: string, events_json: string): boolean;
102
118
  /**
103
119
  * Set debug visualization options.
104
120
  */
@@ -118,6 +134,19 @@ export class WasmVisualiser {
118
134
  */
119
135
  get_band_bounds_at(time: number): string;
120
136
  push_rotation_data(samples: Float32Array, sample_rate: number): void;
137
+ /**
138
+ * Render with a frame budget timeout.
139
+ *
140
+ * If the frame takes longer than `budget_ms` to process, it will be dropped
141
+ * and a warning logged. This prevents expensive scripts from freezing the browser.
142
+ *
143
+ * Returns true if the frame completed, false if it was dropped due to budget.
144
+ */
145
+ render_with_budget(dt: number, budget_ms: number): boolean;
146
+ /**
147
+ * Clear all named event streams.
148
+ */
149
+ clear_event_streams(): void;
121
150
  /**
122
151
  * Check if frequency bands are currently set.
123
152
  */
@@ -153,6 +182,11 @@ export class WasmVisualiser {
153
182
  * Returns true if the asset was unregistered, false if it didn't exist.
154
183
  */
155
184
  unregister_mesh_asset(asset_id: string): boolean;
185
+ /**
186
+ * Get the number of events in a named event stream.
187
+ * Returns 0 if no events are stored for this name.
188
+ */
189
+ get_event_stream_count(name: string): number;
156
190
  /**
157
191
  * Get the number of frequency bands.
158
192
  */
@@ -167,6 +201,11 @@ export class WasmVisualiser {
167
201
  * Returns a JSON-serialized ExtendedAnalysisResultJson.
168
202
  */
169
203
  run_analysis_with_events(script: string, duration: number, time_step: number): string;
204
+ /**
205
+ * Get entity positions as JSON for debugging.
206
+ * Returns a JSON array of objects with id, type, and position fields.
207
+ */
208
+ get_entity_positions_json(): string;
170
209
  /**
171
210
  * Drain and return any pending structured script diagnostics as JSON.
172
211
  *
@@ -203,6 +242,7 @@ export interface InitOutput {
203
242
  readonly get_script_api_metadata_json: () => [number, number];
204
243
  readonly wasmvisualiser_clear_band_events: (a: number) => void;
205
244
  readonly wasmvisualiser_clear_band_signals: (a: number) => void;
245
+ readonly wasmvisualiser_clear_event_streams: (a: number) => void;
206
246
  readonly wasmvisualiser_clear_frequency_bands: (a: number) => void;
207
247
  readonly wasmvisualiser_clear_isolation: (a: number) => void;
208
248
  readonly wasmvisualiser_clear_musical_time: (a: number) => void;
@@ -211,6 +251,8 @@ export interface InitOutput {
211
251
  readonly wasmvisualiser_get_band_event_count: (a: number, b: number, c: number) => number;
212
252
  readonly wasmvisualiser_get_band_signal_keys: (a: number) => [number, number];
213
253
  readonly wasmvisualiser_get_current_vals: (a: number) => [number, number];
254
+ readonly wasmvisualiser_get_entity_positions_json: (a: number) => [number, number];
255
+ readonly wasmvisualiser_get_event_stream_count: (a: number, b: number, c: number) => number;
214
256
  readonly wasmvisualiser_get_frequency_band_count: (a: number) => number;
215
257
  readonly wasmvisualiser_get_script_error: (a: number) => [number, number];
216
258
  readonly wasmvisualiser_get_signal_names: (a: number) => [number, number];
@@ -223,10 +265,12 @@ export interface InitOutput {
223
265
  readonly wasmvisualiser_push_band_events: (a: number, b: number, c: number, d: number, e: number) => number;
224
266
  readonly wasmvisualiser_push_band_signal: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
225
267
  readonly wasmvisualiser_push_data: (a: number, b: number, c: number, d: number) => void;
268
+ readonly wasmvisualiser_push_event_stream: (a: number, b: number, c: number, d: number, e: number) => number;
226
269
  readonly wasmvisualiser_push_signal: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
227
270
  readonly wasmvisualiser_push_zoom_data: (a: number, b: number, c: number, d: number) => void;
228
271
  readonly wasmvisualiser_register_mesh_asset: (a: number, b: number, c: number, d: number, e: number) => number;
229
272
  readonly wasmvisualiser_render: (a: number, b: number) => void;
273
+ readonly wasmvisualiser_render_with_budget: (a: number, b: number, c: number) => number;
230
274
  readonly wasmvisualiser_resize: (a: number, b: number, c: number) => void;
231
275
  readonly wasmvisualiser_run_analysis: (a: number, b: number, c: number, d: number, e: number) => [number, number];
232
276
  readonly wasmvisualiser_run_analysis_with_events: (a: number, b: number, c: number, d: number, e: number) => [number, number];
@@ -237,8 +281,8 @@ export interface InitOutput {
237
281
  readonly wasmvisualiser_set_time: (a: number, b: number) => void;
238
282
  readonly wasmvisualiser_take_script_diagnostics_json: (a: number) => [number, number];
239
283
  readonly wasmvisualiser_unregister_mesh_asset: (a: number, b: number, c: number) => number;
240
- readonly wasmvisualiser_push_rotation_data: (a: number, b: number, c: number, d: number) => void;
241
284
  readonly init_panic_hook: () => void;
285
+ readonly wasmvisualiser_push_rotation_data: (a: number, b: number, c: number, d: number) => void;
242
286
  readonly wasm_bindgen__convert__closures_____invoke__h53437a38721e89f7: (a: number, b: number, c: any) => void;
243
287
  readonly wasm_bindgen__closure__destroy__hf5eaa61ced318e08: (a: number, b: number) => void;
244
288
  readonly wasm_bindgen__convert__closures_____invoke__h9d1c5a23ecfcd5c8: (a: number, b: number, c: any) => void;
package/pkg/visualiser.js CHANGED
@@ -510,6 +510,32 @@ export class WasmVisualiser {
510
510
  clear_band_events() {
511
511
  wasm.wasmvisualiser_clear_band_events(this.__wbg_ptr);
512
512
  }
513
+ /**
514
+ * Push a named event stream (e.g., "beatCandidates") for script access.
515
+ *
516
+ * The event stream will be available as `inputs.<name>` in Rhai scripts.
517
+ * This is used for MIR-derived events like beat candidates, onset peaks, etc.
518
+ *
519
+ * The JSON format should be an array of event objects with:
520
+ * - time: f32
521
+ * - weight: f32
522
+ * - beat_position: Option<f32>
523
+ * - beat_phase: Option<f32>
524
+ * - cluster_id: Option<u32>
525
+ *
526
+ * Returns true if successful, false if parsing failed.
527
+ * @param {string} name
528
+ * @param {string} events_json
529
+ * @returns {boolean}
530
+ */
531
+ push_event_stream(name, events_json) {
532
+ const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
533
+ const len0 = WASM_VECTOR_LEN;
534
+ const ptr1 = passStringToWasm0(events_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
535
+ const len1 = WASM_VECTOR_LEN;
536
+ const ret = wasm.wasmvisualiser_push_event_stream(this.__wbg_ptr, ptr0, len0, ptr1, len1);
537
+ return ret !== 0;
538
+ }
513
539
  /**
514
540
  * Set debug visualization options.
515
541
  * @param {boolean} wireframe
@@ -558,6 +584,27 @@ export class WasmVisualiser {
558
584
  const len0 = WASM_VECTOR_LEN;
559
585
  wasm.wasmvisualiser_push_data(this.__wbg_ptr, ptr0, len0, sample_rate);
560
586
  }
587
+ /**
588
+ * Render with a frame budget timeout.
589
+ *
590
+ * If the frame takes longer than `budget_ms` to process, it will be dropped
591
+ * and a warning logged. This prevents expensive scripts from freezing the browser.
592
+ *
593
+ * Returns true if the frame completed, false if it was dropped due to budget.
594
+ * @param {number} dt
595
+ * @param {number} budget_ms
596
+ * @returns {boolean}
597
+ */
598
+ render_with_budget(dt, budget_ms) {
599
+ const ret = wasm.wasmvisualiser_render_with_budget(this.__wbg_ptr, dt, budget_ms);
600
+ return ret !== 0;
601
+ }
602
+ /**
603
+ * Clear all named event streams.
604
+ */
605
+ clear_event_streams() {
606
+ wasm.wasmvisualiser_clear_event_streams(this.__wbg_ptr);
607
+ }
561
608
  /**
562
609
  * Check if frequency bands are currently set.
563
610
  * @returns {boolean}
@@ -642,6 +689,18 @@ export class WasmVisualiser {
642
689
  const ret = wasm.wasmvisualiser_unregister_mesh_asset(this.__wbg_ptr, ptr0, len0);
643
690
  return ret !== 0;
644
691
  }
692
+ /**
693
+ * Get the number of events in a named event stream.
694
+ * Returns 0 if no events are stored for this name.
695
+ * @param {string} name
696
+ * @returns {number}
697
+ */
698
+ get_event_stream_count(name) {
699
+ const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
700
+ const len0 = WASM_VECTOR_LEN;
701
+ const ret = wasm.wasmvisualiser_get_event_stream_count(this.__wbg_ptr, ptr0, len0);
702
+ return ret >>> 0;
703
+ }
645
704
  /**
646
705
  * Get the number of frequency bands.
647
706
  * @returns {number}
@@ -677,6 +736,23 @@ export class WasmVisualiser {
677
736
  wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);
678
737
  }
679
738
  }
739
+ /**
740
+ * Get entity positions as JSON for debugging.
741
+ * Returns a JSON array of objects with id, type, and position fields.
742
+ * @returns {string}
743
+ */
744
+ get_entity_positions_json() {
745
+ let deferred1_0;
746
+ let deferred1_1;
747
+ try {
748
+ const ret = wasm.wasmvisualiser_get_entity_positions_json(this.__wbg_ptr);
749
+ deferred1_0 = ret[0];
750
+ deferred1_1 = ret[1];
751
+ return getStringFromWasm0(ret[0], ret[1]);
752
+ } finally {
753
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
754
+ }
755
+ }
680
756
  /**
681
757
  * Drain and return any pending structured script diagnostics as JSON.
682
758
  *
@@ -1414,6 +1490,10 @@ function __wbg_get_imports() {
1414
1490
  const ret = arg0.offset;
1415
1491
  return ret;
1416
1492
  };
1493
+ imports.wbg.__wbg_performance_c77a440eff2efd9b = function(arg0) {
1494
+ const ret = arg0.performance;
1495
+ return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
1496
+ };
1417
1497
  imports.wbg.__wbg_popErrorScope_af0b22f136a861d6 = function(arg0) {
1418
1498
  const ret = arg0.popErrorScope();
1419
1499
  return ret;
@@ -1622,13 +1702,13 @@ function __wbg_get_imports() {
1622
1702
  const ret = getStringFromWasm0(arg0, arg1);
1623
1703
  return ret;
1624
1704
  };
1625
- imports.wbg.__wbindgen_cast_9983f14242864161 = function(arg0, arg1) {
1626
- // Cast intrinsic for `Closure(Closure { dtor_idx: 2225, function: Function { arguments: [NamedExternref("GPUUncapturedErrorEvent")], shim_idx: 2226, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1705
+ imports.wbg.__wbindgen_cast_3382faf1314a867c = function(arg0, arg1) {
1706
+ // Cast intrinsic for `Closure(Closure { dtor_idx: 2460, function: Function { arguments: [NamedExternref("GPUUncapturedErrorEvent")], shim_idx: 2461, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1627
1707
  const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__heb49a8f426ac2d2e, wasm_bindgen__convert__closures_____invoke__h9d1c5a23ecfcd5c8);
1628
1708
  return ret;
1629
1709
  };
1630
- imports.wbg.__wbindgen_cast_adb0bbfefc4aa204 = function(arg0, arg1) {
1631
- // Cast intrinsic for `Closure(Closure { dtor_idx: 2357, function: Function { arguments: [Externref], shim_idx: 2358, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1710
+ imports.wbg.__wbindgen_cast_81075635f0fa4021 = function(arg0, arg1) {
1711
+ // Cast intrinsic for `Closure(Closure { dtor_idx: 2592, function: Function { arguments: [Externref], shim_idx: 2593, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1632
1712
  const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__hf5eaa61ced318e08, wasm_bindgen__convert__closures_____invoke__h53437a38721e89f7);
1633
1713
  return ret;
1634
1714
  };
Binary file
@@ -6,6 +6,7 @@ export const create_visualiser: (a: any) => any;
6
6
  export const get_script_api_metadata_json: () => [number, number];
7
7
  export const wasmvisualiser_clear_band_events: (a: number) => void;
8
8
  export const wasmvisualiser_clear_band_signals: (a: number) => void;
9
+ export const wasmvisualiser_clear_event_streams: (a: number) => void;
9
10
  export const wasmvisualiser_clear_frequency_bands: (a: number) => void;
10
11
  export const wasmvisualiser_clear_isolation: (a: number) => void;
11
12
  export const wasmvisualiser_clear_musical_time: (a: number) => void;
@@ -14,6 +15,8 @@ export const wasmvisualiser_get_band_bounds_at: (a: number, b: number) => [numbe
14
15
  export const wasmvisualiser_get_band_event_count: (a: number, b: number, c: number) => number;
15
16
  export const wasmvisualiser_get_band_signal_keys: (a: number) => [number, number];
16
17
  export const wasmvisualiser_get_current_vals: (a: number) => [number, number];
18
+ export const wasmvisualiser_get_entity_positions_json: (a: number) => [number, number];
19
+ export const wasmvisualiser_get_event_stream_count: (a: number, b: number, c: number) => number;
17
20
  export const wasmvisualiser_get_frequency_band_count: (a: number) => number;
18
21
  export const wasmvisualiser_get_script_error: (a: number) => [number, number];
19
22
  export const wasmvisualiser_get_signal_names: (a: number) => [number, number];
@@ -26,10 +29,12 @@ export const wasmvisualiser_new: () => number;
26
29
  export const wasmvisualiser_push_band_events: (a: number, b: number, c: number, d: number, e: number) => number;
27
30
  export const wasmvisualiser_push_band_signal: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
28
31
  export const wasmvisualiser_push_data: (a: number, b: number, c: number, d: number) => void;
32
+ export const wasmvisualiser_push_event_stream: (a: number, b: number, c: number, d: number, e: number) => number;
29
33
  export const wasmvisualiser_push_signal: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
30
34
  export const wasmvisualiser_push_zoom_data: (a: number, b: number, c: number, d: number) => void;
31
35
  export const wasmvisualiser_register_mesh_asset: (a: number, b: number, c: number, d: number, e: number) => number;
32
36
  export const wasmvisualiser_render: (a: number, b: number) => void;
37
+ export const wasmvisualiser_render_with_budget: (a: number, b: number, c: number) => number;
33
38
  export const wasmvisualiser_resize: (a: number, b: number, c: number) => void;
34
39
  export const wasmvisualiser_run_analysis: (a: number, b: number, c: number, d: number, e: number) => [number, number];
35
40
  export const wasmvisualiser_run_analysis_with_events: (a: number, b: number, c: number, d: number, e: number) => [number, number];
@@ -40,8 +45,8 @@ export const wasmvisualiser_set_sigmoid_k: (a: number, b: number) => void;
40
45
  export const wasmvisualiser_set_time: (a: number, b: number) => void;
41
46
  export const wasmvisualiser_take_script_diagnostics_json: (a: number) => [number, number];
42
47
  export const wasmvisualiser_unregister_mesh_asset: (a: number, b: number, c: number) => number;
43
- export const wasmvisualiser_push_rotation_data: (a: number, b: number, c: number, d: number) => void;
44
48
  export const init_panic_hook: () => void;
49
+ export const wasmvisualiser_push_rotation_data: (a: number, b: number, c: number, d: number) => void;
45
50
  export const wasm_bindgen__convert__closures_____invoke__h53437a38721e89f7: (a: number, b: number, c: any) => void;
46
51
  export const wasm_bindgen__closure__destroy__hf5eaa61ced318e08: (a: number, b: number) => void;
47
52
  export const wasm_bindgen__convert__closures_____invoke__h9d1c5a23ecfcd5c8: (a: number, b: number, c: any) => void;