libadlmidi-js 1.1.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 (58) hide show
  1. package/README.md +36 -1
  2. package/dist/core.d.ts +148 -0
  3. package/dist/fm_banks/manifest.json +1 -1
  4. package/dist/libadlmidi.d.ts +119 -2
  5. package/dist/libadlmidi.dosbox.browser.js +1 -1
  6. package/dist/libadlmidi.dosbox.browser.wasm +0 -0
  7. package/dist/libadlmidi.dosbox.core.js +1 -1
  8. package/dist/libadlmidi.dosbox.core.wasm +0 -0
  9. package/dist/libadlmidi.dosbox.js +0 -0
  10. package/dist/libadlmidi.dosbox.processor.js +152 -53
  11. package/dist/libadlmidi.dosbox.slim.browser.js +1 -1
  12. package/dist/libadlmidi.dosbox.slim.browser.wasm +0 -0
  13. package/dist/libadlmidi.dosbox.slim.core.js +1 -1
  14. package/dist/libadlmidi.dosbox.slim.core.wasm +0 -0
  15. package/dist/libadlmidi.dosbox.slim.js +0 -0
  16. package/dist/libadlmidi.dosbox.slim.processor.js +152 -53
  17. package/dist/libadlmidi.full.browser.js +1 -1
  18. package/dist/libadlmidi.full.browser.wasm +0 -0
  19. package/dist/libadlmidi.full.core.js +1 -1
  20. package/dist/libadlmidi.full.core.wasm +0 -0
  21. package/dist/libadlmidi.full.js +0 -0
  22. package/dist/libadlmidi.full.processor.js +152 -53
  23. package/dist/libadlmidi.full.slim.browser.js +1 -1
  24. package/dist/libadlmidi.full.slim.browser.wasm +0 -0
  25. package/dist/libadlmidi.full.slim.core.js +1 -1
  26. package/dist/libadlmidi.full.slim.core.wasm +0 -0
  27. package/dist/libadlmidi.full.slim.js +0 -0
  28. package/dist/libadlmidi.full.slim.processor.js +152 -53
  29. package/dist/libadlmidi.js +258 -4
  30. package/dist/libadlmidi.js.map +2 -2
  31. package/dist/libadlmidi.light.browser.js +1 -1
  32. package/dist/libadlmidi.light.browser.wasm +0 -0
  33. package/dist/libadlmidi.light.core.js +1 -1
  34. package/dist/libadlmidi.light.core.wasm +0 -0
  35. package/dist/libadlmidi.light.js +0 -0
  36. package/dist/libadlmidi.light.processor.js +152 -53
  37. package/dist/libadlmidi.light.slim.browser.js +1 -1
  38. package/dist/libadlmidi.light.slim.browser.wasm +0 -0
  39. package/dist/libadlmidi.light.slim.core.js +1 -1
  40. package/dist/libadlmidi.light.slim.core.wasm +0 -0
  41. package/dist/libadlmidi.light.slim.js +0 -0
  42. package/dist/libadlmidi.light.slim.processor.js +152 -53
  43. package/dist/libadlmidi.nuked.browser.js +1 -1
  44. package/dist/libadlmidi.nuked.browser.wasm +0 -0
  45. package/dist/libadlmidi.nuked.core.js +1 -1
  46. package/dist/libadlmidi.nuked.core.wasm +0 -0
  47. package/dist/libadlmidi.nuked.js +0 -0
  48. package/dist/libadlmidi.nuked.processor.js +152 -53
  49. package/dist/libadlmidi.nuked.slim.browser.js +1 -1
  50. package/dist/libadlmidi.nuked.slim.browser.wasm +0 -0
  51. package/dist/libadlmidi.nuked.slim.core.js +1 -1
  52. package/dist/libadlmidi.nuked.slim.core.wasm +0 -0
  53. package/dist/libadlmidi.nuked.slim.js +0 -0
  54. package/dist/libadlmidi.nuked.slim.processor.js +152 -53
  55. package/package.json +6 -5
  56. package/src/core.js +289 -24
  57. package/src/libadlmidi.js +229 -4
  58. package/src/processor.js +101 -1
