@algo-wasm/algo-wasm 1.0.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 (55) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE +661 -0
  3. package/NOTICE +15 -0
  4. package/README.md +36 -0
  5. package/dist/AlgoWasmError.d.ts +8 -0
  6. package/dist/AlgoWasmError.d.ts.map +1 -0
  7. package/dist/AlgoWasmError.js +9 -0
  8. package/dist/AlgoWasmError.js.map +1 -0
  9. package/dist/AlgoWasmPlayer.d.ts +48 -0
  10. package/dist/AlgoWasmPlayer.d.ts.map +1 -0
  11. package/dist/AlgoWasmPlayer.js +375 -0
  12. package/dist/AlgoWasmPlayer.js.map +1 -0
  13. package/dist/algo_wasm.wasm +0 -0
  14. package/dist/events.d.ts +9 -0
  15. package/dist/events.d.ts.map +1 -0
  16. package/dist/events.js +25 -0
  17. package/dist/events.js.map +1 -0
  18. package/dist/index.d.ts +7 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +6 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/integrations/phaser.d.ts +11 -0
  23. package/dist/integrations/phaser.d.ts.map +1 -0
  24. package/dist/integrations/phaser.js +16 -0
  25. package/dist/integrations/phaser.js.map +1 -0
  26. package/dist/integrations/react.d.ts +8 -0
  27. package/dist/integrations/react.d.ts.map +1 -0
  28. package/dist/integrations/react.js +28 -0
  29. package/dist/integrations/react.js.map +1 -0
  30. package/dist/integrations/svelte.d.ts +7 -0
  31. package/dist/integrations/svelte.d.ts.map +1 -0
  32. package/dist/integrations/svelte.js +17 -0
  33. package/dist/integrations/svelte.js.map +1 -0
  34. package/dist/integrations/vue.d.ts +8 -0
  35. package/dist/integrations/vue.d.ts.map +1 -0
  36. package/dist/integrations/vue.js +16 -0
  37. package/dist/integrations/vue.js.map +1 -0
  38. package/dist/loadWasm.d.ts +47 -0
  39. package/dist/loadWasm.d.ts.map +1 -0
  40. package/dist/loadWasm.js +229 -0
  41. package/dist/loadWasm.js.map +1 -0
  42. package/dist/profile-schema.json +464 -0
  43. package/dist/profile.d.ts +15 -0
  44. package/dist/profile.d.ts.map +1 -0
  45. package/dist/profile.js +525 -0
  46. package/dist/profile.js.map +1 -0
  47. package/dist/types.d.ts +189 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +2 -0
  50. package/dist/types.js.map +1 -0
  51. package/dist/worklet/algo-worklet.d.ts +83 -0
  52. package/dist/worklet/algo-worklet.d.ts.map +1 -0
  53. package/dist/worklet/algo-worklet.js +471 -0
  54. package/dist/worklet/algo-worklet.js.map +1 -0
  55. package/package.json +56 -0
