@algo-wasm/algo-wasm 1.0.0 → 1.2.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 (61) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +6 -4
  3. package/dist/algo-wasm-error.d.ts +13 -0
  4. package/dist/algo-wasm-player.d.ts +169 -0
  5. package/dist/algo_wasm.wasm +0 -0
  6. package/dist/built-in-profiles.d.ts +5 -0
  7. package/dist/engine-core.d.ts +96 -0
  8. package/dist/events.d.ts +5 -1
  9. package/dist/index.d.ts +3 -4
  10. package/dist/index.js +1 -6
  11. package/dist/integrations/phaser.d.ts +9 -2
  12. package/dist/integrations/phaser.js +1 -16
  13. package/dist/integrations/react.d.ts +8 -2
  14. package/dist/integrations/react.js +1 -28
  15. package/dist/integrations/svelte.d.ts +6 -2
  16. package/dist/integrations/svelte.js +1 -17
  17. package/dist/integrations/vue.d.ts +7 -2
  18. package/dist/integrations/vue.js +1 -16
  19. package/dist/load-wasm.d.ts +92 -0
  20. package/dist/profile-schema.json +317 -228
  21. package/dist/profile-spec.d.ts +178 -0
  22. package/dist/profile-wire.d.ts +50 -0
  23. package/dist/profile.d.ts +25 -1
  24. package/dist/types.d.ts +25 -1
  25. package/dist/wire-decode.d.ts +18 -0
  26. package/dist/worklet/algo-worklet.d.ts +1 -83
  27. package/dist/worklet/algo-worklet.js +1 -471
  28. package/package.json +1 -1
  29. package/dist/AlgoWasmError.d.ts +0 -8
  30. package/dist/AlgoWasmError.d.ts.map +0 -1
  31. package/dist/AlgoWasmError.js +0 -9
  32. package/dist/AlgoWasmError.js.map +0 -1
  33. package/dist/AlgoWasmPlayer.d.ts +0 -48
  34. package/dist/AlgoWasmPlayer.d.ts.map +0 -1
  35. package/dist/AlgoWasmPlayer.js +0 -375
  36. package/dist/AlgoWasmPlayer.js.map +0 -1
  37. package/dist/events.d.ts.map +0 -1
  38. package/dist/events.js +0 -25
  39. package/dist/events.js.map +0 -1
  40. package/dist/index.d.ts.map +0 -1
  41. package/dist/index.js.map +0 -1
  42. package/dist/integrations/phaser.d.ts.map +0 -1
  43. package/dist/integrations/phaser.js.map +0 -1
  44. package/dist/integrations/react.d.ts.map +0 -1
  45. package/dist/integrations/react.js.map +0 -1
  46. package/dist/integrations/svelte.d.ts.map +0 -1
  47. package/dist/integrations/svelte.js.map +0 -1
  48. package/dist/integrations/vue.d.ts.map +0 -1
  49. package/dist/integrations/vue.js.map +0 -1
  50. package/dist/loadWasm.d.ts +0 -47
  51. package/dist/loadWasm.d.ts.map +0 -1
  52. package/dist/loadWasm.js +0 -229
  53. package/dist/loadWasm.js.map +0 -1
  54. package/dist/profile.d.ts.map +0 -1
  55. package/dist/profile.js +0 -525
  56. package/dist/profile.js.map +0 -1
  57. package/dist/types.d.ts.map +0 -1
  58. package/dist/types.js +0 -2
  59. package/dist/types.js.map +0 -1
  60. package/dist/worklet/algo-worklet.d.ts.map +0 -1
  61. package/dist/worklet/algo-worklet.js.map +0 -1
