libadlmidi-js 1.2.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.
Files changed (76) hide show
  1. package/README.md +8 -5
  2. package/dist/core.d.ts +191 -4
  3. package/dist/fm_banks/manifest.json +1 -1
  4. package/dist/libadlmidi.d.ts +146 -66
  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 +247 -74
  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 +247 -74
  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 +247 -74
  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 +247 -74
  29. package/dist/libadlmidi.js +473 -24
  30. package/dist/libadlmidi.js.map +3 -3
  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 +247 -74
  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 +247 -74
  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 +247 -74
  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 +247 -74
  55. package/dist/profiles/dosbox.d.ts +7 -2
  56. package/dist/profiles/dosbox.slim.d.ts +7 -2
  57. package/dist/profiles/full.d.ts +7 -2
  58. package/dist/profiles/full.slim.d.ts +7 -2
  59. package/dist/profiles/light.d.ts +7 -2
  60. package/dist/profiles/light.slim.d.ts +7 -2
  61. package/dist/profiles/nuked.d.ts +7 -2
  62. package/dist/profiles/nuked.slim.d.ts +7 -2
  63. package/dist/utils/constants.d.ts +61 -0
  64. package/package.json +30 -9
  65. package/src/core.js +361 -4
  66. package/src/libadlmidi.js +379 -58
  67. package/src/processor.js +210 -12
  68. package/src/profiles/dosbox.js +20 -10
  69. package/src/profiles/dosbox.slim.js +20 -10
  70. package/src/profiles/full.js +21 -11
  71. package/src/profiles/full.slim.js +21 -11
  72. package/src/profiles/light.js +21 -11
  73. package/src/profiles/light.slim.js +21 -11
  74. package/src/profiles/nuked.js +21 -11
  75. package/src/profiles/nuked.slim.js +21 -11
  76. package/src/utils/constants.js +53 -0
@@ -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,13 +38,17 @@ export class AdlMidiCore {
37
38
  /**
38
39
  * Create a new AdlMidiCore instance with this profile's WASM.
39
40
  *
40
- * @param {{corePath?: string}} [options] - Options (corePath is pre-configured)
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';
48
52
  import { AdlMidiCore as BaseAdlMidiCore } from '../core.js';
49
53
  export { encodeInstrument, decodeInstrument, defaultInstrument, encodeOperator, decodeOperator, defaultOperator } from "../utils/struct.js";
54
+ export { Emulator, TrackOption } from "../utils/constants.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,13 +38,17 @@ export class AdlMidiCore {
37
38
  /**
38
39
  * Create a new AdlMidiCore instance with this profile's WASM.
39
40
  *
40
- * @param {{corePath?: string}} [options] - Options (corePath is pre-configured)
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';
48
52
  import { AdlMidiCore as BaseAdlMidiCore } from '../core.js';
49
53
  export { encodeInstrument, decodeInstrument, defaultInstrument, encodeOperator, decodeOperator, defaultOperator } from "../utils/struct.js";
54
+ export { Emulator, TrackOption } from "../utils/constants.js";
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Available OPL2/OPL3 emulator cores.
3
+ * Use with switchEmulator() to change the synthesis engine at runtime.
4
+ * Note: Only emulators compiled into the current profile are available.
5
+ */
6
+ export type Emulator = number;
7
+ /**
8
+ * Shared constants for libADLMIDI-JS
9
+ */
10
+ /**
11
+ * Available OPL2/OPL3 emulator cores.
12
+ * Use with switchEmulator() to change the synthesis engine at runtime.
13
+ * Note: Only emulators compiled into the current profile are available.
14
+ * @readonly
15
+ * @enum {number}
16
+ */
17
+ export const Emulator: Readonly<{
18
+ /** Nuked OPL3 v1.8 - Most accurate, higher CPU usage */
19
+ NUKED: 0;
20
+ /** Optimized Nuked 1.8 fork by tgies with identical output */
21
+ NUKED_FAST: 1;
22
+ /** @deprecated Use NUKED_FAST */
23
+ NUKED_174: 1;
24
+ /** DosBox OPL3 - Good accuracy, lower CPU usage */
25
+ DOSBOX: 2;
26
+ /** Opal - Reality Adlib Tracker emulator */
27
+ OPAL: 3;
28
+ /** Java OPL3 - Port of emu8950 */
29
+ JAVA: 4;
30
+ /** ESFMu - ESFM chip emulator */
31
+ ESFMu: 5;
32
+ /** MAME OPL2 */
33
+ MAME_OPL2: 6;
34
+ /** YMFM OPL2 */
35
+ YMFM_OPL2: 7;
36
+ /** YMFM OPL3 */
37
+ YMFM_OPL3: 8;
38
+ /** Nuked OPL2 LLE - Transistor-level emulation */
39
+ NUKED_OPL2_LLE: 9;
40
+ /** Nuked OPL3 LLE - Transistor-level emulation */
41
+ NUKED_OPL3_LLE: 10;
42
+ /** Nuked OPL2 Lite - Lightweight OPL2 emulation for AdLib-era music */
43
+ NUKED_OPL2_LITE: 11;
44
+ }>;
45
+ /**
46
+ * Track option flags for use with setTrackOptions().
47
+ */
48
+ export type TrackOption = number;
49
+ /**
50
+ * Track option flags for use with setTrackOptions().
51
+ * @readonly
52
+ * @enum {number}
53
+ */
54
+ export const TrackOption: Readonly<{
55
+ /** Enable the track (default state) */
56
+ ON: 1;
57
+ /** Mute/disable the track */
58
+ OFF: 2;
59
+ /** Solo the track (mute all others) */
60
+ SOLO: 3;
61
+ }>;
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "libadlmidi-js",
3
- "version": "1.2.0",
3
+ "version": "2.1.0",
4
4
  "libadlmidi": {
5
5
  "version": "1.6.2",
6
- "commit": "89284b0b63e236ccaf84ac2763574738840d37b4"
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
- "import": "./src/core.js",
15
- "types": "./dist/core.d.ts"
14
+ "types": "./dist/core.d.ts",
15
+ "import": "./src/core.js"
16
16
  },
17
17
  "./structs": {
18
- "import": "./src/utils/struct.js",
19
- "types": "./dist/utils/struct.d.ts"
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": "command -v pre-commit >/dev/null && pre-commit install || echo 'pre-commit not found, run: pipx install pre-commit'"
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.0.16"
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
  }