@@ -0,0 +1,471 @@
1
+ "use strict";
2
+ class WorkletWasmBinding {
3
+ exports;
4
+ enginePtr = 0;
5
+ renderPtr = 0;
6
+ renderLength = 0;
7
+ renderView;
8
+ constructor(instance) {
9
+ this.exports = instance.exports;
10
+ this.memory;
11
+ }
12
+ create(profile, seed, requestedSampleRate, volume) {
13
+ if (this.enginePtr !== 0) {
14
+ this.destroy();
15
+ }
16
+ const profileJson = JSON.stringify(profile);
17
+ const { high, low } = splitSeed(seed);
18
+ const pointer = this.writeString(profileJson);
19
+ try {
20
+ const result = this.call('algo_wasm_engine_create', requestedSampleRate, high, low, pointer.pointer, pointer.length);
21
+ if (result === 0) {
22
+ throw new Error(this.lastError('Engine creation failed.'));
23
+ }
24
+ this.enginePtr = result;
25
+ this.setVolume(volume);
26
+ }
27
+ finally {
28
+ this.call('algo_wasm_dealloc', pointer.pointer, pointer.length);
29
+ }
30
+ }
31
+ start() {
32
+ this.callCode('algo_wasm_engine_start');
33
+ }
34
+ pause() {
35
+ this.callCode('algo_wasm_engine_pause');
36
+ }
37
+ resume() {
38
+ this.callCode('algo_wasm_engine_resume');
39
+ }
40
+ stop() {
41
+ this.callCode('algo_wasm_engine_stop');
42
+ }
43
+ setSeed(seed) {
44
+ const { high, low } = splitSeed(seed);
45
+ this.callCode('algo_wasm_engine_set_seed', high, low);
46
+ }
47
+ setProfile(profile) {
48
+ const pointer = this.writeString(JSON.stringify(profile));
49
+ try {
50
+ const code = this.call('algo_wasm_engine_set_profile', this.enginePtr, pointer.pointer, pointer.length);
51
+ this.assertCode(code, 'Profile update failed.');
52
+ }
53
+ finally {
54
+ this.call('algo_wasm_dealloc', pointer.pointer, pointer.length);
55
+ }
56
+ }
57
+ setVolume(value) {
58
+ this.callCode('algo_wasm_engine_set_volume', clampUnit(value));
59
+ }
60
+ setEnergy(value) {
61
+ this.callCode('algo_wasm_engine_set_energy', clampUnit(value));
62
+ }
63
+ setIntensity(value) {
64
+ this.callCode('algo_wasm_engine_set_intensity', clampUnit(value));
65
+ }
66
+ setMood(mood) {
67
+ const pointer = this.writeString(mood);
68
+ try {
69
+ const code = this.call('algo_wasm_engine_set_mood', this.enginePtr, pointer.pointer, pointer.length);
70
+ this.assertCode(code, 'Mood update failed.');
71
+ }
72
+ finally {
73
+ this.call('algo_wasm_dealloc', pointer.pointer, pointer.length);
74
+ }
75
+ }
76
+ setTempoRange(minBpm, maxBpm) {
77
+ this.callCode('algo_wasm_engine_set_tempo_range', minBpm, maxBpm);
78
+ }
79
+ setMuted(trackId, muted) {
80
+ const pointer = this.writeString(trackId);
81
+ try {
82
+ const code = this.call('algo_wasm_engine_set_muted', this.enginePtr, pointer.pointer, pointer.length, muted ? 1 : 0);
83
+ this.assertCode(code, 'Mute update failed.');
84
+ }
85
+ finally {
86
+ this.call('algo_wasm_dealloc', pointer.pointer, pointer.length);
87
+ }
88
+ }
89
+ setSolo(trackId, solo) {
90
+ const pointer = this.writeString(trackId);
91
+ try {
92
+ const code = this.call('algo_wasm_engine_set_solo', this.enginePtr, pointer.pointer, pointer.length, solo ? 1 : 0);
93
+ this.assertCode(code, 'Solo update failed.');
94
+ }
95
+ finally {
96
+ this.call('algo_wasm_dealloc', pointer.pointer, pointer.length);
97
+ }
98
+ }
99
+ renderTo(output) {
100
+ this.ensureRenderBuffer(output.length);
101
+ const code = this.call('algo_wasm_engine_render', this.enginePtr, this.renderPtr, output.length);
102
+ this.assertCode(code, 'Render failed.');
103
+ if (!this.renderView || this.renderView.buffer !== this.memory.buffer) {
104
+ this.renderView = new Float32Array(this.memory.buffer, this.renderPtr, this.renderLength);
105
+ }
106
+ output.set(this.renderView.subarray(0, output.length));
107
+ }
108
+ snapshot() {
109
+ const length = this.call('algo_wasm_engine_snapshot_json', this.enginePtr);
110
+ return this.readJson(length);
111
+ }
112
+ events() {
113
+ const length = this.call('algo_wasm_engine_events_json', this.enginePtr);
114
+ return this.readJson(length);
115
+ }
116
+ exportMidi() {
117
+ const length = this.call('algo_wasm_engine_export_midi', this.enginePtr);
118
+ const pointer = this.call('algo_wasm_bytes_ptr');
119
+ return new Uint8Array(this.memory.buffer, pointer, length).slice();
120
+ }
121
+ destroy() {
122
+ if (this.renderPtr !== 0) {
123
+ this.call('algo_wasm_dealloc', this.renderPtr, this.renderLength * 4);
124
+ this.renderPtr = 0;
125
+ }
126
+ if (this.enginePtr !== 0) {
127
+ this.call('algo_wasm_engine_destroy', this.enginePtr);
128
+ this.enginePtr = 0;
129
+ }
130
+ }
131
+ get memory() {
132
+ const memory = this.exports.memory;
133
+ if (!(memory instanceof WebAssembly.Memory)) {
134
+ throw new Error('AlgoWASM did not export WebAssembly memory.');
135
+ }
136
+ return memory;
137
+ }
138
+ ensureRenderBuffer(length) {
139
+ if (this.renderPtr !== 0 && this.renderLength >= length) {
140
+ return;
141
+ }
142
+ if (this.renderPtr !== 0) {
143
+ this.call('algo_wasm_dealloc', this.renderPtr, this.renderLength * 4);
144
+ }
145
+ this.renderLength = length;
146
+ this.renderPtr = this.call('algo_wasm_alloc', length * 4);
147
+ this.renderView = new Float32Array(this.memory.buffer, this.renderPtr, length);
148
+ }
149
+ writeString(value) {
150
+ const bytes = encodeUtf8(value);
151
+ const pointer = this.call('algo_wasm_alloc', bytes.length);
152
+ if (pointer === 0) {
153
+ throw new Error('Could not allocate a WASM string buffer.');
154
+ }
155
+ new Uint8Array(this.memory.buffer, pointer, bytes.length).set(bytes);
156
+ return {
157
+ pointer,
158
+ length: bytes.length
159
+ };
160
+ }
161
+ readJson(length) {
162
+ if (length === 0) {
163
+ throw new Error(this.lastError('AlgoWASM returned an empty JSON buffer.'));
164
+ }
165
+ const pointer = this.call('algo_wasm_json_ptr');
166
+ const bytes = new Uint8Array(this.memory.buffer, pointer, length);
167
+ return JSON.parse(decodeUtf8(bytes));
168
+ }
169
+ callCode(name, ...args) {
170
+ const code = this.call(name, this.enginePtr, ...args);
171
+ this.assertCode(code, `${String(name)} failed.`);
172
+ }
173
+ assertCode(code, fallback) {
174
+ if (code !== 0) {
175
+ throw new Error(this.lastError(fallback));
176
+ }
177
+ }
178
+ call(name, ...args) {
179
+ const value = this.exports[name];
180
+ if (typeof value !== 'function') {
181
+ throw new Error(`AlgoWASM is missing the ${String(name)} export.`);
182
+ }
183
+ return value(...args);
184
+ }
185
+ lastError(fallback) {
186
+ const length = this.call('algo_wasm_last_error_len');
187
+ if (length === 0) {
188
+ return fallback;
189
+ }
190
+ const pointer = this.call('algo_wasm_last_error_ptr');
191
+ const bytes = new Uint8Array(this.memory.buffer, pointer, length);
192
+ return decodeUtf8(bytes);
193
+ }
194
+ }
195
+ class AlgoWasmProcessor extends AudioWorkletProcessor {
196
+ binding;
197
+ playing = false;
198
+ scratch = new Float32Array(0);
199
+ eventCountdown = 0;
200
+ commandQueue = Promise.resolve();
201
+ constructor() {
202
+ super();
203
+ this.port.onmessage = event => {
204
+ const command = event.data;
205
+ // Chain onto the queue instead of firing handleCommand directly so
206
+ // commands are always applied in the order they were received, even
207
+ // while an earlier async command (such as 'configure') is still
208
+ // pending.
209
+ this.commandQueue = this.commandQueue.then(() => this.handleCommand(command));
210
+ };
211
+ }
212
+ process(_inputs, outputs, _parameters) {
213
+ const output = outputs[0];
214
+ const left = output?.[0];
215
+ const right = output?.[1] ?? left;
216
+ if (!left || !right) {
217
+ return true;
218
+ }
219
+ if (!this.binding || !this.playing) {
220
+ left.fill(0);
221
+ right.fill(0);
222
+ return true;
223
+ }
224
+ const length = left.length * 2;
225
+ if (this.scratch.length !== length) {
226
+ this.scratch = new Float32Array(length);
227
+ }
228
+ try {
229
+ this.binding.renderTo(this.scratch);
230
+ for (let index = 0; index < left.length; index += 1) {
231
+ left[index] = this.scratch[index * 2] ?? 0;
232
+ right[index] = this.scratch[index * 2 + 1] ?? 0;
233
+ }
234
+ this.eventCountdown -= 1;
235
+ if (this.eventCountdown <= 0) {
236
+ this.eventCountdown = 16;
237
+ const events = this.binding.events();
238
+ if (events.length > 0) {
239
+ this.port.postMessage({
240
+ type: 'events',
241
+ events,
242
+ snapshot: this.binding.snapshot()
243
+ });
244
+ }
245
+ }
246
+ }
247
+ catch (error) {
248
+ this.playing = false;
249
+ left.fill(0);
250
+ right.fill(0);
251
+ this.port.postMessage({
252
+ type: 'error',
253
+ error: error instanceof Error ? error.message : String(error)
254
+ });
255
+ }
256
+ return true;
257
+ }
258
+ async handleCommand(command) {
259
+ try {
260
+ if (command.type === 'configure') {
261
+ await this.configure(command);
262
+ return;
263
+ }
264
+ if (!this.binding) {
265
+ throw new Error('AlgoWASM worklet has not been configured.');
266
+ }
267
+ const result = this.applyCommand(command);
268
+ this.reply(command.id, true, result);
269
+ }
270
+ catch (error) {
271
+ this.reply(command.id, false, undefined, error instanceof Error ? error.message : String(error));
272
+ }
273
+ }
274
+ async configure(command) {
275
+ if (!command.wasmBytes && !command.wasmUrl) {
276
+ throw new Error('WASM bytes or a WASM URL are required.');
277
+ }
278
+ const instance = await instantiateWorkletWasm(command.wasmUrl, command.wasmBytes);
279
+ const binding = new WorkletWasmBinding(instance);
280
+ binding.create(command.profile ?? {}, command.seed ?? '1', command.sampleRate ?? sampleRate, command.volume ?? 0.8);
281
+ this.binding = binding;
282
+ this.port.postMessage({
283
+ type: 'ready',
284
+ snapshot: binding.snapshot()
285
+ });
286
+ }
287
+ applyCommand(command) {
288
+ const binding = this.requireBinding();
289
+ switch (command.type) {
290
+ case 'start':
291
+ binding.start();
292
+ this.playing = true;
293
+ return binding.snapshot();
294
+ case 'pause':
295
+ binding.pause();
296
+ this.playing = false;
297
+ return binding.snapshot();
298
+ case 'resume':
299
+ binding.resume();
300
+ this.playing = true;
301
+ return binding.snapshot();
302
+ case 'stop':
303
+ binding.stop();
304
+ this.playing = false;
305
+ return binding.snapshot();
306
+ case 'set-seed':
307
+ binding.setSeed(command.seed ?? '1');
308
+ return binding.snapshot();
309
+ case 'set-profile':
310
+ binding.setProfile(command.profile ?? {});
311
+ return binding.snapshot();
312
+ case 'set-volume':
313
+ binding.setVolume(command.value ?? 0.8);
314
+ return binding.snapshot();
315
+ case 'set-energy':
316
+ binding.setEnergy(command.value ?? 0.5);
317
+ return binding.snapshot();
318
+ case 'set-intensity':
319
+ binding.setIntensity(command.value ?? 0.5);
320
+ return binding.snapshot();
321
+ case 'set-mood':
322
+ binding.setMood(command.mood ?? 'dark');
323
+ return binding.snapshot();
324
+ case 'set-tempo-range':
325
+ binding.setTempoRange(command.minBpm ?? 118, command.maxBpm ?? 138);
326
+ return binding.snapshot();
327
+ case 'set-muted':
328
+ binding.setMuted(command.trackId ?? '', command.muted ?? false);
329
+ return binding.snapshot();
330
+ case 'set-solo':
331
+ binding.setSolo(command.trackId ?? '', command.solo ?? false);
332
+ return binding.snapshot();
333
+ case 'export-midi': {
334
+ const bytes = binding.exportMidi();
335
+ return bytes.buffer;
336
+ }
337
+ case 'destroy':
338
+ binding.destroy();
339
+ this.binding = undefined;
340
+ this.playing = false;
341
+ return undefined;
342
+ default:
343
+ throw new Error(`Unknown AlgoWASM command: ${command.type}.`);
344
+ }
345
+ }
346
+ requireBinding() {
347
+ if (!this.binding) {
348
+ throw new Error('AlgoWASM worklet has not been configured.');
349
+ }
350
+ return this.binding;
351
+ }
352
+ reply(id, ok, result, error) {
353
+ if (id === undefined) {
354
+ if (!ok && error) {
355
+ this.port.postMessage({
356
+ type: 'error',
357
+ error
358
+ });
359
+ }
360
+ return;
361
+ }
362
+ this.port.postMessage({
363
+ type: 'command-result',
364
+ id,
365
+ ok,
366
+ result,
367
+ error
368
+ });
369
+ }
370
+ }
371
+ async function instantiateWorkletWasm(url, wasmBytes) {
372
+ if (wasmBytes) {
373
+ const result = await WebAssembly.instantiate(wasmBytes, {});
374
+ return result.instance;
375
+ }
376
+ if (!url) {
377
+ throw new Error('WASM URL is required when bytes are not supplied.');
378
+ }
379
+ const response = await fetch(url);
380
+ if (!response.ok) {
381
+ throw new Error(`Could not load AlgoWASM from ${url}. The server returned ${response.status}.`);
382
+ }
383
+ if (WebAssembly.instantiateStreaming) {
384
+ try {
385
+ const result = await WebAssembly.instantiateStreaming(response, {});
386
+ return result.instance;
387
+ }
388
+ catch (error) {
389
+ if (response.headers.get('content-type') === 'application/wasm') {
390
+ throw error;
391
+ }
392
+ }
393
+ }
394
+ const fallback = await fetch(url);
395
+ const bytes = await fallback.arrayBuffer();
396
+ const result = await WebAssembly.instantiate(bytes, {});
397
+ return result.instance;
398
+ }
399
+ function splitSeed(seed) {
400
+ const value = BigInt.asUintN(64, BigInt(seed));
401
+ return {
402
+ high: Number((value >> 32n) & 0xffffffffn),
403
+ low: Number(value & 0xffffffffn)
404
+ };
405
+ }
406
+ function clampUnit(value) {
407
+ if (!Number.isFinite(value)) {
408
+ return 0;
409
+ }
410
+ return Math.min(1, Math.max(0, value));
411
+ }
412
+ function encodeUtf8(value) {
413
+ if (typeof TextEncoder !== 'undefined') {
414
+ return new TextEncoder().encode(value);
415
+ }
416
+ const bytes = [];
417
+ for (const character of value) {
418
+ const point = character.codePointAt(0) ?? 0;
419
+ if (point <= 0x7f) {
420
+ bytes.push(point);
421
+ }
422
+ else if (point <= 0x7ff) {
423
+ bytes.push(0xc0 | (point >> 6), 0x80 | (point & 0x3f));
424
+ }
425
+ else if (point <= 0xffff) {
426
+ bytes.push(0xe0 | (point >> 12), 0x80 | ((point >> 6) & 0x3f), 0x80 | (point & 0x3f));
427
+ }
428
+ else {
429
+ bytes.push(0xf0 | (point >> 18), 0x80 | ((point >> 12) & 0x3f), 0x80 | ((point >> 6) & 0x3f), 0x80 | (point & 0x3f));
430
+ }
431
+ }
432
+ return new Uint8Array(bytes);
433
+ }
434
+ function decodeUtf8(bytes) {
435
+ if (typeof TextDecoder !== 'undefined') {
436
+ return new TextDecoder().decode(bytes);
437
+ }
438
+ let output = '';
439
+ let index = 0;
440
+ while (index < bytes.length) {
441
+ const first = bytes[index] ?? 0;
442
+ if (first < 0x80) {
443
+ output += String.fromCodePoint(first);
444
+ index += 1;
445
+ }
446
+ else if (first < 0xe0) {
447
+ const second = bytes[index + 1] ?? 0;
448
+ output += String.fromCodePoint(((first & 0x1f) << 6) | (second & 0x3f));
449
+ index += 2;
450
+ }
451
+ else if (first < 0xf0) {
452
+ const second = bytes[index + 1] ?? 0;
453
+ const third = bytes[index + 2] ?? 0;
454
+ output += String.fromCodePoint(((first & 0x0f) << 12) | ((second & 0x3f) << 6) | (third & 0x3f));
455
+ index += 3;
456
+ }
457
+ else {
458
+ const second = bytes[index + 1] ?? 0;
459
+ const third = bytes[index + 2] ?? 0;
460
+ const fourth = bytes[index + 3] ?? 0;
461
+ output += String.fromCodePoint(((first & 0x07) << 18)
462
+ | ((second & 0x3f) << 12)
463
+ | ((third & 0x3f) << 6)
464
+ | (fourth & 0x3f));
465
+ index += 4;
466
+ }
467
+ }
468
+ return output;
469
+ }
470
+ registerProcessor('algo-wasm-processor', AlgoWasmProcessor);
471
+ //# sourceMappingURL=algo-worklet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algo-worklet.js","sourceRoot":"","sources":["../../src/worklet/algo-worklet.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@algo-wasm/algo-wasm",
3
+ "version": "1.0.0",
4
+ "description": "A WebAssembly-first deterministic algorithmic music engine for modern browsers.",
5
+ "type": "module",
6
+ "repository": { "type": "git", "url": "git+https://github.com/0xe25f/algowasm.git" },
7
+ "homepage": "https://github.com/0xe25f/algowasm#readme",
8
+ "bugs": { "url": "https://github.com/0xe25f/algowasm/issues" },
9
+ "sideEffects": false,
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js"
16
+ },
17
+ "./worklet": "./dist/worklet/algo-worklet.js",
18
+ "./wasm": "./dist/algo_wasm.wasm",
19
+ "./profile-schema": "./dist/profile-schema.json",
20
+ "./integrations/phaser": {
21
+ "types": "./dist/integrations/phaser.d.ts",
22
+ "import": "./dist/integrations/phaser.js"
23
+ },
24
+ "./integrations/react": {
25
+ "types": "./dist/integrations/react.d.ts",
26
+ "import": "./dist/integrations/react.js"
27
+ },
28
+ "./integrations/vue": {
29
+ "types": "./dist/integrations/vue.d.ts",
30
+ "import": "./dist/integrations/vue.js"
31
+ },
32
+ "./integrations/svelte": {
33
+ "types": "./dist/integrations/svelte.d.ts",
34
+ "import": "./dist/integrations/svelte.js"
35
+ }
36
+ },
37
+ "files": [
38
+ "dist",
39
+ "README.md",
40
+ "LICENSE",
41
+ "NOTICE",
42
+ "CHANGELOG.md"
43
+ ],
44
+ "scripts": {
45
+ "build": "node ../../scripts/build-package.mjs",
46
+ "test": "node --test ../../test/package/*.test.mjs"
47
+ },
48
+ "keywords": [
49
+ "webassembly",
50
+ "webaudio",
51
+ "audioworklet",
52
+ "algorithmic-music",
53
+ "procedural-audio"
54
+ ],
55
+ "license": "AGPL-3.0-or-later"
56
+ }