libadlmidi-js 2.0.0 → 2.1.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 +8 -5
- package/dist/core.d.ts +5 -0
- package/dist/fm_banks/manifest.json +1 -1
- package/dist/libadlmidi.d.ts +3 -1
- package/dist/libadlmidi.dosbox.browser.wasm +0 -0
- package/dist/libadlmidi.dosbox.core.wasm +0 -0
- package/dist/libadlmidi.dosbox.js +0 -0
- package/dist/libadlmidi.dosbox.processor.js +5 -0
- package/dist/libadlmidi.dosbox.slim.browser.wasm +0 -0
- package/dist/libadlmidi.dosbox.slim.core.wasm +0 -0
- package/dist/libadlmidi.dosbox.slim.js +0 -0
- package/dist/libadlmidi.dosbox.slim.processor.js +5 -0
- package/dist/libadlmidi.full.browser.wasm +0 -0
- package/dist/libadlmidi.full.core.wasm +0 -0
- package/dist/libadlmidi.full.js +0 -0
- package/dist/libadlmidi.full.processor.js +5 -0
- package/dist/libadlmidi.full.slim.browser.wasm +0 -0
- package/dist/libadlmidi.full.slim.core.wasm +0 -0
- package/dist/libadlmidi.full.slim.js +0 -0
- package/dist/libadlmidi.full.slim.processor.js +5 -0
- package/dist/libadlmidi.js +8 -3
- package/dist/libadlmidi.js.map +2 -2
- package/dist/libadlmidi.light.browser.wasm +0 -0
- package/dist/libadlmidi.light.core.wasm +0 -0
- package/dist/libadlmidi.light.js +0 -0
- package/dist/libadlmidi.light.processor.js +5 -0
- package/dist/libadlmidi.light.slim.browser.wasm +0 -0
- package/dist/libadlmidi.light.slim.core.wasm +0 -0
- package/dist/libadlmidi.light.slim.js +0 -0
- package/dist/libadlmidi.light.slim.processor.js +5 -0
- package/dist/libadlmidi.nuked.browser.wasm +0 -0
- package/dist/libadlmidi.nuked.core.wasm +0 -0
- package/dist/libadlmidi.nuked.js +0 -0
- package/dist/libadlmidi.nuked.processor.js +5 -0
- package/dist/libadlmidi.nuked.slim.browser.wasm +0 -0
- package/dist/libadlmidi.nuked.slim.core.wasm +0 -0
- package/dist/libadlmidi.nuked.slim.js +0 -0
- package/dist/libadlmidi.nuked.slim.processor.js +5 -0
- package/dist/profiles/dosbox.d.ts +6 -2
- package/dist/profiles/dosbox.slim.d.ts +6 -2
- package/dist/profiles/full.d.ts +6 -2
- package/dist/profiles/full.slim.d.ts +6 -2
- package/dist/profiles/light.d.ts +6 -2
- package/dist/profiles/light.slim.d.ts +6 -2
- package/dist/profiles/nuked.d.ts +6 -2
- package/dist/profiles/nuked.slim.d.ts +6 -2
- package/dist/utils/constants.d.ts +3 -1
- package/package.json +30 -9
- package/src/core.js +9 -0
- package/src/libadlmidi.js +5 -2
- package/src/processor.js +6 -0
- package/src/profiles/dosbox.js +13 -6
- package/src/profiles/dosbox.slim.js +13 -6
- package/src/profiles/full.js +14 -7
- package/src/profiles/full.slim.js +14 -7
- package/src/profiles/light.js +14 -7
- package/src/profiles/light.slim.js +14 -7
- package/src/profiles/nuked.js +14 -7
- package/src/profiles/nuked.slim.js +14 -7
- package/src/utils/constants.js +3 -1
|
Binary file
|
|
Binary file
|
|
@@ -2900,6 +2900,8 @@ var _AdlMidiProcessor = class _AdlMidiProcessor extends AudioWorkletProcessor {
|
|
|
2900
2900
|
// Deep vibrato
|
|
2901
2901
|
deepTremolo: false,
|
|
2902
2902
|
// Deep tremolo
|
|
2903
|
+
emulator: void 0,
|
|
2904
|
+
// Emulator core (undefined = libADLMIDI default)
|
|
2903
2905
|
...options.processorOptions?.settings
|
|
2904
2906
|
};
|
|
2905
2907
|
this.initWasm(options.processorOptions);
|
|
@@ -2941,6 +2943,9 @@ var _AdlMidiProcessor = class _AdlMidiProcessor extends AudioWorkletProcessor {
|
|
|
2941
2943
|
*/
|
|
2942
2944
|
applySettings(settings) {
|
|
2943
2945
|
if (!this.midi) return;
|
|
2946
|
+
if (settings.emulator !== void 0) {
|
|
2947
|
+
this.adl._adl_switchEmulator(this.midi, settings.emulator);
|
|
2948
|
+
}
|
|
2944
2949
|
if (settings.numChips !== void 0) {
|
|
2945
2950
|
this.adl._adl_setNumChips(this.midi, settings.numChips);
|
|
2946
2951
|
}
|
|
@@ -16,9 +16,10 @@ export class AdlMidi extends BaseAdlMidi {
|
|
|
16
16
|
*
|
|
17
17
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
18
18
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
19
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
19
20
|
* @returns {Promise<void>}
|
|
20
21
|
*/
|
|
21
|
-
init(processorUrl?: string, wasmUrl?: string): Promise<void>;
|
|
22
|
+
init(processorUrl?: string, wasmUrl?: string, defaultSettings?: object): Promise<void>;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* Pre-configured AdlMidiCore for dosbox profile.
|
|
@@ -37,11 +38,14 @@ export class AdlMidiCore {
|
|
|
37
38
|
/**
|
|
38
39
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
39
40
|
*
|
|
40
|
-
* @param {{corePath?: string}} [options]
|
|
41
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
42
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
41
43
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
42
44
|
*/
|
|
43
45
|
static create(options?: {
|
|
44
46
|
corePath?: string;
|
|
47
|
+
defaultEmulator?: number;
|
|
48
|
+
wasmBinary?: ArrayBuffer;
|
|
45
49
|
}): Promise<BaseAdlMidiCore>;
|
|
46
50
|
}
|
|
47
51
|
import { AdlMidi as BaseAdlMidi } from '../libadlmidi.js';
|
|
@@ -16,9 +16,10 @@ export class AdlMidi extends BaseAdlMidi {
|
|
|
16
16
|
*
|
|
17
17
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
18
18
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
19
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
19
20
|
* @returns {Promise<void>}
|
|
20
21
|
*/
|
|
21
|
-
init(processorUrl?: string, wasmUrl?: string): Promise<void>;
|
|
22
|
+
init(processorUrl?: string, wasmUrl?: string, defaultSettings?: object): Promise<void>;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* Pre-configured AdlMidiCore for dosbox slim profile.
|
|
@@ -37,11 +38,14 @@ export class AdlMidiCore {
|
|
|
37
38
|
/**
|
|
38
39
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
39
40
|
*
|
|
40
|
-
* @param {{corePath?: string}} [options]
|
|
41
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
42
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
41
43
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
42
44
|
*/
|
|
43
45
|
static create(options?: {
|
|
44
46
|
corePath?: string;
|
|
47
|
+
defaultEmulator?: number;
|
|
48
|
+
wasmBinary?: ArrayBuffer;
|
|
45
49
|
}): Promise<BaseAdlMidiCore>;
|
|
46
50
|
}
|
|
47
51
|
import { AdlMidi as BaseAdlMidi } from '../libadlmidi.js';
|
package/dist/profiles/full.d.ts
CHANGED
|
@@ -16,9 +16,10 @@ export class AdlMidi extends BaseAdlMidi {
|
|
|
16
16
|
*
|
|
17
17
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
18
18
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
19
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
19
20
|
* @returns {Promise<void>}
|
|
20
21
|
*/
|
|
21
|
-
init(processorUrl?: string, wasmUrl?: string): Promise<void>;
|
|
22
|
+
init(processorUrl?: string, wasmUrl?: string, defaultSettings?: object): Promise<void>;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* Pre-configured AdlMidiCore for full profile.
|
|
@@ -37,11 +38,14 @@ export class AdlMidiCore {
|
|
|
37
38
|
/**
|
|
38
39
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
39
40
|
*
|
|
40
|
-
* @param {{corePath?: string}} [options]
|
|
41
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
42
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
41
43
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
42
44
|
*/
|
|
43
45
|
static create(options?: {
|
|
44
46
|
corePath?: string;
|
|
47
|
+
defaultEmulator?: number;
|
|
48
|
+
wasmBinary?: ArrayBuffer;
|
|
45
49
|
}): Promise<BaseAdlMidiCore>;
|
|
46
50
|
}
|
|
47
51
|
import { AdlMidi as BaseAdlMidi } from '../libadlmidi.js';
|
|
@@ -16,9 +16,10 @@ export class AdlMidi extends BaseAdlMidi {
|
|
|
16
16
|
*
|
|
17
17
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
18
18
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
19
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
19
20
|
* @returns {Promise<void>}
|
|
20
21
|
*/
|
|
21
|
-
init(processorUrl?: string, wasmUrl?: string): Promise<void>;
|
|
22
|
+
init(processorUrl?: string, wasmUrl?: string, defaultSettings?: object): Promise<void>;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* Pre-configured AdlMidiCore for full slim profile.
|
|
@@ -37,11 +38,14 @@ export class AdlMidiCore {
|
|
|
37
38
|
/**
|
|
38
39
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
39
40
|
*
|
|
40
|
-
* @param {{corePath?: string}} [options]
|
|
41
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
42
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
41
43
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
42
44
|
*/
|
|
43
45
|
static create(options?: {
|
|
44
46
|
corePath?: string;
|
|
47
|
+
defaultEmulator?: number;
|
|
48
|
+
wasmBinary?: ArrayBuffer;
|
|
45
49
|
}): Promise<BaseAdlMidiCore>;
|
|
46
50
|
}
|
|
47
51
|
import { AdlMidi as BaseAdlMidi } from '../libadlmidi.js';
|
package/dist/profiles/light.d.ts
CHANGED
|
@@ -16,9 +16,10 @@ export class AdlMidi extends BaseAdlMidi {
|
|
|
16
16
|
*
|
|
17
17
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
18
18
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
19
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
19
20
|
* @returns {Promise<void>}
|
|
20
21
|
*/
|
|
21
|
-
init(processorUrl?: string, wasmUrl?: string): Promise<void>;
|
|
22
|
+
init(processorUrl?: string, wasmUrl?: string, defaultSettings?: object): Promise<void>;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* Pre-configured AdlMidiCore for light profile.
|
|
@@ -37,11 +38,14 @@ export class AdlMidiCore {
|
|
|
37
38
|
/**
|
|
38
39
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
39
40
|
*
|
|
40
|
-
* @param {{corePath?: string}} [options]
|
|
41
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
42
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
41
43
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
42
44
|
*/
|
|
43
45
|
static create(options?: {
|
|
44
46
|
corePath?: string;
|
|
47
|
+
defaultEmulator?: number;
|
|
48
|
+
wasmBinary?: ArrayBuffer;
|
|
45
49
|
}): Promise<BaseAdlMidiCore>;
|
|
46
50
|
}
|
|
47
51
|
import { AdlMidi as BaseAdlMidi } from '../libadlmidi.js';
|
|
@@ -16,9 +16,10 @@ export class AdlMidi extends BaseAdlMidi {
|
|
|
16
16
|
*
|
|
17
17
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
18
18
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
19
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
19
20
|
* @returns {Promise<void>}
|
|
20
21
|
*/
|
|
21
|
-
init(processorUrl?: string, wasmUrl?: string): Promise<void>;
|
|
22
|
+
init(processorUrl?: string, wasmUrl?: string, defaultSettings?: object): Promise<void>;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* Pre-configured AdlMidiCore for light slim profile.
|
|
@@ -37,11 +38,14 @@ export class AdlMidiCore {
|
|
|
37
38
|
/**
|
|
38
39
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
39
40
|
*
|
|
40
|
-
* @param {{corePath?: string}} [options]
|
|
41
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
42
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
41
43
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
42
44
|
*/
|
|
43
45
|
static create(options?: {
|
|
44
46
|
corePath?: string;
|
|
47
|
+
defaultEmulator?: number;
|
|
48
|
+
wasmBinary?: ArrayBuffer;
|
|
45
49
|
}): Promise<BaseAdlMidiCore>;
|
|
46
50
|
}
|
|
47
51
|
import { AdlMidi as BaseAdlMidi } from '../libadlmidi.js';
|
package/dist/profiles/nuked.d.ts
CHANGED
|
@@ -16,9 +16,10 @@ export class AdlMidi extends BaseAdlMidi {
|
|
|
16
16
|
*
|
|
17
17
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
18
18
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
19
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
19
20
|
* @returns {Promise<void>}
|
|
20
21
|
*/
|
|
21
|
-
init(processorUrl?: string, wasmUrl?: string): Promise<void>;
|
|
22
|
+
init(processorUrl?: string, wasmUrl?: string, defaultSettings?: object): Promise<void>;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* Pre-configured AdlMidiCore for nuked profile.
|
|
@@ -37,11 +38,14 @@ export class AdlMidiCore {
|
|
|
37
38
|
/**
|
|
38
39
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
39
40
|
*
|
|
40
|
-
* @param {{corePath?: string}} [options]
|
|
41
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
42
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
41
43
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
42
44
|
*/
|
|
43
45
|
static create(options?: {
|
|
44
46
|
corePath?: string;
|
|
47
|
+
defaultEmulator?: number;
|
|
48
|
+
wasmBinary?: ArrayBuffer;
|
|
45
49
|
}): Promise<BaseAdlMidiCore>;
|
|
46
50
|
}
|
|
47
51
|
import { AdlMidi as BaseAdlMidi } from '../libadlmidi.js';
|
|
@@ -16,9 +16,10 @@ export class AdlMidi extends BaseAdlMidi {
|
|
|
16
16
|
*
|
|
17
17
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
18
18
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
19
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
19
20
|
* @returns {Promise<void>}
|
|
20
21
|
*/
|
|
21
|
-
init(processorUrl?: string, wasmUrl?: string): Promise<void>;
|
|
22
|
+
init(processorUrl?: string, wasmUrl?: string, defaultSettings?: object): Promise<void>;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
25
|
* Pre-configured AdlMidiCore for nuked slim profile.
|
|
@@ -37,11 +38,14 @@ export class AdlMidiCore {
|
|
|
37
38
|
/**
|
|
38
39
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
39
40
|
*
|
|
40
|
-
* @param {{corePath?: string}} [options]
|
|
41
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
42
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
41
43
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
42
44
|
*/
|
|
43
45
|
static create(options?: {
|
|
44
46
|
corePath?: string;
|
|
47
|
+
defaultEmulator?: number;
|
|
48
|
+
wasmBinary?: ArrayBuffer;
|
|
45
49
|
}): Promise<BaseAdlMidiCore>;
|
|
46
50
|
}
|
|
47
51
|
import { AdlMidi as BaseAdlMidi } from '../libadlmidi.js';
|
|
@@ -17,7 +17,9 @@ export type Emulator = number;
|
|
|
17
17
|
export const Emulator: Readonly<{
|
|
18
18
|
/** Nuked OPL3 v1.8 - Most accurate, higher CPU usage */
|
|
19
19
|
NUKED: 0;
|
|
20
|
-
/** Nuked
|
|
20
|
+
/** Optimized Nuked 1.8 fork by tgies with identical output */
|
|
21
|
+
NUKED_FAST: 1;
|
|
22
|
+
/** @deprecated Use NUKED_FAST */
|
|
21
23
|
NUKED_174: 1;
|
|
22
24
|
/** DosBox OPL3 - Good accuracy, lower CPU usage */
|
|
23
25
|
DOSBOX: 2;
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libadlmidi-js",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"libadlmidi": {
|
|
5
5
|
"version": "1.6.2",
|
|
6
|
-
"commit": "
|
|
6
|
+
"commit": "6528dafce641e81ded5d62809445267b82dc0d8d"
|
|
7
7
|
},
|
|
8
8
|
"description": "WebAssembly build of libADLMIDI - OPL3/FM synthesis for the browser",
|
|
9
9
|
"main": "dist/libadlmidi.js",
|
|
@@ -11,35 +11,43 @@
|
|
|
11
11
|
"exports": {
|
|
12
12
|
".": "./dist/libadlmidi.js",
|
|
13
13
|
"./core": {
|
|
14
|
-
"
|
|
15
|
-
"
|
|
14
|
+
"types": "./dist/core.d.ts",
|
|
15
|
+
"import": "./src/core.js"
|
|
16
16
|
},
|
|
17
17
|
"./structs": {
|
|
18
|
-
"
|
|
19
|
-
"
|
|
18
|
+
"types": "./dist/utils/struct.d.ts",
|
|
19
|
+
"import": "./src/utils/struct.js"
|
|
20
20
|
},
|
|
21
21
|
"./nuked": {
|
|
22
|
+
"types": "./dist/profiles/nuked.d.ts",
|
|
22
23
|
"import": "./src/profiles/nuked.js"
|
|
23
24
|
},
|
|
24
25
|
"./nuked/slim": {
|
|
26
|
+
"types": "./dist/profiles/nuked.slim.d.ts",
|
|
25
27
|
"import": "./src/profiles/nuked.slim.js"
|
|
26
28
|
},
|
|
27
29
|
"./dosbox": {
|
|
30
|
+
"types": "./dist/profiles/dosbox.d.ts",
|
|
28
31
|
"import": "./src/profiles/dosbox.js"
|
|
29
32
|
},
|
|
30
33
|
"./dosbox/slim": {
|
|
34
|
+
"types": "./dist/profiles/dosbox.slim.d.ts",
|
|
31
35
|
"import": "./src/profiles/dosbox.slim.js"
|
|
32
36
|
},
|
|
33
37
|
"./light": {
|
|
38
|
+
"types": "./dist/profiles/light.d.ts",
|
|
34
39
|
"import": "./src/profiles/light.js"
|
|
35
40
|
},
|
|
36
41
|
"./light/slim": {
|
|
42
|
+
"types": "./dist/profiles/light.slim.d.ts",
|
|
37
43
|
"import": "./src/profiles/light.slim.js"
|
|
38
44
|
},
|
|
39
45
|
"./full": {
|
|
46
|
+
"types": "./dist/profiles/full.d.ts",
|
|
40
47
|
"import": "./src/profiles/full.js"
|
|
41
48
|
},
|
|
42
49
|
"./full/slim": {
|
|
50
|
+
"types": "./dist/profiles/full.slim.d.ts",
|
|
43
51
|
"import": "./src/profiles/full.slim.js"
|
|
44
52
|
},
|
|
45
53
|
"./dist/*": "./dist/*"
|
|
@@ -66,7 +74,10 @@
|
|
|
66
74
|
"lint:fix": "eslint . --fix",
|
|
67
75
|
"check": "npm run lint && npm run typecheck && npm run sync-version -- --check",
|
|
68
76
|
"sync-version": "node scripts/sync-libadlmidi-version.js",
|
|
69
|
-
"prepare": "
|
|
77
|
+
"prepare": "husky"
|
|
78
|
+
},
|
|
79
|
+
"lint-staged": {
|
|
80
|
+
"*.js": "eslint --fix"
|
|
70
81
|
},
|
|
71
82
|
"types": "dist/libadlmidi.d.ts",
|
|
72
83
|
"keywords": [
|
|
@@ -86,15 +97,22 @@
|
|
|
86
97
|
"url": "https://github.com/libadlmidi-js/libadlmidi-js.git"
|
|
87
98
|
},
|
|
88
99
|
"devDependencies": {
|
|
100
|
+
"@arethetypeswrong/cli": "^0.18.2",
|
|
101
|
+
"@commitlint/cli": "^21.0.1",
|
|
102
|
+
"@commitlint/config-conventional": "^21.0.1",
|
|
103
|
+
"@emnapi/core": "1.10.0",
|
|
104
|
+
"@emnapi/runtime": "1.10.0",
|
|
89
105
|
"@eslint/js": "^10.0.1",
|
|
90
106
|
"@playwright/test": "^1.57.0",
|
|
91
107
|
"@types/node": "^25.0.3",
|
|
92
108
|
"esbuild": "^0.27.2",
|
|
93
109
|
"eslint": "^10.0.3",
|
|
94
110
|
"globals": "^17.4.0",
|
|
111
|
+
"husky": "^9.1.7",
|
|
112
|
+
"lint-staged": "^17.0.5",
|
|
95
113
|
"playwright": "^1.57.0",
|
|
96
114
|
"typescript": "^5.9.3",
|
|
97
|
-
"vitest": "^4.
|
|
115
|
+
"vitest": "^4.1.5"
|
|
98
116
|
},
|
|
99
117
|
"files": [
|
|
100
118
|
"dist/",
|
|
@@ -109,5 +127,8 @@
|
|
|
109
127
|
"light-slim.js",
|
|
110
128
|
"full-slim.js",
|
|
111
129
|
"README.md"
|
|
112
|
-
]
|
|
130
|
+
],
|
|
131
|
+
"overrides": {
|
|
132
|
+
"fflate": "0.8.2"
|
|
133
|
+
}
|
|
113
134
|
}
|
package/src/core.js
CHANGED
|
@@ -51,6 +51,8 @@ export class AdlMidiCore {
|
|
|
51
51
|
* @param {Object} options
|
|
52
52
|
* @param {string} options.corePath - Path to the .core.js WASM loader module
|
|
53
53
|
* @param {ArrayBuffer} [options.wasmBinary] - Pre-loaded WASM binary (optional)
|
|
54
|
+
* @param {number} [options.defaultEmulator] - Emulator to switch to after init.
|
|
55
|
+
* Profile wrappers use this to default to NUKED_FAST.
|
|
54
56
|
* @returns {Promise<AdlMidiCore>}
|
|
55
57
|
*/
|
|
56
58
|
static async create(options) {
|
|
@@ -73,6 +75,7 @@ export class AdlMidiCore {
|
|
|
73
75
|
core._sampleRate = 44100;
|
|
74
76
|
core._audioBuffer = null;
|
|
75
77
|
core._audioBufferPtr = null;
|
|
78
|
+
core._defaultEmulator = options.defaultEmulator;
|
|
76
79
|
|
|
77
80
|
return core;
|
|
78
81
|
}
|
|
@@ -88,6 +91,8 @@ export class AdlMidiCore {
|
|
|
88
91
|
this._audioBuffer = null;
|
|
89
92
|
/** @private @type {number|null} */
|
|
90
93
|
this._audioBufferPtr = null;
|
|
94
|
+
/** @private @type {number|undefined} */
|
|
95
|
+
this._defaultEmulator = undefined;
|
|
91
96
|
}
|
|
92
97
|
|
|
93
98
|
/**
|
|
@@ -108,6 +113,10 @@ export class AdlMidiCore {
|
|
|
108
113
|
throw new Error('Failed to initialize ADL MIDI player');
|
|
109
114
|
}
|
|
110
115
|
|
|
116
|
+
if (this._defaultEmulator !== undefined) {
|
|
117
|
+
this._module._adl_switchEmulator(this._player, this._defaultEmulator);
|
|
118
|
+
}
|
|
119
|
+
|
|
111
120
|
return true;
|
|
112
121
|
}
|
|
113
122
|
|
package/src/libadlmidi.js
CHANGED
|
@@ -114,9 +114,11 @@ export class AdlMidi {
|
|
|
114
114
|
* @param {string} processorUrl - URL to the bundled processor JavaScript file
|
|
115
115
|
* @param {string | null} [wasmUrl=null] - Optional URL to the .wasm file for split builds.
|
|
116
116
|
* If not provided, assumes bundled version with embedded WASM.
|
|
117
|
+
* @param {object} [defaultSettings={}] - Initial synth settings applied before ready.
|
|
118
|
+
* Profile wrappers use this to set a default emulator.
|
|
117
119
|
* @returns {Promise<void>}
|
|
118
120
|
*/
|
|
119
|
-
async init(processorUrl, wasmUrl = null) {
|
|
121
|
+
async init(processorUrl, wasmUrl = null, defaultSettings = {}) {
|
|
120
122
|
if (!this.ctx) {
|
|
121
123
|
this.ctx = new AudioContext({ sampleRate: 44100 });
|
|
122
124
|
}
|
|
@@ -143,7 +145,8 @@ export class AdlMidi {
|
|
|
143
145
|
this.node = new AudioWorkletNode(this.ctx, 'adl-midi-processor', {
|
|
144
146
|
processorOptions: {
|
|
145
147
|
sampleRate: this.ctx.sampleRate,
|
|
146
|
-
wasmBinary: wasmBinary // null for bundled, ArrayBuffer for split
|
|
148
|
+
wasmBinary: wasmBinary, // null for bundled, ArrayBuffer for split
|
|
149
|
+
settings: defaultSettings
|
|
147
150
|
}
|
|
148
151
|
});
|
|
149
152
|
|
package/src/processor.js
CHANGED
|
@@ -45,6 +45,7 @@ class AdlMidiProcessor extends AudioWorkletProcessor {
|
|
|
45
45
|
softPan: true, // Soft stereo panning
|
|
46
46
|
deepVibrato: false, // Deep vibrato
|
|
47
47
|
deepTremolo: false, // Deep tremolo
|
|
48
|
+
emulator: undefined, // Emulator core (undefined = libADLMIDI default)
|
|
48
49
|
...options.processorOptions?.settings
|
|
49
50
|
};
|
|
50
51
|
|
|
@@ -104,6 +105,11 @@ class AdlMidiProcessor extends AudioWorkletProcessor {
|
|
|
104
105
|
applySettings(settings) {
|
|
105
106
|
if (!this.midi) return;
|
|
106
107
|
|
|
108
|
+
// Switch emulator first; adl_switchEmulator does a partialReset and a
|
|
109
|
+
// wrong-order subsequent setBank etc. would otherwise need re-applying.
|
|
110
|
+
if (settings.emulator !== undefined) {
|
|
111
|
+
this.adl._adl_switchEmulator(this.midi, settings.emulator);
|
|
112
|
+
}
|
|
107
113
|
if (settings.numChips !== undefined) {
|
|
108
114
|
this.adl._adl_setNumChips(this.midi, settings.numChips);
|
|
109
115
|
}
|
package/src/profiles/dosbox.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Zero-config dosbox profile for libADLMIDI-JS
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Exports pre-configured AdlMidi and AdlMidiCore with this profile's WASM.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* @module profiles/dosbox
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -15,6 +15,10 @@ const PROCESSOR_URL = new URL('../../dist/libadlmidi.dosbox.processor.js', impor
|
|
|
15
15
|
const WASM_URL = new URL('../../dist/libadlmidi.dosbox.core.wasm', import.meta.url).href;
|
|
16
16
|
const CORE_PATH = new URL('../../dist/libadlmidi.dosbox.core.js', import.meta.url).href;
|
|
17
17
|
|
|
18
|
+
// Default synth settings injected at init. NUKED_FAST is preferred when the
|
|
19
|
+
// profile bundles it (bit-exact vs Nuked 1.8, roughly 1.5x faster).
|
|
20
|
+
const DEFAULT_SETTINGS = {};
|
|
21
|
+
|
|
18
22
|
/**
|
|
19
23
|
* Pre-configured AdlMidi for dosbox profile.
|
|
20
24
|
*
|
|
@@ -30,15 +34,17 @@ const CORE_PATH = new URL('../../dist/libadlmidi.dosbox.core.js', import.meta.ur
|
|
|
30
34
|
export class AdlMidi extends BaseAdlMidi {
|
|
31
35
|
/**
|
|
32
36
|
* Initialize the synthesizer with this profile's WASM.
|
|
33
|
-
*
|
|
37
|
+
*
|
|
34
38
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
35
39
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
40
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
36
41
|
* @returns {Promise<void>}
|
|
37
42
|
*/
|
|
38
|
-
async init(processorUrl, wasmUrl) {
|
|
43
|
+
async init(processorUrl, wasmUrl, defaultSettings) {
|
|
39
44
|
return super.init(
|
|
40
45
|
processorUrl || PROCESSOR_URL,
|
|
41
|
-
wasmUrl || WASM_URL
|
|
46
|
+
wasmUrl || WASM_URL,
|
|
47
|
+
defaultSettings || DEFAULT_SETTINGS
|
|
42
48
|
);
|
|
43
49
|
}
|
|
44
50
|
}
|
|
@@ -60,7 +66,8 @@ export class AdlMidiCore {
|
|
|
60
66
|
/**
|
|
61
67
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
62
68
|
*
|
|
63
|
-
* @param {{corePath?: string}} [options]
|
|
69
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
70
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
64
71
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
65
72
|
*/
|
|
66
73
|
static async create(options = {}) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Zero-config dosbox (slim) profile for libADLMIDI-JS
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Exports pre-configured AdlMidi and AdlMidiCore with this profile's WASM.
|
|
5
5
|
* Slim builds require loading a WOPL bank at runtime.
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* @module profiles/dosbox.slim
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -15,6 +15,10 @@ const PROCESSOR_URL = new URL('../../dist/libadlmidi.dosbox.slim.processor.js',
|
|
|
15
15
|
const WASM_URL = new URL('../../dist/libadlmidi.dosbox.slim.core.wasm', import.meta.url).href;
|
|
16
16
|
const CORE_PATH = new URL('../../dist/libadlmidi.dosbox.slim.core.js', import.meta.url).href;
|
|
17
17
|
|
|
18
|
+
// Default synth settings injected at init. NUKED_FAST is preferred when the
|
|
19
|
+
// profile bundles it (bit-exact vs Nuked 1.8, roughly 1.5x faster).
|
|
20
|
+
const DEFAULT_SETTINGS = {};
|
|
21
|
+
|
|
18
22
|
/**
|
|
19
23
|
* Pre-configured AdlMidi for dosbox slim profile.
|
|
20
24
|
*
|
|
@@ -30,15 +34,17 @@ const CORE_PATH = new URL('../../dist/libadlmidi.dosbox.slim.core.js', import.me
|
|
|
30
34
|
export class AdlMidi extends BaseAdlMidi {
|
|
31
35
|
/**
|
|
32
36
|
* Initialize the synthesizer with this profile's WASM.
|
|
33
|
-
*
|
|
37
|
+
*
|
|
34
38
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
35
39
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
40
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
36
41
|
* @returns {Promise<void>}
|
|
37
42
|
*/
|
|
38
|
-
async init(processorUrl, wasmUrl) {
|
|
43
|
+
async init(processorUrl, wasmUrl, defaultSettings) {
|
|
39
44
|
return super.init(
|
|
40
45
|
processorUrl || PROCESSOR_URL,
|
|
41
|
-
wasmUrl || WASM_URL
|
|
46
|
+
wasmUrl || WASM_URL,
|
|
47
|
+
defaultSettings || DEFAULT_SETTINGS
|
|
42
48
|
);
|
|
43
49
|
}
|
|
44
50
|
}
|
|
@@ -60,7 +66,8 @@ export class AdlMidiCore {
|
|
|
60
66
|
/**
|
|
61
67
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
62
68
|
*
|
|
63
|
-
* @param {{corePath?: string}} [options]
|
|
69
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
70
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
64
71
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
65
72
|
*/
|
|
66
73
|
static async create(options = {}) {
|
package/src/profiles/full.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Zero-config full profile for libADLMIDI-JS
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Exports pre-configured AdlMidi and AdlMidiCore with this profile's WASM.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* @module profiles/full
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -15,6 +15,10 @@ const PROCESSOR_URL = new URL('../../dist/libadlmidi.full.processor.js', import.
|
|
|
15
15
|
const WASM_URL = new URL('../../dist/libadlmidi.full.core.wasm', import.meta.url).href;
|
|
16
16
|
const CORE_PATH = new URL('../../dist/libadlmidi.full.core.js', import.meta.url).href;
|
|
17
17
|
|
|
18
|
+
// Default synth settings injected at init. NUKED_FAST is preferred when the
|
|
19
|
+
// profile bundles it (bit-exact vs Nuked 1.8, roughly 1.5x faster).
|
|
20
|
+
const DEFAULT_SETTINGS = { emulator: 1 };
|
|
21
|
+
|
|
18
22
|
/**
|
|
19
23
|
* Pre-configured AdlMidi for full profile.
|
|
20
24
|
*
|
|
@@ -30,15 +34,17 @@ const CORE_PATH = new URL('../../dist/libadlmidi.full.core.js', import.meta.url)
|
|
|
30
34
|
export class AdlMidi extends BaseAdlMidi {
|
|
31
35
|
/**
|
|
32
36
|
* Initialize the synthesizer with this profile's WASM.
|
|
33
|
-
*
|
|
37
|
+
*
|
|
34
38
|
* @param {string} [processorUrl] - Override processor URL (optional)
|
|
35
39
|
* @param {string} [wasmUrl] - Override WASM URL (optional)
|
|
40
|
+
* @param {object} [defaultSettings] - Override profile's default synth settings
|
|
36
41
|
* @returns {Promise<void>}
|
|
37
42
|
*/
|
|
38
|
-
async init(processorUrl, wasmUrl) {
|
|
43
|
+
async init(processorUrl, wasmUrl, defaultSettings) {
|
|
39
44
|
return super.init(
|
|
40
45
|
processorUrl || PROCESSOR_URL,
|
|
41
|
-
wasmUrl || WASM_URL
|
|
46
|
+
wasmUrl || WASM_URL,
|
|
47
|
+
defaultSettings || DEFAULT_SETTINGS
|
|
42
48
|
);
|
|
43
49
|
}
|
|
44
50
|
}
|
|
@@ -60,13 +66,14 @@ export class AdlMidiCore {
|
|
|
60
66
|
/**
|
|
61
67
|
* Create a new AdlMidiCore instance with this profile's WASM.
|
|
62
68
|
*
|
|
63
|
-
* @param {{corePath?: string}} [options]
|
|
69
|
+
* @param {{corePath?: string, defaultEmulator?: number, wasmBinary?: ArrayBuffer}} [options]
|
|
70
|
+
* Override profile defaults. corePath and defaultEmulator are pre-configured.
|
|
64
71
|
* @returns {Promise<BaseAdlMidiCore>}
|
|
65
72
|
*/
|
|
66
73
|
static async create(options = {}) {
|
|
67
74
|
return BaseAdlMidiCore.create({
|
|
68
75
|
...options,
|
|
69
|
-
corePath: options.corePath || CORE_PATH
|
|
76
|
+
corePath: options.corePath || CORE_PATH, defaultEmulator: options.defaultEmulator !== undefined ? options.defaultEmulator : 1
|
|
70
77
|
});
|
|
71
78
|
}
|
|
72
79
|
}
|