@marmooo/midy 0.3.5 → 0.3.6
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/esm/midy-GM1.d.ts +2 -2
- package/esm/midy-GM1.d.ts.map +1 -1
- package/esm/midy-GM1.js +15 -12
- package/esm/midy-GM2.d.ts +11 -11
- package/esm/midy-GM2.d.ts.map +1 -1
- package/esm/midy-GM2.js +139 -166
- package/esm/midy-GMLite.d.ts +2 -2
- package/esm/midy-GMLite.d.ts.map +1 -1
- package/esm/midy-GMLite.js +15 -12
- package/esm/midy.d.ts +15 -15
- package/esm/midy.d.ts.map +1 -1
- package/esm/midy.js +145 -172
- package/package.json +2 -2
- package/script/midy-GM1.d.ts +2 -2
- package/script/midy-GM1.d.ts.map +1 -1
- package/script/midy-GM1.js +15 -12
- package/script/midy-GM2.d.ts +11 -11
- package/script/midy-GM2.d.ts.map +1 -1
- package/script/midy-GM2.js +139 -166
- package/script/midy-GMLite.d.ts +2 -2
- package/script/midy-GMLite.d.ts.map +1 -1
- package/script/midy-GMLite.js +15 -12
- package/script/midy.d.ts +15 -15
- package/script/midy.d.ts.map +1 -1
- package/script/midy.js +145 -172
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marmooo/midy",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "A MIDI player/synthesizer written in JavaScript that supports GM-Lite/GM1 and SF2/SF3.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test": "node test_runner.js"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@marmooo/soundfont-parser": "^0.1.
|
|
25
|
+
"@marmooo/soundfont-parser": "^0.1.3",
|
|
26
26
|
"midi-file": "^1.2.4"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
package/script/midy-GM1.d.ts
CHANGED
|
@@ -31,8 +31,8 @@ export class MidyGM1 {
|
|
|
31
31
|
isStopping: boolean;
|
|
32
32
|
isSeeking: boolean;
|
|
33
33
|
timeline: any[];
|
|
34
|
-
instruments: any[];
|
|
35
34
|
notePromises: any[];
|
|
35
|
+
instruments: Set<any>;
|
|
36
36
|
exclusiveClassNotes: any[];
|
|
37
37
|
audioContext: any;
|
|
38
38
|
masterVolume: any;
|
|
@@ -58,7 +58,7 @@ export class MidyGM1 {
|
|
|
58
58
|
loadSoundFont(input: any): Promise<void>;
|
|
59
59
|
loadMIDI(input: any): Promise<void>;
|
|
60
60
|
cacheVoiceIds(): void;
|
|
61
|
-
getVoiceId(channel: any, noteNumber: any, velocity: any):
|
|
61
|
+
getVoiceId(channel: any, noteNumber: any, velocity: any): any;
|
|
62
62
|
createChannelAudioNodes(audioContext: any): {
|
|
63
63
|
gainL: any;
|
|
64
64
|
gainR: any;
|
package/script/midy-GM1.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AA4FA;IAwBE;;;;;;;;;;;MAWE;IAEF,+BAcC;IAlDD,aAAa;IACb,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,4BAAyB;IACzB,0BAAuB;IACvB,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,
|
|
1
|
+
{"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AA4FA;IAwBE;;;;;;;;;;;MAWE;IAEF,+BAcC;IAlDD,aAAa;IACb,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,4BAAyB;IACzB,0BAAuB;IACvB,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,oBAAkB;IAClB,sBAAwB;IACxB,2BAAqC;IAgBnC,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,gBAAiD;IAMnD,4BAMC;IAED,mCASC;IAED,2DAYC;IAED,yCAmBC;IAED,oCASC;IAED,sBAoCC;IAED,8DAcC;IAED;;;;MAeC;IAED,yCAaC;IAED,kDAUC;IAED,4DASC;IAED,+EAkDC;IAED,mCAOC;IAED,0BAgEC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAgEC;IAED,kGAeC;IAED,mGAeC;IAED,wEAMC;IAED,uBAMC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,yDAQC;IAED,yEASC;IAED,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,2DAIC;IAED,+DAIC;IAED,sDAeC;IAED,qDAoBC;IAED,6CAIC;IAED,sDAsBC;IAED,kEAoBC;IAED,6FAyBC;IAED,oGAuCC;IAED,0EAiBC;IAED,kGAmCC;IAED,6FASC;IAED,gCASC;IAED,iEAoBC;IAED,qGAeC;IAED,6CAUC;IAED,qDAUC;IAED,qFASC;IAED,sFAeC;IAED,oGA2BC;IAED,mFAGC;IAED,wFAGC;IAED,sEAUC;IAED,mEAWC;IAED,wDAKC;IAED,sDAOC;IAED,mDAMC;IAED,kDAKC;IAED;;;;;;;;;;;MA2BC;IAED,oFAMC;IAED,6EAgCC;IAED,qCAeC;IAED,+FAWC;IAED,wDASC;IAED,iFAKC;IAED,oEAKC;IAED;;;MAMC;IAED,8DAKC;IAED,4EAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,2DAMC;IAED,uDAkBC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,iEAKC;IAED,uEAQC;IAED,mEAKC;IAED,yEAQC;IAED,gFAGC;IAED,yCAqBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAWC;IAED,4EAaC;IAED,4DAGC;IAED,sDASC;IAED,gDAYC;IAGD,6DAgBC;CACF;AAjgDD;IAWE,0FAMC;IAhBD,cAAW;IACX,gBAAe;IACf,kBAAa;IACb,gBAAW;IACX,iBAAY;IACZ,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAGd,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}
|
package/script/midy-GM1.js
CHANGED
|
@@ -253,17 +253,17 @@ class MidyGM1 {
|
|
|
253
253
|
writable: true,
|
|
254
254
|
value: []
|
|
255
255
|
});
|
|
256
|
-
Object.defineProperty(this, "
|
|
256
|
+
Object.defineProperty(this, "notePromises", {
|
|
257
257
|
enumerable: true,
|
|
258
258
|
configurable: true,
|
|
259
259
|
writable: true,
|
|
260
260
|
value: []
|
|
261
261
|
});
|
|
262
|
-
Object.defineProperty(this, "
|
|
262
|
+
Object.defineProperty(this, "instruments", {
|
|
263
263
|
enumerable: true,
|
|
264
264
|
configurable: true,
|
|
265
265
|
writable: true,
|
|
266
|
-
value:
|
|
266
|
+
value: new Set()
|
|
267
267
|
});
|
|
268
268
|
Object.defineProperty(this, "exclusiveClassNotes", {
|
|
269
269
|
enumerable: true,
|
|
@@ -385,7 +385,7 @@ class MidyGM1 {
|
|
|
385
385
|
const soundFont = this.soundFonts[soundFontIndex];
|
|
386
386
|
const voice = soundFont.getVoice(bankNumber, channel.programNumber, noteNumber, velocity);
|
|
387
387
|
const { instrument, sampleID } = voice.generators;
|
|
388
|
-
return
|
|
388
|
+
return soundFontIndex * (2 ** 32) + (instrument << 16) + sampleID;
|
|
389
389
|
}
|
|
390
390
|
createChannelAudioNodes(audioContext) {
|
|
391
391
|
const { gainLeft, gainRight } = this.panToGain(defaultControllerState.pan.defaultValue);
|
|
@@ -1018,13 +1018,17 @@ class MidyGM1 {
|
|
|
1018
1018
|
this.applyVoiceParams(channel, 14, scheduleTime);
|
|
1019
1019
|
}
|
|
1020
1020
|
setModLfoToPitch(channel, note, scheduleTime) {
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
channel.state.modulationDepth;
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1021
|
+
if (note.modulationDepth) {
|
|
1022
|
+
const modLfoToPitch = note.voiceParams.modLfoToPitch;
|
|
1023
|
+
const baseDepth = Math.abs(modLfoToPitch) + channel.state.modulationDepth;
|
|
1024
|
+
const modulationDepth = baseDepth * Math.sign(modLfoToPitch);
|
|
1025
|
+
note.modulationDepth.gain
|
|
1026
|
+
.cancelScheduledValues(scheduleTime)
|
|
1027
|
+
.setValueAtTime(modulationDepth, scheduleTime);
|
|
1028
|
+
}
|
|
1029
|
+
else {
|
|
1030
|
+
this.startModulation(channel, note, scheduleTime);
|
|
1031
|
+
}
|
|
1028
1032
|
}
|
|
1029
1033
|
setModLfoToFilterFc(note, scheduleTime) {
|
|
1030
1034
|
const modLfoToFilterFc = note.voiceParams.modLfoToFilterFc;
|
|
@@ -1153,7 +1157,6 @@ class MidyGM1 {
|
|
|
1153
1157
|
note.modulationDepth.gain.setValueAtTime(depth, scheduleTime);
|
|
1154
1158
|
}
|
|
1155
1159
|
else {
|
|
1156
|
-
this.setPitchEnvelope(note, scheduleTime);
|
|
1157
1160
|
this.startModulation(channel, note, scheduleTime);
|
|
1158
1161
|
}
|
|
1159
1162
|
});
|
package/script/midy-GM2.d.ts
CHANGED
|
@@ -49,8 +49,8 @@ export class MidyGM2 {
|
|
|
49
49
|
isStopping: boolean;
|
|
50
50
|
isSeeking: boolean;
|
|
51
51
|
timeline: any[];
|
|
52
|
-
instruments: any[];
|
|
53
52
|
notePromises: any[];
|
|
53
|
+
instruments: Set<any>;
|
|
54
54
|
exclusiveClassNotes: any[];
|
|
55
55
|
drumExclusiveClassNotes: any[];
|
|
56
56
|
audioContext: any;
|
|
@@ -90,7 +90,7 @@ export class MidyGM2 {
|
|
|
90
90
|
loadSoundFont(input: any): Promise<void>;
|
|
91
91
|
loadMIDI(input: any): Promise<void>;
|
|
92
92
|
cacheVoiceIds(): void;
|
|
93
|
-
getVoiceId(channel: any, noteNumber: any, velocity: any):
|
|
93
|
+
getVoiceId(channel: any, noteNumber: any, velocity: any): any;
|
|
94
94
|
createChannelAudioNodes(audioContext: any): {
|
|
95
95
|
gainL: any;
|
|
96
96
|
gainR: any;
|
|
@@ -191,8 +191,8 @@ export class MidyGM2 {
|
|
|
191
191
|
setVibLfoToPitch(channel: any, note: any, scheduleTime: any): void;
|
|
192
192
|
setModLfoToFilterFc(channel: any, note: any, scheduleTime: any): void;
|
|
193
193
|
setModLfoToVolume(channel: any, note: any, scheduleTime: any): void;
|
|
194
|
-
|
|
195
|
-
|
|
194
|
+
setReverbSend(channel: any, note: any, scheduleTime: any): void;
|
|
195
|
+
setChorusSend(channel: any, note: any, scheduleTime: any): void;
|
|
196
196
|
setDelayModLFO(note: any, scheduleTime: any): void;
|
|
197
197
|
setFreqModLFO(note: any, scheduleTime: any): void;
|
|
198
198
|
setFreqVibLFO(channel: any, note: any, scheduleTime: any): void;
|
|
@@ -227,7 +227,7 @@ export class MidyGM2 {
|
|
|
227
227
|
setBankLSB(channelNumber: any, lsb: any): void;
|
|
228
228
|
dataEntryLSB(channelNumber: any, value: any, scheduleTime: any): void;
|
|
229
229
|
updateChannelVolume(channel: any, scheduleTime: any): void;
|
|
230
|
-
updateKeyBasedVolume(channel: any, scheduleTime: any): void;
|
|
230
|
+
updateKeyBasedVolume(channel: any, keyNumber: any, scheduleTime: any): void;
|
|
231
231
|
setSustainPedal(channelNumber: any, value: any, scheduleTime: any): void;
|
|
232
232
|
setPortamento(channelNumber: any, value: any, scheduleTime: any): void;
|
|
233
233
|
setSostenutoPedal(channelNumber: any, value: any, scheduleTime: any): void;
|
|
@@ -292,11 +292,11 @@ export class MidyGM2 {
|
|
|
292
292
|
getLFOPitchDepth(channel: any): number;
|
|
293
293
|
getLFOFilterDepth(channel: any): number;
|
|
294
294
|
getLFOAmplitudeDepth(channel: any): number;
|
|
295
|
-
|
|
296
|
-
handlePressureSysEx(data: any, tableName: any): void;
|
|
295
|
+
setEffects(channel: any, note: any, table: any, scheduleTime: any): void;
|
|
296
|
+
handlePressureSysEx(data: any, tableName: any, scheduleTime: any): void;
|
|
297
297
|
initControlTable(): Int8Array<ArrayBuffer>;
|
|
298
|
-
|
|
299
|
-
handleControlChangeSysEx(data: any): void;
|
|
298
|
+
setControlChangeEffects(channel: any, controllerType: any, scheduleTime: any): void;
|
|
299
|
+
handleControlChangeSysEx(data: any, scheduleTime: any): void;
|
|
300
300
|
getKeyBasedValue(channel: any, keyNumber: any, controllerType: any): any;
|
|
301
301
|
handleKeyBasedInstrumentControlSysEx(data: any, scheduleTime: any): void;
|
|
302
302
|
handleSysEx(data: any, scheduleTime: any): void;
|
|
@@ -315,8 +315,8 @@ declare class Note {
|
|
|
315
315
|
modulationDepth: any;
|
|
316
316
|
vibratoLFO: any;
|
|
317
317
|
vibratoDepth: any;
|
|
318
|
-
|
|
319
|
-
|
|
318
|
+
reverbSend: any;
|
|
319
|
+
chorusSend: any;
|
|
320
320
|
portamentoNoteNumber: number;
|
|
321
321
|
noteNumber: any;
|
|
322
322
|
velocity: any;
|
package/script/midy-GM2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"AAkJA;IAyCE;;;;;;;;;;;;;;;MAeE;IAEF,+BAkBC;IA3ED,aAAa;IACb,yBAAqB;IACrB,2BAAuB;IACvB;;;;MAIE;IACF;;;;;;MAME;IACF,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,4BAAyB;IACzB,0BAAuB;IACvB,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,
|
|
1
|
+
{"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"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"}
|