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.
- package/README.md +36 -1
- package/dist/core.d.ts +148 -0
- package/dist/fm_banks/manifest.json +1 -1
- package/dist/libadlmidi.d.ts +119 -2
- package/dist/libadlmidi.dosbox.browser.js +1 -1
- package/dist/libadlmidi.dosbox.browser.wasm +0 -0
- package/dist/libadlmidi.dosbox.core.js +1 -1
- package/dist/libadlmidi.dosbox.core.wasm +0 -0
- package/dist/libadlmidi.dosbox.js +0 -0
- package/dist/libadlmidi.dosbox.processor.js +152 -53
- package/dist/libadlmidi.dosbox.slim.browser.js +1 -1
- package/dist/libadlmidi.dosbox.slim.browser.wasm +0 -0
- package/dist/libadlmidi.dosbox.slim.core.js +1 -1
- package/dist/libadlmidi.dosbox.slim.core.wasm +0 -0
- package/dist/libadlmidi.dosbox.slim.js +0 -0
- package/dist/libadlmidi.dosbox.slim.processor.js +152 -53
- package/dist/libadlmidi.full.browser.js +1 -1
- package/dist/libadlmidi.full.browser.wasm +0 -0
- package/dist/libadlmidi.full.core.js +1 -1
- package/dist/libadlmidi.full.core.wasm +0 -0
- package/dist/libadlmidi.full.js +0 -0
- package/dist/libadlmidi.full.processor.js +152 -53
- package/dist/libadlmidi.full.slim.browser.js +1 -1
- package/dist/libadlmidi.full.slim.browser.wasm +0 -0
- package/dist/libadlmidi.full.slim.core.js +1 -1
- package/dist/libadlmidi.full.slim.core.wasm +0 -0
- package/dist/libadlmidi.full.slim.js +0 -0
- package/dist/libadlmidi.full.slim.processor.js +152 -53
- package/dist/libadlmidi.js +258 -4
- package/dist/libadlmidi.js.map +2 -2
- package/dist/libadlmidi.light.browser.js +1 -1
- package/dist/libadlmidi.light.browser.wasm +0 -0
- package/dist/libadlmidi.light.core.js +1 -1
- package/dist/libadlmidi.light.core.wasm +0 -0
- package/dist/libadlmidi.light.js +0 -0
- package/dist/libadlmidi.light.processor.js +152 -53
- package/dist/libadlmidi.light.slim.browser.js +1 -1
- package/dist/libadlmidi.light.slim.browser.wasm +0 -0
- package/dist/libadlmidi.light.slim.core.js +1 -1
- package/dist/libadlmidi.light.slim.core.wasm +0 -0
- package/dist/libadlmidi.light.slim.js +0 -0
- package/dist/libadlmidi.light.slim.processor.js +152 -53
- package/dist/libadlmidi.nuked.browser.js +1 -1
- package/dist/libadlmidi.nuked.browser.wasm +0 -0
- package/dist/libadlmidi.nuked.core.js +1 -1
- package/dist/libadlmidi.nuked.core.wasm +0 -0
- package/dist/libadlmidi.nuked.js +0 -0
- package/dist/libadlmidi.nuked.processor.js +152 -53
- package/dist/libadlmidi.nuked.slim.browser.js +1 -1
- package/dist/libadlmidi.nuked.slim.browser.wasm +0 -0
- package/dist/libadlmidi.nuked.slim.core.js +1 -1
- package/dist/libadlmidi.nuked.slim.core.wasm +0 -0
- package/dist/libadlmidi.nuked.slim.js +0 -0
- package/dist/libadlmidi.nuked.slim.processor.js +152 -53
- package/package.json +6 -5
- package/src/core.js +289 -24
- package/src/libadlmidi.js +229 -4
- 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.
|
|
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) {
|