@marmooo/midy 0.0.1

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 (45) hide show
  1. package/esm/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.1/+esm.d.ts +128 -0
  2. package/esm/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.1/+esm.d.ts.map +1 -0
  3. package/esm/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.1/+esm.js +155 -0
  4. package/esm/deps/cdn.jsdelivr.net/npm/midi-file@1.2.4/+esm.d.ts +84 -0
  5. package/esm/deps/cdn.jsdelivr.net/npm/midi-file@1.2.4/+esm.d.ts.map +1 -0
  6. package/esm/deps/cdn.jsdelivr.net/npm/midi-file@1.2.4/+esm.js +216 -0
  7. package/esm/midy-GM1.d.ts +187 -0
  8. package/esm/midy-GM1.d.ts.map +1 -0
  9. package/esm/midy-GM1.js +966 -0
  10. package/esm/midy-GM2.d.ts +280 -0
  11. package/esm/midy-GM2.d.ts.map +1 -0
  12. package/esm/midy-GM2.js +1303 -0
  13. package/esm/midy-GMLite.d.ts +181 -0
  14. package/esm/midy-GMLite.d.ts.map +1 -0
  15. package/esm/midy-GMLite.js +957 -0
  16. package/esm/midy.d.ts +285 -0
  17. package/esm/midy.d.ts.map +1 -0
  18. package/esm/midy.js +1372 -0
  19. package/esm/mod.d.ts +5 -0
  20. package/esm/mod.d.ts.map +1 -0
  21. package/esm/mod.js +4 -0
  22. package/esm/package.json +3 -0
  23. package/package.json +29 -0
  24. package/script/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.1/+esm.d.ts +128 -0
  25. package/script/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.1/+esm.d.ts.map +1 -0
  26. package/script/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.1/+esm.js +162 -0
  27. package/script/deps/cdn.jsdelivr.net/npm/midi-file@1.2.4/+esm.d.ts +84 -0
  28. package/script/deps/cdn.jsdelivr.net/npm/midi-file@1.2.4/+esm.d.ts.map +1 -0
  29. package/script/deps/cdn.jsdelivr.net/npm/midi-file@1.2.4/+esm.js +221 -0
  30. package/script/midy-GM1.d.ts +187 -0
  31. package/script/midy-GM1.d.ts.map +1 -0
  32. package/script/midy-GM1.js +970 -0
  33. package/script/midy-GM2.d.ts +280 -0
  34. package/script/midy-GM2.d.ts.map +1 -0
  35. package/script/midy-GM2.js +1307 -0
  36. package/script/midy-GMLite.d.ts +181 -0
  37. package/script/midy-GMLite.d.ts.map +1 -0
  38. package/script/midy-GMLite.js +961 -0
  39. package/script/midy.d.ts +285 -0
  40. package/script/midy.d.ts.map +1 -0
  41. package/script/midy.js +1376 -0
  42. package/script/mod.d.ts +5 -0
  43. package/script/mod.d.ts.map +1 -0
  44. package/script/mod.js +11 -0
  45. package/script/package.json +3 -0