@@ -1,375 +0,0 @@
1
- import { AlgoWasmError } from './AlgoWasmError.js';
2
- import { AlgoWasmEventEmitter } from './events.js';
3
- import { AlgoWasmEngineBinding, instantiateAlgoWasm } from './loadWasm.js';
4
- import { builtInProfiles, normaliseSeed, validateProfile } from './profile.js';
5
- export class AlgoWasmPlayer {
6
- emitter = new AlgoWasmEventEmitter();
7
- audioContext;
8
- ownsAudioContext;
9
- node;
10
- wasmUrl;
11
- workletUrl;
12
- pending = new Map();
13
- commandId = 1;
14
- destroyed = false;
15
- destroyPromise;
16
- profile;
17
- seed;
18
- lastSnapshot;
19
- lastEvents = [];
20
- constructor(audioContext, ownsAudioContext, node, wasmUrl, workletUrl, profile, seed, initialSnapshot) {
21
- this.audioContext = audioContext;
22
- this.ownsAudioContext = ownsAudioContext;
23
- this.node = node;
24
- this.wasmUrl = wasmUrl;
25
- this.workletUrl = workletUrl;
26
- this.profile = profile;
27
- this.seed = seed;
28
- this.lastSnapshot = initialSnapshot;
29
- this.node.port.onmessage = (event) => this.handleMessage(event.data);
30
- }
31
- static async create(options) {
32
- assertBrowserSupport();
33
- const profile = validateProfile(options.profile ?? builtInProfiles.amigaHouse95ish());
34
- const seed = normaliseSeed(options.seed);
35
- const wasmUrl = options.wasmUrl.toString();
36
- const workletUrl = options.workletUrl.toString();
37
- const ownsAudioContext = !options.audioContext;
38
- const audioContext = options.audioContext ?? new AudioContext();
39
- if (!audioContext.audioWorklet) {
40
- throw new AlgoWasmError('browser_feature_missing', 'AudioWorklet is not available in this browser. AlgoWASM targets modern browsers from 2025 onwards.');
41
- }
42
- try {
43
- await audioContext.audioWorklet.addModule(workletUrl);
44
- }
45
- catch (error) {
46
- throw new AlgoWasmError('worklet_load_failed', `Could not load the AlgoWASM worklet from ${workletUrl}.`, {
47
- cause: error
48
- });
49
- }
50
- const node = new AudioWorkletNode(audioContext, 'algo-wasm-processor', {
51
- numberOfInputs: 0,
52
- numberOfOutputs: 1,
53
- outputChannelCount: [2]
54
- });
55
- node.connect(audioContext.destination);
56
- const initialSnapshot = createInitialSnapshot(profile, seed, audioContext.sampleRate);
57
- const player = new AlgoWasmPlayer(audioContext, ownsAudioContext, node, wasmUrl, workletUrl, profile, seed, initialSnapshot);
58
- await player.configure(options.volume ?? 0.8);
59
- return player;
60
- }
61
- async start() {
62
- this.assertAlive();
63
- try {
64
- const unlockState = await resumeAudioContext(this.audioContext);
65
- if (unlockState === 'pending') {
66
- this.emitter.emit('warning', 'AudioContext did not report a running state yet. Playback will continue when the browser unlocks audio.');
67
- }
68
- }
69
- catch (error) {
70
- throw new AlgoWasmError('audio_context_locked', 'AudioContext could not resume. Call start() from a user gesture such as a click or tap.', { cause: error });
71
- }
72
- const snapshot = (await this.sendCommand('start'));
73
- this.updateSnapshot(snapshot);
74
- this.emitter.emit('started', this.lastSnapshot);
75
- }
76
- async pause() {
77
- this.assertAlive();
78
- const snapshot = (await this.sendCommand('pause'));
79
- this.updateSnapshot(snapshot);
80
- this.emitter.emit('paused', this.lastSnapshot);
81
- }
82
- async resume() {
83
- this.assertAlive();
84
- const unlockState = await resumeAudioContext(this.audioContext);
85
- if (unlockState === 'pending') {
86
- this.emitter.emit('warning', 'AudioContext did not report a running state yet. Playback will continue when the browser unlocks audio.');
87
- }
88
- const snapshot = (await this.sendCommand('resume'));
89
- this.updateSnapshot(snapshot);
90
- this.emitter.emit('resumed', this.lastSnapshot);
91
- }
92
- async stop() {
93
- this.assertAlive();
94
- const snapshot = (await this.sendCommand('stop'));
95
- this.updateSnapshot(snapshot);
96
- this.emitter.emit('stopped', this.lastSnapshot);
97
- }
98
- async destroy() {
99
- // Memoise the in-flight promise (set synchronously, before any await) so
100
- // overlapping calls share one teardown instead of each racing to send
101
- // their own "destroy" command and close the same AudioContext twice.
102
- if (this.destroyPromise) {
103
- return this.destroyPromise;
104
- }
105
- this.destroyPromise = this.performDestroy();
106
- return this.destroyPromise;
107
- }
108
- async performDestroy() {
109
- try {
110
- await this.sendBestEffort('destroy');
111
- }
112
- finally {
113
- this.destroyed = true;
114
- for (const command of this.pending.values()) {
115
- clearTimeout(command.timeout);
116
- command.reject(new AlgoWasmError('destroyed', 'AlgoWASM player was destroyed.'));
117
- }
118
- this.pending.clear();
119
- this.node.disconnect();
120
- this.node.port.close();
121
- this.emitter.clear();
122
- if (this.ownsAudioContext && this.audioContext.state !== 'closed') {
123
- try {
124
- await this.audioContext.close();
125
- }
126
- catch {
127
- // The browser may already be closing this context. Destruction must
128
- // still resolve rather than reject.
129
- }
130
- }
131
- }
132
- }
133
- setSeed(seed) {
134
- this.seed = normaliseSeed(seed);
135
- this.postLiveCommand('set-seed', { seed: this.seed.toString() });
136
- }
137
- setProfile(profile) {
138
- this.profile = validateProfile(profile);
139
- this.postLiveCommand('set-profile', { profile: this.profile });
140
- }
141
- setVolume(volume) {
142
- this.postLiveCommand('set-volume', { value: clampUnit(volume) });
143
- }
144
- setMuted(trackId, muted) {
145
- this.postLiveCommand('set-muted', { trackId, muted });
146
- }
147
- setSolo(trackId, solo) {
148
- this.postLiveCommand('set-solo', { trackId, solo });
149
- }
150
- setEnergy(value) {
151
- this.postLiveCommand('set-energy', { value: clampUnit(value) });
152
- }
153
- setIntensity(value) {
154
- this.postLiveCommand('set-intensity', { value: clampUnit(value) });
155
- }
156
- setMood(mood) {
157
- this.postLiveCommand('set-mood', { mood });
158
- }
159
- setTempoRange(minBpm, maxBpm) {
160
- this.postLiveCommand('set-tempo-range', { minBpm, maxBpm });
161
- }
162
- getSnapshot() {
163
- return structuredClone(this.lastSnapshot);
164
- }
165
- getCurrentEvents() {
166
- return structuredClone(this.lastEvents);
167
- }
168
- async exportMidi(_options = {}) {
169
- this.assertAlive();
170
- const bytes = (await this.sendCommand('export-midi'));
171
- return new Uint8Array(bytes);
172
- }
173
- async renderOffline(options) {
174
- this.assertAlive();
175
- const profile = validateProfile(options.profile ?? this.profile);
176
- const seed = normaliseSeed(options.seed ?? this.seed);
177
- const sampleRate = options.sampleRate ?? this.audioContext.sampleRate;
178
- const frames = Math.max(0, Math.floor(options.seconds * sampleRate));
179
- const output = new Float32Array(frames * 2);
180
- const { instance } = await instantiateAlgoWasm(this.wasmUrl);
181
- const binding = new AlgoWasmEngineBinding(instance);
182
- try {
183
- binding.create(sampleRate, seed, profile);
184
- binding.start();
185
- const chunkFrames = 2048;
186
- let offset = 0;
187
- while (offset < output.length) {
188
- const chunkLength = Math.min(chunkFrames * 2, output.length - offset);
189
- const chunk = new Float32Array(chunkLength);
190
- binding.renderTo(chunk);
191
- output.set(chunk, offset);
192
- offset += chunkLength;
193
- }
194
- }
195
- finally {
196
- binding.destroy();
197
- }
198
- return output;
199
- }
200
- on(eventName, handler) {
201
- return this.emitter.on(eventName, handler);
202
- }
203
- off(eventName, handler) {
204
- this.emitter.off(eventName, handler);
205
- }
206
- async configure(volume) {
207
- const wasmBytes = await fetchWasmBytes(this.wasmUrl);
208
- const ready = new Promise((resolve, reject) => {
209
- let offReady = () => { };
210
- let offError = () => { };
211
- const timeout = setTimeout(() => {
212
- offReady();
213
- offError();
214
- reject(new AlgoWasmError('engine_failed', 'AlgoWASM worklet did not become ready within five seconds.'));
215
- }, 5000);
216
- offReady = this.on('ready', snapshot => {
217
- clearTimeout(timeout);
218
- offReady();
219
- offError();
220
- resolve(snapshot);
221
- });
222
- offError = this.on('error', error => {
223
- clearTimeout(timeout);
224
- offReady();
225
- offError();
226
- reject(error);
227
- });
228
- });
229
- this.node.port.postMessage({
230
- type: 'configure',
231
- wasmUrl: this.wasmUrl,
232
- wasmBytes,
233
- profile: this.profile,
234
- seed: this.seed.toString(),
235
- volume: clampUnit(volume),
236
- sampleRate: this.audioContext.sampleRate
237
- }, [wasmBytes]);
238
- this.updateSnapshot(await ready);
239
- }
240
- postLiveCommand(type, payload) {
241
- if (this.destroyed) {
242
- throw new AlgoWasmError('destroyed', 'AlgoWASM player has been destroyed.');
243
- }
244
- void this.sendCommand(type, payload).catch(error => {
245
- this.emitter.emit('error', error instanceof Error ? error : new Error(String(error)));
246
- });
247
- }
248
- async sendBestEffort(type, payload = {}) {
249
- try {
250
- await this.sendCommand(type, payload, 1000);
251
- }
252
- catch {
253
- // Destruction must finish even if the worklet has already gone away.
254
- }
255
- }
256
- sendCommand(type, payload = {}, timeoutMs = 5000) {
257
- this.assertAlive();
258
- const id = this.commandId++;
259
- return new Promise((resolve, reject) => {
260
- const timeout = setTimeout(() => {
261
- this.pending.delete(id);
262
- reject(new AlgoWasmError('engine_failed', `Worklet command ${type} timed out.`));
263
- }, timeoutMs);
264
- this.pending.set(id, { resolve, reject, timeout });
265
- this.node.port.postMessage({
266
- type,
267
- id,
268
- ...payload
269
- });
270
- });
271
- }
272
- handleMessage(message) {
273
- if (message.type === 'ready') {
274
- this.updateSnapshot(message.snapshot);
275
- this.emitter.emit('ready', this.lastSnapshot);
276
- return;
277
- }
278
- if (message.type === 'events') {
279
- this.lastEvents = message.events;
280
- if (message.snapshot) {
281
- this.updateSnapshot(message.snapshot);
282
- }
283
- if (message.metrics) {
284
- this.emitter.emit('metrics', message.metrics);
285
- }
286
- for (const event of message.events) {
287
- if (event.type === 'section-change') {
288
- this.emitter.emit('section-change', event);
289
- }
290
- else if (event.type === 'bar') {
291
- this.emitter.emit('bar', event);
292
- }
293
- else if (event.type === 'beat') {
294
- this.emitter.emit('beat', event);
295
- }
296
- }
297
- return;
298
- }
299
- if (message.type === 'error') {
300
- this.emitter.emit('error', new AlgoWasmError('engine_failed', message.error));
301
- return;
302
- }
303
- const pending = this.pending.get(message.id);
304
- if (!pending) {
305
- return;
306
- }
307
- clearTimeout(pending.timeout);
308
- this.pending.delete(message.id);
309
- if (message.ok) {
310
- pending.resolve(message.result);
311
- return;
312
- }
313
- pending.reject(new AlgoWasmError('engine_failed', message.error ?? 'Worklet command failed.'));
314
- }
315
- updateSnapshot(snapshot) {
316
- this.lastSnapshot = structuredClone(snapshot);
317
- }
318
- assertAlive() {
319
- if (this.destroyed) {
320
- throw new AlgoWasmError('destroyed', 'AlgoWASM player has been destroyed.');
321
- }
322
- }
323
- }
324
- function assertBrowserSupport() {
325
- if (typeof AudioContext === 'undefined') {
326
- throw new AlgoWasmError('browser_feature_missing', 'AudioContext is not available in this browser. AlgoWASM targets modern browsers from 2025 onwards.');
327
- }
328
- if (typeof WebAssembly === 'undefined') {
329
- throw new AlgoWasmError('browser_feature_missing', 'WebAssembly is not available in this browser. AlgoWASM cannot run here.');
330
- }
331
- }
332
- function createInitialSnapshot(profile, seed, sampleRate) {
333
- return {
334
- seed: seed.toString(),
335
- sampleRate,
336
- bpm: profile.tempo.defaultBpm,
337
- currentBar: 0,
338
- currentBeat: 1,
339
- currentSection: 'intro',
340
- energy: 0.5,
341
- intensity: 0.5,
342
- isPlaying: false,
343
- tracks: profile.mixer.tracks.map(track => ({
344
- id: track.track,
345
- muted: false,
346
- solo: false,
347
- level: track.gain
348
- }))
349
- };
350
- }
351
- function clampUnit(value) {
352
- if (!Number.isFinite(value)) {
353
- return 0;
354
- }
355
- return Math.min(1, Math.max(0, value));
356
- }
357
- async function resumeAudioContext(audioContext) {
358
- if (audioContext.state === 'running') {
359
- return 'running';
360
- }
361
- return Promise.race([
362
- audioContext.resume().then(() => 'running'),
363
- new Promise(resolve => {
364
- setTimeout(() => resolve('pending'), 1200);
365
- })
366
- ]);
367
- }
368
- async function fetchWasmBytes(url) {
369
- const response = await fetch(url);
370
- if (!response.ok) {
371
- throw new AlgoWasmError('wasm_load_failed', `Could not load AlgoWASM from ${url}. The server returned ${response.status}.`);
372
- }
373
- return response.arrayBuffer();
374
- }
375
- //# sourceMappingURL=AlgoWasmPlayer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AlgoWasmPlayer.js","sourceRoot":"","sources":["../src/AlgoWasmPlayer.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiE;IAE1F,EAAE,CAAC,IAAI,SAAS,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,GAClC,MAAM,IAAI;IAQb,GAAG,CAAC,IAAI,SAAS,iBAAiB,EAChC,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,GAClC,IAAI;IAIP,IAAI,CAAC,IAAI,SAAS,iBAAiB,EACjC,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACnC,IAAI;IAYP,KAAK,IAAI,IAAI;CAGd"}
package/dist/events.js DELETED
@@ -1,25 +0,0 @@
1
- export class AlgoWasmEventEmitter {
2
- handlers = new Map();
3
- on(eventName, handler) {
4
- const handlers = this.handlers.get(eventName) ?? new Set();
5
- handlers.add(handler);
6
- this.handlers.set(eventName, handlers);
7
- return () => this.off(eventName, handler);
8
- }
9
- off(eventName, handler) {
10
- this.handlers.get(eventName)?.delete(handler);
11
- }
12
- emit(eventName, payload) {
13
- const handlers = this.handlers.get(eventName);
14
- if (!handlers) {
15
- return;
16
- }
17
- for (const handler of handlers) {
18
- handler(payload);
19
- }
20
- }
21
- clear() {
22
- this.handlers.clear();
23
- }
24
- }
25
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,oBAAoB;IACd,QAAQ,GAAG,IAAI,GAAG,EAAsD,CAAC;IAE1F,EAAE,CACA,SAAe,EACf,OAAmC;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAA8B,CAAC;QACvF,QAAQ,CAAC,GAAG,CAAC,OAAqC,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEvC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG,CACD,SAAe,EACf,OAAmC;QAEnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,OAAqC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CACF,SAAe,EACf,OAAoC;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClH,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,EACZ,4BAA4B,EAC5B,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,YAAY,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"phaser.d.ts","sourceRoot":"","sources":["../../src/integrations/phaser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE;QACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAC3B,CAAC;IACF,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;KACpD,CAAC;CACH;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,cAAc,EACtB,WAAW,SAAW,GACrB,MAAM,IAAI,CAkBZ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"phaser.js","sourceRoot":"","sources":["../../src/integrations/phaser.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,0BAA0B,CACxC,KAAsB,EACtB,MAAsB,EACtB,WAAW,GAAG,QAAQ;IAEtB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,EAAE,CAAC;IAET,OAAO,GAAG,EAAE;QACV,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/integrations/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,WAAW,IAAI,gBAAgB,CAAC;IAChC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7C;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,cAAc,GAAG,qBAAqB,CA6BzF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/integrations/react.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,2BAA2B,CAAC,MAAsB;IAChE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IACxC,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEhD,OAAO;QACL,WAAW;YACT,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9B,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAExB,OAAO,GAAG,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAE3B,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,EAAE,CAAC;oBACT,UAAU,EAAE,CAAC;oBACb,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"svelte.d.ts","sourceRoot":"","sources":["../../src/integrations/svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAClE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,qBAAqB,CAgBpF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"svelte.js","sourceRoot":"","sources":["../../src/integrations/svelte.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,sBAAsB,CAAC,MAAsB;IAC3D,OAAO;QACL,SAAS,CAAC,GAAG;YACX,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAEhD,OAAO,GAAG,EAAE;gBACV,MAAM,EAAE,CAAC;gBACT,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE,CAAC;YACf,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../src/integrations/vue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAC3C,iBAAiB,CAgBnB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"vue.js","sourceRoot":"","sources":["../../src/integrations/vue.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,uBAAuB,CACrC,MAAsB,EACtB,MAA4C;IAE5C,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEhD,MAAM,EAAE,CAAC;IAET,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;QAC9B,OAAO;YACL,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,47 +0,0 @@
1
- import type { AlgoWasmGeneratedEvent, AlgoWasmProfile, AlgoWasmSnapshot } from './types.js';
2
- export interface AlgoWasmInstantiation {
3
- instance: WebAssembly.Instance;
4
- module: WebAssembly.Module;
5
- }
6
- export declare function instantiateAlgoWasm(wasmUrl: string | URL): Promise<AlgoWasmInstantiation>;
7
- export declare class AlgoWasmEngineBinding {
8
- private readonly exports;
9
- private readonly encoder;
10
- private readonly decoder;
11
- private enginePtr;
12
- private renderPtr;
13
- private renderLength;
14
- private renderView?;
15
- constructor(instance: WebAssembly.Instance);
16
- create(sampleRate: number, seed: bigint, profile: AlgoWasmProfile): void;
17
- start(): void;
18
- pause(): void;
19
- resume(): void;
20
- stop(): void;
21
- setSeed(seed: bigint): void;
22
- setProfile(profile: AlgoWasmProfile): void;
23
- setVolume(value: number): void;
24
- setEnergy(value: number): void;
25
- setIntensity(value: number): void;
26
- setMood(value: string): void;
27
- setTempoRange(minBpm: number, maxBpm: number): void;
28
- setMuted(trackId: string, muted: boolean): void;
29
- setSolo(trackId: string, solo: boolean): void;
30
- renderTo(output: Float32Array): void;
31
- snapshot(): AlgoWasmSnapshot;
32
- events(): AlgoWasmGeneratedEvent[];
33
- exportMidi(): Uint8Array;
34
- destroy(): void;
35
- private ensureRenderBuffer;
36
- private get memory();
37
- private requireMemory;
38
- private requireExport;
39
- private call;
40
- private callEngine;
41
- private assertCode;
42
- private ensureEngine;
43
- private withString;
44
- private readJson;
45
- private readLastError;
46
- }
47
- //# sourceMappingURL=loadWasm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadWasm.d.ts","sourceRoot":"","sources":["../src/loadWasm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE5F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;CAC5B;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA8C/F;AAKD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,UAAU,CAAC,CAAe;gBAEtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;IAO1C,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAkBxE,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,IAAI;IAId,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAQ1C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO5B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAInD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAO/C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAO7C,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAapC,QAAQ,IAAI,gBAAgB;IAM5B,MAAM,IAAI,sBAAsB,EAAE;IAMlC,UAAU,IAAI,UAAU;IAQxB,OAAO,IAAI,IAAI;IAcf,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,aAAa;CAWtB"}