package/src/processor.js CHANGED
@@ -287,7 +287,7 @@ class AdlMidiProcessor extends AudioWorkletProcessor {
287
287
  break;
288
288
 
289
289
  case 'pitchBend':
290
- this.adl._adl_rt_pitchBendML(this.midi, msg.channel, msg.lsb, msg.msb);
290
+ this.adl._adl_rt_pitchBendML(this.midi, msg.channel, msg.msb, msg.lsb);
291
291
  break;
292
292
 
293
293
  case 'controlChange':
@@ -298,6 +298,26 @@ class AdlMidiProcessor extends AudioWorkletProcessor {
298
298
  this.adl._adl_rt_patchChange(this.midi, msg.channel, msg.program);
299
299
  break;
300
300
 
301
+ case 'noteAfterTouch':
302
+ this.adl._adl_rt_noteAfterTouch(this.midi, msg.channel, msg.note, msg.pressure);
303
+ break;
304
+
305
+ case 'channelAfterTouch':
306
+ this.adl._adl_rt_channelAfterTouch(this.midi, msg.channel, msg.pressure);
307
+ break;
308
+
309
+ case 'bankChange':
310
+ this.adl._adl_rt_bankChange(this.midi, msg.channel, msg.bank);
311
+ break;
312
+
313
+ case 'bankChangeMSB':
314
+ this.adl._adl_rt_bankChangeMSB(this.midi, msg.channel, msg.msb);
315
+ break;
316
+
317
+ case 'bankChangeLSB':
318
+ this.adl._adl_rt_bankChangeLSB(this.midi, msg.channel, msg.lsb);
319
+ break;
320
+
301
321
  case 'resetState':
302
322
  this.adl._adl_rt_resetState(this.midi);
303
323
  break;
@@ -339,6 +359,38 @@ class AdlMidiProcessor extends AudioWorkletProcessor {
339
359
  this.adl._adl_setNumChips(this.midi, msg.chips);
340
360
  break;
341
361
 
362
+ case 'setNumFourOpChannels':
363
+ this.adl._adl_setNumFourOpsChn(this.midi, msg.channels);
364
+ break;
365
+
366
+ case 'getNumFourOpChannels':
367
+ this.port.postMessage({ type: 'numFourOpChannels', channels: this.adl._adl_getNumFourOpsChn(this.midi) });
368
+ break;
369
+
370
+ case 'setScaleModulators':
371
+ this.adl._adl_setScaleModulators(this.midi, msg.enabled ? 1 : 0);
372
+ break;
373
+
374
+ case 'setFullRangeBrightness':
375
+ this.adl._adl_setFullRangeBrightness(this.midi, msg.enabled ? 1 : 0);
376
+ break;
377
+
378
+ case 'setAutoArpeggio':
379
+ this.adl._adl_setAutoArpeggio(this.midi, msg.enabled ? 1 : 0);
380
+ break;
381
+
382
+ case 'getAutoArpeggio':
383
+ this.port.postMessage({ type: 'autoArpeggio', enabled: this.adl._adl_getAutoArpeggio(this.midi) !== 0 });
384
+ break;
385
+
386
+ case 'setChannelAllocMode':
387
+ this.adl._adl_setChannelAllocMode(this.midi, msg.mode);
388
+ break;
389
+
390
+ case 'getChannelAllocMode':
391
+ this.port.postMessage({ type: 'channelAllocMode', mode: this.adl._adl_getChannelAllocMode(this.midi) });
392
+ break;
393
+
342
394
  case 'setVolumeModel':
343
395
  this.adl._adl_setVolumeRangeModel(this.midi, msg.model);
344
396
  break;
@@ -355,6 +407,10 @@ class AdlMidiProcessor extends AudioWorkletProcessor {
355
407
  this.adl._adl_setHTremolo(this.midi, msg.enabled ? 1 : 0);
356
408
  break;
357
409
 
410
+ case 'setRunAtPcmRate':
411
+ this.adl._adl_setRunAtPcmRate(this.midi, msg.enabled ? 1 : 0);
412
+ break;
413
+
358
414
  case 'switchEmulator': {
359
415
  // Note: adl_switchEmulator internally calls partialReset(), so no extra reset needed
360
416
  const result = this.adl._adl_switchEmulator(this.midi, msg.emulator);
@@ -369,6 +425,36 @@ class AdlMidiProcessor extends AudioWorkletProcessor {
369
425
  break;
370
426
  }
371
427
 
428
+ case 'getLibraryVersion': {
429
+ const ptr = this.adl._adl_linkedLibraryVersion();
430
+ const version = ptr ? this.adl.UTF8ToString(ptr) : 'Unknown';
431
+ this.port.postMessage({ type: 'libraryVersion', version });
432
+ break;
433
+ }
434
+
435
+ case 'getVersion': {
436
+ const ptr = this.adl._adl_linkedVersion();
437
+ const version = ptr ? {
438
+ major: this.adl.getValue(ptr, 'i16'),
439
+ minor: this.adl.getValue(ptr + 2, 'i16'),
440
+ patch: this.adl.getValue(ptr + 4, 'i16')
441
+ } : null;
442
+ this.port.postMessage({ type: 'version', version });
443
+ break;
444
+ }
445
+
446
+ case 'getNumChips':
447
+ this.port.postMessage({ type: 'numChips', chips: this.adl._adl_getNumChips(this.midi) });
448
+ break;
449
+
450
+ case 'getNumChipsObtained':
451
+ this.port.postMessage({ type: 'numChipsObtained', chips: this.adl._adl_getNumChipsObtained(this.midi) });
452
+ break;
453
+
454
+ case 'getVolumeModel':
455
+ this.port.postMessage({ type: 'volumeModel', model: this.adl._adl_getVolumeRangeModel(this.midi) });
456
+ break;
457
+
372
458
  case 'getEmbeddedBanks': {
373
459
  const banks = this.getEmbeddedBankList();
374
460
  this.port.postMessage({ type: 'embeddedBanks', banks });
@@ -380,6 +466,20 @@ class AdlMidiProcessor extends AudioWorkletProcessor {
380
466
  this.loadMidiData(msg.data);
381
467
  break;
382
468
 
469
+ case 'getMusicTitle': {
470
+ const ptr = this.adl._adl_metaMusicTitle(this.midi);
471
+ const title = ptr ? this.adl.UTF8ToString(ptr) : '';
472
+ this.port.postMessage({ type: 'musicTitle', title });
473
+ break;
474
+ }
475
+
476
+ case 'getMusicCopyright': {
477
+ const ptr = this.adl._adl_metaMusicCopyright(this.midi);
478
+ const copyright = ptr ? this.adl.UTF8ToString(ptr) : '';
479
+ this.port.postMessage({ type: 'musicCopyright', copyright });
480
+ break;
481
+ }
482
+
383
483
  case 'play':
384
484
  // If at end, rewind first so play works as expected
385
485
  if (this.adl._adl_atEnd(this.midi) !== 0) {