package/esm/mod.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export { MidyGMLite } from "./midy-GMLite.js";
2
+ export { MidyGM1 } from "./midy-GM1.js";
3
+ export { MidyGM2 } from "./midy-GM2.js";
4
+ export { Midy } from "./midy.js";
5
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.js"],"names":[],"mappings":""}
package/esm/mod.js ADDED
@@ -0,0 +1,4 @@
1
+ export { MidyGMLite } from "./midy-GMLite.js";
2
+ export { MidyGM1 } from "./midy-GM1.js";
3
+ export { MidyGM2 } from "./midy-GM2.js";
4
+ export { Midy } from "./midy.js";
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@marmooo/midy",
3
+ "version": "0.0.1",
4
+ "description": "A MIDI player/synthesizer written in JavaScript that supports GM-Lite/GM1 and SF2/SF3.",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/marmooo/midy.git"
8
+ },
9
+ "license": "Apache-2.0",
10
+ "bugs": {
11
+ "url": "https://github.com/marmooo/midy/issues"
12
+ },
13
+ "main": "./script/mod.js",
14
+ "module": "./esm/mod.js",
15
+ "exports": {
16
+ ".": {
17
+ "import": "./esm/mod.js",
18
+ "require": "./script/mod.js"
19
+ }
20
+ },
21
+ "scripts": {
22
+ "test": "node test_runner.js"
23
+ },
24
+ "devDependencies": {
25
+ "@types/node": "^20.9.0",
26
+ "picocolors": "^1.0.0"
27
+ },
28
+ "_generatedBy": "dnt@dev"
29
+ }
@@ -0,0 +1,128 @@
1
+ declare const _default: null;
2
+ export default _default;
3
+ declare class F {
4
+ constructor(e: any);
5
+ parsed: any;
6
+ getGenerators(e: any, t: any, r: any, n: any): any[];
7
+ getPresetGenerators(e: any): any[];
8
+ getInstrumentGenerators(e: any): any[];
9
+ getInstrumentKey(e: any, t: any, r: any, n?: number): {
10
+ sample: any;
11
+ sampleRate: any;
12
+ sampleName: any;
13
+ sampleModes: number;
14
+ playbackRate: (e: any) => number;
15
+ modEnvToPitch: number;
16
+ scaleTuning: number;
17
+ start: number;
18
+ end: number;
19
+ loopStart: any;
20
+ loopEnd: any;
21
+ volDelay: number;
22
+ volAttack: number;
23
+ volHold: number;
24
+ volDecay: number;
25
+ volSustain: number;
26
+ volRelease: number;
27
+ modDelay: number;
28
+ modAttack: number;
29
+ modHold: number;
30
+ modDecay: number;
31
+ modSustain: number;
32
+ modRelease: number;
33
+ keyRange: d;
34
+ velRange: d;
35
+ initialFilterFc: number;
36
+ modEnvToFilterFc: number;
37
+ initialFilterQ: number;
38
+ initialAttenuation: number;
39
+ freqVibLFO: number | undefined;
40
+ pan: undefined;
41
+ } | null;
42
+ getPresetNames(): {};
43
+ }
44
+ declare function M(e: any): number;
45
+ declare function I(e: any): {};
46
+ declare namespace T {
47
+ let keynum: undefined;
48
+ let instrument: undefined;
49
+ let velocity: undefined;
50
+ let exclusiveClass: undefined;
51
+ let keyRange: d;
52
+ let velRange: d;
53
+ let sampleID: undefined;
54
+ let delayVolEnv: number;
55
+ let attackVolEnv: number;
56
+ let decayVolEnv: number;
57
+ let holdVolEnv: number;
58
+ let sustainVolEnv: number;
59
+ let releaseVolEnv: number;
60
+ let delayModEnv: number;
61
+ let attackModEnv: number;
62
+ let decayModEnv: number;
63
+ let holdModEnv: number;
64
+ let sustainModEnv: number;
65
+ let releaseModEnv: number;
66
+ let modEnvToPitch: number;
67
+ let modEnvToFilterFc: number;
68
+ let modLfoToFilterFc: number;
69
+ let modLfoToPitch: number;
70
+ let modLfoToVolume: number;
71
+ let vibLfoToPitch: number;
72
+ let chorusEffectsSend: number;
73
+ let reverbEffectsSend: number;
74
+ let delayModLFO: number;
75
+ let freqModLFO: number;
76
+ let delayVibLFO: number;
77
+ let keynumToModEnvDecay: number;
78
+ let keynumToModEnvHold: number;
79
+ let keynumToVolEnvDecay: number;
80
+ let keynumToVolEnvHold: number;
81
+ let coarseTune: number;
82
+ let fineTune: number;
83
+ let scaleTuning: number;
84
+ let freqVibLFO: number;
85
+ let startAddrsOffset: number;
86
+ let startAddrsCoarseOffset: number;
87
+ let endAddrsOffset: number;
88
+ let endAddrsCoarseOffset: number;
89
+ let startloopAddrsOffset: number;
90
+ let startloopAddrsCoarseOffset: number;
91
+ let initialAttenuation: number;
92
+ let endloopAddrsOffset: number;
93
+ let endloopAddrsCoarseOffset: number;
94
+ let overridingRootKey: undefined;
95
+ let initialFilterQ: number;
96
+ let initialFilterFc: number;
97
+ let sampleModes: number;
98
+ let pan: undefined;
99
+ }
100
+ declare function b(e: any, n?: {}): {
101
+ samples: any;
102
+ presetHeaders: any[];
103
+ presetZone: any[];
104
+ presetModulators: any[];
105
+ presetGenerators: any[];
106
+ instruments: any[];
107
+ instrumentZone: any[];
108
+ instrumentModulators: any[];
109
+ instrumentGenerators: any[];
110
+ sampleHeaders: any[];
111
+ info: o;
112
+ samplingData: {
113
+ offsetMSB: any;
114
+ offsetLSB: any;
115
+ };
116
+ };
117
+ declare class d {
118
+ static parse(e: any): d;
119
+ constructor(e: any, t: any);
120
+ lo: any;
121
+ hi: any;
122
+ in(e: any): boolean;
123
+ }
124
+ declare class o {
125
+ static parse(t: any, r: any): o;
126
+ }
127
+ export { F as SoundFont, M as convertTime, I as createGeneratorObject, T as defaultInstrumentZone, b as parse };
128
+ //# sourceMappingURL=+esm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"+esm.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.1/+esm.js"],"names":[],"mappings":";;AAMszX;IAAQ,oBAA2H;IAAd,YAAa;IAAC,qDAAoJ;IAAA,mCAAoP;IAAA,uCAAwQ;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAAi/D;IAAA,qBAA0I;CAAC;AAAA,mCAAwC;AAAl+H,+BAA8F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAA98D;;;;;;;;;;;;;;;;EAA27B;AAAr4I;IAAqQ,wBAAwD;IAArT,4BAAyN;IAApB,QAAS;IAAC,QAAS;IAAC,oBAAoC;CAAyD;AAAllG;IAAwjC,gCAA8d;CAAC"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultInstrumentZone = exports.SoundFont = void 0;
4
+ exports.convertTime = M;
5
+ exports.createGeneratorObject = I;
6
+ exports.parse = b;
7
+ /**
8
+ * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.37.0.
9
+ * Original file: /npm/@marmooo/soundfont-parser@0.0.1/esm/mod.js
10
+ *
11
+ * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
12
+ */
13
+ class e {
14
+ constructor(e, t) { Object.defineProperty(this, "data", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "ip", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), this.data = e, this.ip = t; }
15
+ readString(e) { const t = this.data.subarray(this.ip, this.ip += e), r = String.fromCharCode(...Array.from(t)), n = r.indexOf("\0"); return n > 0 ? r.substring(0, n) : r; }
16
+ readWORD() { return this.data[this.ip++] | this.data[this.ip++] << 8; }
17
+ readDWORD(e = !1) { return e ? (this.data[this.ip++] << 24 | this.data[this.ip++] << 16 | this.data[this.ip++] << 8 | this.data[this.ip++]) >>> 0 : (this.data[this.ip++] | this.data[this.ip++] << 8 | this.data[this.ip++] << 16 | this.data[this.ip++] << 24) >>> 0; }
18
+ readByte() { return this.data[this.ip++]; }
19
+ readAt(e) { return this.data[this.ip + e]; }
20
+ readUInt8() { return this.readByte(); }
21
+ readInt8() { return this.readByte() << 24 >> 24; }
22
+ readUInt16() { return this.readWORD(); }
23
+ readInt16() { return this.readWORD() << 16 >> 16; }
24
+ readUInt32() { return this.readDWORD(); }
25
+ }
26
+ function t(t, r, a) { const i = new e(t, r), o = i.readString(4), s = i.readDWORD(a); return new n(o, s, i.ip); }
27
+ function r(e, r = 0, n, { padding: a = !0, bigEndian: i = !1 } = {}) { const o = [], s = n + r; let l = r; for (; l < s;) {
28
+ const n = t(e, l, i);
29
+ l = n.offset + n.size, a && 1 == (l - r & 1) && l++, o.push(n);
30
+ } return o; }
31
+ class n {
32
+ constructor(e, t, r) { Object.defineProperty(this, "type", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "size", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "offset", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), this.type = e, this.size = t, this.offset = r; }
33
+ }
34
+ const a = ["startAddrsOffset", "endAddrsOffset", "startloopAddrsOffset", "endloopAddrsOffset", "startAddrsCoarseOffset", "modLfoToPitch", "vibLfoToPitch", "modEnvToPitch", "initialFilterFc", "initialFilterQ", "modLfoToFilterFc", "modEnvToFilterFc", "endAddrsCoarseOffset", "modLfoToVolume", void 0, "chorusEffectsSend", "reverbEffectsSend", "pan", void 0, void 0, void 0, "delayModLFO", "freqModLFO", "delayVibLFO", "freqVibLFO", "delayModEnv", "attackModEnv", "holdModEnv", "decayModEnv", "sustainModEnv", "releaseModEnv", "keynumToModEnvHold", "keynumToModEnvDecay", "delayVolEnv", "attackVolEnv", "holdVolEnv", "decayVolEnv", "sustainVolEnv", "releaseVolEnv", "keynumToVolEnvHold", "keynumToVolEnvDecay", "instrument", void 0, "keyRange", "velRange", "startloopAddrsCoarseOffset", "keynum", "velocity", "initialAttenuation", void 0, "endloopAddrsCoarseOffset", "coarseTune", "fineTune", "sampleID", "sampleModes", void 0, "scaleTuning", "exclusiveClass", "overridingRootKey"];
35
+ class i {
36
+ constructor() { Object.defineProperty(this, "major", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "minor", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }); }
37
+ static parse(e) { const t = new i; return t.major = e.readInt8(), t.minor = e.readInt8(), t; }
38
+ }
39
+ class o {
40
+ constructor() { Object.defineProperty(this, "comment", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "copyright", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "creationDate", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "engineer", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "name", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "product", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "software", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "version", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "soundEngine", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "romName", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "romVersion", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }); }
41
+ static parse(t, r) { function n(e) { return r.find((t => t.type === e)); } function a(r) { return new e(t, r.offset); } function s(e) { const t = n(e); return t ? a(t).readString(t.size) : null; } function l(e) { const t = n(e); return t ? i.parse(a(t)) : null; } const d = new o; return d.comment = s("ICMT"), d.copyright = s("ICOP"), d.creationDate = s("ICRD"), d.engineer = s("IENG"), d.name = s("INAM"), d.product = s("IPRD"), d.software = s("ISFT"), d.version = l("ifil"), d.soundEngine = s("isng"), d.romName = s("irom"), d.romVersion = l("iver"), d; }
42
+ }
43
+ class s {
44
+ constructor() { Object.defineProperty(this, "generatorIndex", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "modulatorIndex", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }); }
45
+ static parse(e) { const t = new s; return t.generatorIndex = e.readWORD(), t.modulatorIndex = e.readWORD(), t; }
46
+ }
47
+ class l {
48
+ constructor() { Object.defineProperty(this, "presetName", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "preset", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "bank", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "presetBagIndex", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "library", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "genre", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "morphology", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }); }
49
+ get isEnd() { return "EOP" === this.presetName; }
50
+ static parse(e) { const t = new l; return t.presetName = e.readString(20), t.preset = e.readWORD(), t.bank = e.readWORD(), t.presetBagIndex = e.readWORD(), t.library = e.readDWORD(), t.genre = e.readDWORD(), t.morphology = e.readDWORD(), t; }
51
+ }
52
+ class d {
53
+ constructor(e, t) { Object.defineProperty(this, "lo", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "hi", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), this.lo = e, this.hi = t; }
54
+ in(e) { return this.lo <= e && e <= this.hi; }
55
+ static parse(e) { return new d(e.readByte(), e.readByte()); }
56
+ }
57
+ class u {
58
+ constructor() { Object.defineProperty(this, "sourceOper", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "destinationOper", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "value", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "amountSourceOper", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "transOper", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }); }
59
+ get type() { return a[this.destinationOper]; }
60
+ get isEnd() { return 0 === this.sourceOper && 0 === this.destinationOper && 0 === this.value && 0 === this.amountSourceOper && 0 === this.transOper; }
61
+ static parse(e) { const t = new u; switch (t.sourceOper = e.readWORD(), t.destinationOper = e.readWORD(), t.type) {
62
+ case "keyRange":
63
+ case "velRange":
64
+ case "keynum":
65
+ case "velocity":
66
+ t.value = d.parse(e);
67
+ break;
68
+ default: t.value = e.readInt16();
69
+ } return t.amountSourceOper = e.readWORD(), t.transOper = e.readWORD(), t; }
70
+ }
71
+ class c {
72
+ constructor() { Object.defineProperty(this, "code", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "value", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }); }
73
+ get type() { return a[this.code]; }
74
+ get isEnd() { return 0 === this.code && 0 === this.value; }
75
+ static parse(e) { const t = new c; switch (t.code = e.readWORD(), t.type) {
76
+ case "keynum":
77
+ case "keyRange":
78
+ case "velRange":
79
+ case "velocity":
80
+ t.value = d.parse(e);
81
+ break;
82
+ default: t.value = e.readInt16();
83
+ } return t; }
84
+ }
85
+ class f {
86
+ constructor() { Object.defineProperty(this, "instrumentName", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "instrumentBagIndex", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }); }
87
+ get isEnd() { return "EOI" === this.instrumentName; }
88
+ static parse(e) { const t = new f; return t.instrumentName = e.readString(20), t.instrumentBagIndex = e.readWORD(), t; }
89
+ }
90
+ class p {
91
+ constructor() { Object.defineProperty(this, "sampleName", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "start", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "end", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "loopStart", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "loopEnd", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "sampleRate", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "originalPitch", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "pitchCorrection", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "sampleLink", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "sampleType", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }); }
92
+ get isEnd() { return "EOS" === this.sampleName; }
93
+ static parse(e, t) { const r = new p; return r.sampleName = e.readString(20), r.start = e.readDWORD(), r.end = e.readDWORD(), r.loopStart = e.readDWORD(), r.loopEnd = e.readDWORD(), r.sampleRate = e.readDWORD(), r.originalPitch = e.readByte(), r.pitchCorrection = e.readInt8(), r.sampleLink = e.readWORD(), r.sampleType = e.readWORD(), t || (r.loopStart -= r.start, r.loopEnd -= r.start), r; }
94
+ }
95
+ function b(e, n = {}) { const a = r(e, 0, e.length, n); if (1 !== a.length)
96
+ throw new Error("wrong chunk length"); const i = a[0]; if (null === i)
97
+ throw new Error("chunk not found"); function s(e, t, r) { const n = v(e, t, "LIST", "pdta"); if (9 !== n.length)
98
+ throw new Error("invalid pdta chunk"); return { presetHeaders: g(n[0], t), presetZone: y(n[1], t), presetModulators: E(n[2], t), presetGenerators: D(n[3], t), instruments: O(n[4], t), instrumentZone: w(n[5], t), instrumentModulators: P(n[6], t), instrumentGenerators: R(n[7], t), sampleHeaders: j(n[8], t, r) }; } const l = function (e, r, n = {}) { const a = v(e, r, "RIFF", "sfbk", n); if (3 !== a.length)
99
+ throw new Error("invalid sfbk structure"); const i = function (e, t) { const r = v(e, t, "LIST", "INFO"); return o.parse(t, r); }(a[0], r), l = 3 === i.version.major; return l && "LIST" !== a[2].type && (a[2] = t(r, a[2].offset - 9, !1)), { info: i, samplingData: m(a[1], r), ...s(a[2], r, l) }; }(i, e, n), d = 3 === l.info.version.major; return { ...l, samples: k(l.sampleHeaders, l.samplingData.offsetMSB, l.samplingData.offsetLSB, e, d) }; }
100
+ function v(t, n, a, i, o = {}) { if (t.type !== a)
101
+ throw new Error("invalid chunk type:" + t.type); const s = new e(n, t.offset), l = s.readString(4); if (l !== i)
102
+ throw new Error("invalid signature:" + l); return r(n, s.ip, t.size - 4, o); }
103
+ function m(e, t) { const r = v(e, t, "LIST", "sdta"); return { offsetMSB: r[0].offset, offsetLSB: r[1]?.offset }; }
104
+ function h(t, r, n, a, i, o) { const s = []; if (t.type !== n)
105
+ throw new Error("invalid chunk type:" + t.type); const l = new e(r, t.offset), d = t.offset + t.size; for (; l.ip < d;) {
106
+ const e = a.parse(l, o);
107
+ if (i && i(e))
108
+ break;
109
+ s.push(e);
110
+ } return s; }
111
+ const g = (e, t) => h(e, t, "phdr", l, (e => e.isEnd)), y = (e, t) => h(e, t, "pbag", s), O = (e, t) => h(e, t, "inst", f, (e => e.isEnd)), w = (e, t) => h(e, t, "ibag", s), E = (e, t) => h(e, t, "pmod", u, (e => e.isEnd)), P = (e, t) => h(e, t, "imod", u, (e => e.isEnd)), D = (e, t) => h(e, t, "pgen", c, (e => e.isEnd)), R = (e, t) => h(e, t, "igen", c), j = (e, t, r) => h(e, t, "shdr", p, (e => e.isEnd), r);
112
+ function k(e, t, r, n, a) { return e.map((e => { let { start: r, end: i } = e; return a || (r *= 2, i *= 2), new Uint8Array(n.subarray(t + r, t + i)); })); }
113
+ function I(e) { const t = {}; for (const r of e) {
114
+ const e = r.type;
115
+ void 0 !== e && (t[e] = r.value);
116
+ } return t; }
117
+ const T = { keynum: void 0, instrument: void 0, velocity: void 0, exclusiveClass: void 0, keyRange: new d(0, 127), velRange: new d(0, 127), sampleID: void 0, delayVolEnv: -12e3, attackVolEnv: -12e3, decayVolEnv: -12e3, holdVolEnv: -12e3, sustainVolEnv: 0, releaseVolEnv: -12e3, delayModEnv: -12e3, attackModEnv: -12e3, decayModEnv: -12e3, holdModEnv: -12e3, sustainModEnv: 0, releaseModEnv: -12e3, modEnvToPitch: 0, modEnvToFilterFc: 0, modLfoToFilterFc: 0, modLfoToPitch: 0, modLfoToVolume: 0, vibLfoToPitch: 0, chorusEffectsSend: 0, reverbEffectsSend: 0, delayModLFO: 0, freqModLFO: 0, delayVibLFO: 0, keynumToModEnvDecay: 0, keynumToModEnvHold: 0, keynumToVolEnvDecay: 0, keynumToVolEnvHold: 0, coarseTune: 0, fineTune: 0, scaleTuning: 100, freqVibLFO: 0, startAddrsOffset: 0, startAddrsCoarseOffset: 0, endAddrsOffset: 0, endAddrsCoarseOffset: 0, startloopAddrsOffset: 0, startloopAddrsCoarseOffset: 0, initialAttenuation: 0, endloopAddrsOffset: 0, endloopAddrsCoarseOffset: 0, overridingRootKey: void 0, initialFilterQ: 1, initialFilterFc: 13500, sampleModes: 0, pan: void 0 };
118
+ exports.defaultInstrumentZone = T;
119
+ class F {
120
+ constructor(e) { Object.defineProperty(this, "parsed", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), this.parsed = e; }
121
+ getGenerators(e, t, r, n) { const a = new Array(n - r); for (let i = r; i < n; i++) {
122
+ const n = t[i].generatorIndex, o = t[i + 1].generatorIndex;
123
+ a[i - r] = e.slice(n, o);
124
+ } return a; }
125
+ getPresetGenerators(e) { const t = this.parsed.presetHeaders[e], r = this.parsed.presetHeaders[e + 1], n = r ? r.presetBagIndex : this.parsed.presetZone.length - 1; return this.getGenerators(this.parsed.presetGenerators, this.parsed.presetZone, t.presetBagIndex, n); }
126
+ getInstrumentGenerators(e) { const t = this.parsed.instruments[e], r = this.parsed.instruments[e + 1], n = r ? r.instrumentBagIndex : this.parsed.instrumentZone.length - 1; return this.getGenerators(this.parsed.instrumentGenerators, this.parsed.instrumentZone, t.instrumentBagIndex, n); }
127
+ getInstrumentKey(e, t, r, n = 100) { const a = this.parsed.presetHeaders.findIndex((r => r.preset === t && r.bank === e)); if (a < 0)
128
+ return console.warn("preset not found: bank=%s instrument=%s", e, t), null; const i = this.getPresetGenerators(a); let o, s, l; for (let e = 0; e < i.length; e++) {
129
+ const t = I(i[e]);
130
+ if (void 0 === t.instrument) {
131
+ o = t;
132
+ continue;
133
+ }
134
+ if (t.keyRange && !t.keyRange.in(r))
135
+ continue;
136
+ if (t.velRange && !t.velRange.in(n))
137
+ continue;
138
+ const a = this.getInstrumentGenerators(t.instrument);
139
+ for (let e = 0; e < a.length; e++) {
140
+ const t = I(a[e]);
141
+ if (void 0 !== t.sampleID) {
142
+ if ((!t.keyRange || t.keyRange.in(r)) && (!t.velRange || t.velRange.in(n))) {
143
+ l = t;
144
+ break;
145
+ }
146
+ }
147
+ else
148
+ s = t;
149
+ }
150
+ if (l)
151
+ break;
152
+ } if (!l)
153
+ return console.warn("instrument not found: bank=%s instrument=%s", e, t), null; if (void 0 === l.sampleID)
154
+ throw new Error("Invalid SoundFont: sampleID not found"); const d = { ...T, ...A(o || {}), ...A(s || {}), ...A(l) }, u = this.parsed.samples[d.sampleID], c = this.parsed.sampleHeaders[d.sampleID], f = d.coarseTune + d.fineTune / 100 + c.pitchCorrection / 100 - (d.overridingRootKey || c.originalPitch), p = d.scaleTuning / 100; return { sample: u, sampleRate: c.sampleRate, sampleName: c.sampleName, sampleModes: d.sampleModes, playbackRate: e => Math.pow(Math.pow(2, 1 / 12), (e + f) * p), modEnvToPitch: d.modEnvToPitch / 100, scaleTuning: p, start: 32768 * d.startAddrsCoarseOffset + d.startAddrsOffset, end: 32768 * d.endAddrsCoarseOffset + d.endAddrsOffset, loopStart: c.loopStart + 32768 * d.startloopAddrsCoarseOffset + d.startloopAddrsOffset, loopEnd: c.loopEnd + 32768 * d.endloopAddrsCoarseOffset + d.endloopAddrsOffset, volDelay: M(d.delayVolEnv), volAttack: M(d.attackVolEnv), volHold: M(d.holdVolEnv), volDecay: M(d.decayVolEnv), volSustain: d.sustainVolEnv / 1e3, volRelease: M(d.releaseVolEnv), modDelay: M(d.delayModEnv), modAttack: M(d.attackModEnv), modHold: M(d.holdModEnv), modDecay: M(d.decayModEnv), modSustain: d.sustainModEnv / 1e3, modRelease: M(d.releaseModEnv), keyRange: d.keyRange, velRange: d.velRange, initialFilterFc: d.initialFilterFc, modEnvToFilterFc: d.modEnvToFilterFc, initialFilterQ: d.initialFilterQ, initialAttenuation: d.initialAttenuation, freqVibLFO: d.freqVibLFO ? 8.176 * M(d.freqVibLFO) : void 0, pan: d.pan }; }
155
+ getPresetNames() { const e = {}; return this.parsed.presetHeaders.forEach((t => { e[t.bank] || (e[t.bank] = {}), e[t.bank][t.preset] = t.presetName; })), e; }
156
+ }
157
+ exports.SoundFont = F;
158
+ function M(e) { return Math.pow(2, e / 1200); }
159
+ function A(e) { const t = {}; for (const r in e)
160
+ void 0 !== e[r] && (t[r] = e[r]); return t; }
161
+ exports.default = null;
162
+ //# sourceMappingURL=/sm/f81f37edef0ee7c3c75f39a74df8b8e54ea144490d686e35430b76b426f1559d.map
@@ -0,0 +1,84 @@
1
+ declare namespace t {
2
+ export { n as parseMidi };
3
+ export { s as writeMidi };
4
+ }
5
+ declare function I(t: any): {
6
+ header: {
7
+ format: any;
8
+ numTracks: any;
9
+ };
10
+ tracks: {
11
+ deltaTime: any;
12
+ type: string;
13
+ data: any;
14
+ meta: boolean;
15
+ number: any;
16
+ text: string;
17
+ channel: any;
18
+ port: any;
19
+ microsecondsPerBeat: any;
20
+ frameRate: number | undefined;
21
+ hour: number;
22
+ min: any;
23
+ sec: any;
24
+ frame: any;
25
+ subFrame: any;
26
+ numerator: any;
27
+ denominator: number;
28
+ metronome: any;
29
+ thirtyseconds: any;
30
+ key: any;
31
+ scale: any;
32
+ metatypeByte: any;
33
+ running: boolean;
34
+ noteNumber: any;
35
+ velocity: any;
36
+ byte9: boolean;
37
+ amount: any;
38
+ controllerType: any;
39
+ value: any;
40
+ programNumber: any;
41
+ }[][];
42
+ };
43
+ declare function c(t: any, e: any): any[];
44
+ declare function n(t: any): {
45
+ header: {
46
+ format: any;
47
+ numTracks: any;
48
+ };
49
+ tracks: {
50
+ deltaTime: any;
51
+ type: string;
52
+ data: any;
53
+ meta: boolean;
54
+ number: any;
55
+ text: string;
56
+ channel: any;
57
+ port: any;
58
+ microsecondsPerBeat: any;
59
+ frameRate: number | undefined;
60
+ hour: number;
61
+ min: any;
62
+ sec: any;
63
+ frame: any;
64
+ subFrame: any;
65
+ numerator: any;
66
+ denominator: number;
67
+ metronome: any;
68
+ thirtyseconds: any;
69
+ key: any;
70
+ scale: any;
71
+ metatypeByte: any;
72
+ running: boolean;
73
+ noteNumber: any;
74
+ velocity: any;
75
+ byte9: boolean;
76
+ amount: any;
77
+ controllerType: any;
78
+ value: any;
79
+ programNumber: any;
80
+ }[][];
81
+ };
82
+ declare function s(t: any, e: any): any[];
83
+ export { t as default, I as parseMidi, c as writeMidi };
84
+ //# sourceMappingURL=+esm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"+esm.d.ts","sourceRoot":"","sources":["../../../../../src/deps/cdn.jsdelivr.net/npm/midi-file@1.2.4/+esm.js"],"names":[],"mappings":";;;;AAMosI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAggB;AAAm6I,0CAAugB;AAA16K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAggB;AAAm6I,0CAAugB"}