@marmooo/midy 0.1.0 → 0.1.2
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 +1 -2
- package/esm/midy-GM1.d.ts.map +1 -1
- package/esm/midy-GM1.js +11 -17
- package/esm/midy-GM2.d.ts +29 -20
- package/esm/midy-GM2.d.ts.map +1 -1
- package/esm/midy-GM2.js +169 -104
- package/esm/midy-GMLite.d.ts +1 -2
- package/esm/midy-GMLite.d.ts.map +1 -1
- package/esm/midy-GMLite.js +11 -17
- package/esm/midy.d.ts +29 -20
- package/esm/midy.d.ts.map +1 -1
- package/esm/midy.js +169 -104
- package/package.json +1 -1
- package/script/midy-GM1.d.ts +1 -2
- package/script/midy-GM1.d.ts.map +1 -1
- package/script/midy-GM1.js +11 -17
- package/script/midy-GM2.d.ts +29 -20
- package/script/midy-GM2.d.ts.map +1 -1
- package/script/midy-GM2.js +169 -104
- package/script/midy-GMLite.d.ts +1 -2
- package/script/midy-GMLite.d.ts.map +1 -1
- package/script/midy-GMLite.js +11 -17
- package/script/midy.d.ts +29 -20
- package/script/midy.d.ts.map +1 -1
- package/script/midy.js +169 -104
package/esm/midy-GM1.d.ts
CHANGED
|
@@ -72,12 +72,11 @@ export class MidyGM1 {
|
|
|
72
72
|
currentTime(): number;
|
|
73
73
|
getActiveNotes(channel: any, time: any): Map<any, any>;
|
|
74
74
|
getActiveNote(noteList: any, time: any): any;
|
|
75
|
-
connectEffects(channel: any, gainNode: any): void;
|
|
76
75
|
cbToRatio(cb: any): number;
|
|
77
76
|
centToHz(cent: any): number;
|
|
78
77
|
calcSemitoneOffset(channel: any): any;
|
|
79
78
|
calcPlaybackRate(instrumentKey: any, noteNumber: any, semitoneOffset: any): number;
|
|
80
|
-
setVolumeEnvelope(
|
|
79
|
+
setVolumeEnvelope(note: any): void;
|
|
81
80
|
setFilterEnvelope(channel: any, note: any): void;
|
|
82
81
|
startModulation(channel: any, note: any, time: any): void;
|
|
83
82
|
createNote(channel: any, instrumentKey: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
|
package/esm/midy-GM1.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAqBA;IAmBE;;;;;;;;;;;MAWE;IAEF;;;;;;;MAOE;IAEF,+BAMC;IA9CD,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAyBhB,kBAAgC;IAChC,gBAA4C;
|
|
1
|
+
{"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAqBA;IAmBE;;;;;;;;;;;MAWE;IAEF;;;;;;;MAOE;IAEF,+BAMC;IA9CD,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAyBhB,kBAAgC;IAChC,gBAA4C;IAC5C,gBAAiD;IAKnD,4BAMC;IAED,mCASC;IAED,gDAMC;IAED,sCASC;IAED;;;;MAeC;IAED,yCAUC;IAED,+DAyBC;IAED,mEAWC;IAED,qDAOC;IAED,2EA+CC;IAED,mCAOC;IAED,0BA+CC;IAED,uDAEC;IAED,wDAEC;IAED;;;MA8DC;IAED,4BAsBC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,uDASC;IAED,6CAQC;IAED,2BAEC;IAED,4BAEC;IAED,sCAGC;IAED,mFAGC;IAED,mCAcC;IACD,iDAiCC;IAED,0DAmBC;IAED,wHA6BC;IAED,kGA6BC;IAED,0EAGC;IAED,sIA8CC;IAED,0FAGC;IAED,kEAeC;IAED,wFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,uDAOC;IAED,mFA+BC;IAED,qCAcC;IAED,yDAIC;IACD,iDAIC;IAED;;;MAMC;IAED,2CAIC;IAED,yDAIC;IAED,mDAGC;IAED,sCAUC;IAED,sDAMC;IAED,kFAeC;IAED,2DAMC;IAED,oCAkBC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,oDAUC;IAED,kDAKC;IAED,iEAOC;IAED,8CAKC;IAED,yDAMC;IAED,gDAKC;IAED,6DAMC;IAED,uCAoBC;IAED,8CAEC;IAED,uCAoBC;IAED,4DAgBC;IAED,oBAQC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AA3iCD;IAOE,gFAKC;IAXD,kBAAa;IACb,cAAS;IACT,gBAAW;IACX,YAAO;IACP,gBAAW;IAGT,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,mBAAkC;CAErC"}
|
package/esm/midy-GM1.js
CHANGED
|
@@ -144,8 +144,8 @@ export class MidyGM1 {
|
|
|
144
144
|
});
|
|
145
145
|
this.audioContext = audioContext;
|
|
146
146
|
this.masterGain = new GainNode(audioContext);
|
|
147
|
-
this.masterGain.connect(audioContext.destination);
|
|
148
147
|
this.channels = this.createChannels(audioContext);
|
|
148
|
+
this.masterGain.connect(audioContext.destination);
|
|
149
149
|
this.GM1SystemOn();
|
|
150
150
|
}
|
|
151
151
|
initSoundFontTable() {
|
|
@@ -189,6 +189,7 @@ export class MidyGM1 {
|
|
|
189
189
|
const merger = new ChannelMergerNode(audioContext, { numberOfInputs: 2 });
|
|
190
190
|
gainL.connect(merger, 0, 0);
|
|
191
191
|
gainR.connect(merger, 0, 1);
|
|
192
|
+
merger.connect(this.masterGain);
|
|
192
193
|
return {
|
|
193
194
|
gainL,
|
|
194
195
|
gainR,
|
|
@@ -491,10 +492,6 @@ export class MidyGM1 {
|
|
|
491
492
|
}
|
|
492
493
|
return noteList[0];
|
|
493
494
|
}
|
|
494
|
-
connectEffects(channel, gainNode) {
|
|
495
|
-
gainNode.connect(channel.merger);
|
|
496
|
-
merger.connect(this.masterGain);
|
|
497
|
-
}
|
|
498
495
|
cbToRatio(cb) {
|
|
499
496
|
return Math.pow(10, cb / 200);
|
|
500
497
|
}
|
|
@@ -509,14 +506,10 @@ export class MidyGM1 {
|
|
|
509
506
|
return instrumentKey.playbackRate(noteNumber) *
|
|
510
507
|
Math.pow(2, semitoneOffset / 12);
|
|
511
508
|
}
|
|
512
|
-
setVolumeEnvelope(
|
|
513
|
-
const { instrumentKey, startTime
|
|
509
|
+
setVolumeEnvelope(note) {
|
|
510
|
+
const { instrumentKey, startTime } = note;
|
|
514
511
|
note.gainNode = new GainNode(this.audioContext, { gain: 0 });
|
|
515
|
-
|
|
516
|
-
if (volume === 0)
|
|
517
|
-
volume = 1e-6; // exponentialRampToValueAtTime() requires a non-zero value
|
|
518
|
-
const attackVolume = this.cbToRatio(-instrumentKey.initialAttenuation) *
|
|
519
|
-
volume;
|
|
512
|
+
const attackVolume = this.cbToRatio(-instrumentKey.initialAttenuation);
|
|
520
513
|
const sustainVolume = attackVolume * (1 - instrumentKey.volSustain);
|
|
521
514
|
const volDelay = startTime + instrumentKey.volDelay;
|
|
522
515
|
const volAttack = volDelay + instrumentKey.volAttack;
|
|
@@ -576,7 +569,7 @@ export class MidyGM1 {
|
|
|
576
569
|
const note = new Note(noteNumber, velocity, startTime, instrumentKey);
|
|
577
570
|
note.bufferSource = await this.createNoteBufferNode(instrumentKey, isSF3);
|
|
578
571
|
note.bufferSource.playbackRate.value = this.calcPlaybackRate(instrumentKey, noteNumber, semitoneOffset);
|
|
579
|
-
this.setVolumeEnvelope(
|
|
572
|
+
this.setVolumeEnvelope(note);
|
|
580
573
|
this.setFilterEnvelope(channel, note);
|
|
581
574
|
if (channel.modulation > 0) {
|
|
582
575
|
const delayModLFO = startTime + instrumentKey.delayModLFO;
|
|
@@ -599,7 +592,8 @@ export class MidyGM1 {
|
|
|
599
592
|
if (!instrumentKey)
|
|
600
593
|
return;
|
|
601
594
|
const note = await this.createNote(channel, instrumentKey, noteNumber, velocity, startTime, isSF3);
|
|
602
|
-
|
|
595
|
+
note.gainNode.connect(channel.gainL);
|
|
596
|
+
note.gainNode.connect(channel.gainR);
|
|
603
597
|
const scheduledNotes = channel.scheduledNotes;
|
|
604
598
|
if (scheduledNotes.has(noteNumber)) {
|
|
605
599
|
scheduledNotes.get(noteNumber).push(note);
|
|
@@ -702,13 +696,13 @@ export class MidyGM1 {
|
|
|
702
696
|
channel.program = program;
|
|
703
697
|
}
|
|
704
698
|
handlePitchBendMessage(channelNumber, lsb, msb) {
|
|
705
|
-
const pitchBend = msb * 128 + lsb;
|
|
699
|
+
const pitchBend = msb * 128 + lsb - 8192;
|
|
706
700
|
this.setPitchBend(channelNumber, pitchBend);
|
|
707
701
|
}
|
|
708
702
|
setPitchBend(channelNumber, pitchBend) {
|
|
709
703
|
const channel = this.channels[channelNumber];
|
|
710
704
|
const prevPitchBend = channel.pitchBend;
|
|
711
|
-
channel.pitchBend =
|
|
705
|
+
channel.pitchBend = pitchBend / 8192;
|
|
712
706
|
const detuneChange = (channel.pitchBend - prevPitchBend) *
|
|
713
707
|
channel.pitchBendRange * 100;
|
|
714
708
|
this.updateDetune(channel, detuneChange);
|
|
@@ -936,7 +930,7 @@ export class MidyGM1 {
|
|
|
936
930
|
channel.scheduledNotes.forEach((noteList) => {
|
|
937
931
|
const activeNote = this.getActiveNote(noteList, now);
|
|
938
932
|
if (activeNote) {
|
|
939
|
-
const notePromise = this.scheduleNoteRelease(channelNumber, noteNumber, velocity, now, stopPedal);
|
|
933
|
+
const notePromise = this.scheduleNoteRelease(channelNumber, activeNote.noteNumber, velocity, now, stopPedal);
|
|
940
934
|
promises.push(notePromise);
|
|
941
935
|
}
|
|
942
936
|
});
|
package/esm/midy-GM2.d.ts
CHANGED
|
@@ -56,6 +56,7 @@ export class MidyGM2 {
|
|
|
56
56
|
modDepth: number;
|
|
57
57
|
feedback: number;
|
|
58
58
|
sendToReverb: number;
|
|
59
|
+
delayTimes: any[];
|
|
59
60
|
};
|
|
60
61
|
mono: boolean;
|
|
61
62
|
omni: boolean;
|
|
@@ -89,6 +90,19 @@ export class MidyGM2 {
|
|
|
89
90
|
};
|
|
90
91
|
masterGain: any;
|
|
91
92
|
channels: any[];
|
|
93
|
+
reverbEffect: {
|
|
94
|
+
input: any;
|
|
95
|
+
output: any;
|
|
96
|
+
};
|
|
97
|
+
chorusEffect: {
|
|
98
|
+
input: any;
|
|
99
|
+
output: any;
|
|
100
|
+
sendGain: any;
|
|
101
|
+
lfo: any;
|
|
102
|
+
lfoGain: any;
|
|
103
|
+
delayNodes: any[];
|
|
104
|
+
feedbackGains: any[];
|
|
105
|
+
};
|
|
92
106
|
initSoundFontTable(): any[];
|
|
93
107
|
addSoundFont(soundFont: any): void;
|
|
94
108
|
loadSoundFont(soundFontUrl: any): Promise<void>;
|
|
@@ -97,17 +111,6 @@ export class MidyGM2 {
|
|
|
97
111
|
gainL: any;
|
|
98
112
|
gainR: any;
|
|
99
113
|
merger: any;
|
|
100
|
-
reverbEffect: {
|
|
101
|
-
input: any;
|
|
102
|
-
output: any;
|
|
103
|
-
};
|
|
104
|
-
chorusEffect: {
|
|
105
|
-
lfo: any;
|
|
106
|
-
lfoGain: any;
|
|
107
|
-
delayNodes: any[];
|
|
108
|
-
chorusGains: any[];
|
|
109
|
-
output: any;
|
|
110
|
-
};
|
|
111
114
|
};
|
|
112
115
|
createChannels(audioContext: any): any[];
|
|
113
116
|
createNoteBuffer(instrumentKey: any, isSF3: any): Promise<any>;
|
|
@@ -141,23 +144,24 @@ export class MidyGM2 {
|
|
|
141
144
|
createCombFilter(audioContext: any, input: any, delay: any, feedback: any): any;
|
|
142
145
|
createAllpassFilter(audioContext: any, input: any, delay: any, feedback: any): any;
|
|
143
146
|
generateDistributedArray(center: any, count: any, varianceRatio?: number, randomness?: number): any[];
|
|
144
|
-
createSchroederReverb(audioContext: any,
|
|
147
|
+
createSchroederReverb(audioContext: any, combFeedbacks: any, combDelays: any, allpassFeedbacks: any, allpassDelays: any): {
|
|
145
148
|
input: any;
|
|
146
149
|
output: any;
|
|
147
150
|
};
|
|
148
|
-
createChorusEffect(audioContext: any
|
|
151
|
+
createChorusEffect(audioContext: any): {
|
|
152
|
+
input: any;
|
|
153
|
+
output: any;
|
|
154
|
+
sendGain: any;
|
|
149
155
|
lfo: any;
|
|
150
156
|
lfoGain: any;
|
|
151
157
|
delayNodes: any[];
|
|
152
|
-
|
|
153
|
-
output: any;
|
|
158
|
+
feedbackGains: any[];
|
|
154
159
|
};
|
|
155
|
-
connectEffects(channel: any, gainNode: any): void;
|
|
156
160
|
cbToRatio(cb: any): number;
|
|
157
161
|
centToHz(cent: any): number;
|
|
158
162
|
calcSemitoneOffset(channel: any): any;
|
|
159
163
|
calcPlaybackRate(instrumentKey: any, noteNumber: any, semitoneOffset: any): number;
|
|
160
|
-
setVolumeEnvelope(
|
|
164
|
+
setVolumeEnvelope(note: any): void;
|
|
161
165
|
setFilterEnvelope(channel: any, note: any): void;
|
|
162
166
|
startModulation(channel: any, note: any, time: any): void;
|
|
163
167
|
createNote(channel: any, instrumentKey: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
|
|
@@ -226,19 +230,24 @@ export class MidyGM2 {
|
|
|
226
230
|
setMasterFineTuning(fineTuning: any): void;
|
|
227
231
|
handleMasterCoarseTuningSysEx(data: any): void;
|
|
228
232
|
setMasterCoarseTuning(coarseTuning: any): void;
|
|
229
|
-
|
|
230
|
-
|
|
233
|
+
handleGlobalParameterControlSysEx(data: any): void;
|
|
234
|
+
handleReverbParameterSysEx(data: any): void;
|
|
231
235
|
setReverbType(type: any): void;
|
|
232
236
|
getReverbTimeFromType(type: any): number | undefined;
|
|
233
237
|
setReverbTime(value: any): void;
|
|
234
238
|
getReverbTime(value: any): number;
|
|
235
239
|
calcDelay(rt60: any, feedback: any): number;
|
|
236
|
-
|
|
240
|
+
handleChorusParameterSysEx(data: any): void;
|
|
237
241
|
setChorusType(type: any): void;
|
|
242
|
+
setChorusParameter(modRate: any, modDepth: any, feedback: any, sendToReverb: any): void;
|
|
238
243
|
setChorusModRate(value: any): void;
|
|
244
|
+
getChorusModRate(value: any): number;
|
|
239
245
|
setChorusModDepth(value: any): void;
|
|
246
|
+
getChorusModDepth(value: any): number;
|
|
240
247
|
setChorusFeedback(value: any): void;
|
|
248
|
+
getChorusFeedback(value: any): number;
|
|
241
249
|
setChorusSendToReverb(value: any): void;
|
|
250
|
+
getChorusSendToReverb(value: any): number;
|
|
242
251
|
handleExclusiveMessage(data: any): void;
|
|
243
252
|
handleSysEx(data: any): void;
|
|
244
253
|
scheduleTask(callback: any, startTime: any): Promise<any>;
|
package/esm/midy-GM2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"AAuBA;
|
|
1
|
+
{"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"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"}
|