@marmooo/midy 0.1.1 → 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 +15 -16
- package/esm/midy-GM2.d.ts.map +1 -1
- package/esm/midy-GM2.js +47 -54
- 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 +15 -16
- package/esm/midy.d.ts.map +1 -1
- package/esm/midy.js +47 -54
- 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 +15 -16
- package/script/midy-GM2.d.ts.map +1 -1
- package/script/midy-GM2.js +47 -54
- 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 +15 -16
- package/script/midy.d.ts.map +1 -1
- package/script/midy.js +47 -54
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
|
@@ -90,6 +90,19 @@ export class MidyGM2 {
|
|
|
90
90
|
};
|
|
91
91
|
masterGain: any;
|
|
92
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
|
+
};
|
|
93
106
|
initSoundFontTable(): any[];
|
|
94
107
|
addSoundFont(soundFont: any): void;
|
|
95
108
|
loadSoundFont(soundFontUrl: any): Promise<void>;
|
|
@@ -98,19 +111,6 @@ export class MidyGM2 {
|
|
|
98
111
|
gainL: any;
|
|
99
112
|
gainR: any;
|
|
100
113
|
merger: any;
|
|
101
|
-
reverbEffect: {
|
|
102
|
-
input: any;
|
|
103
|
-
output: any;
|
|
104
|
-
};
|
|
105
|
-
chorusEffect: {
|
|
106
|
-
input: any;
|
|
107
|
-
output: any;
|
|
108
|
-
sendGain: any;
|
|
109
|
-
lfo: any;
|
|
110
|
-
lfoGain: any;
|
|
111
|
-
delayNodes: any[];
|
|
112
|
-
feedbackGains: any[];
|
|
113
|
-
};
|
|
114
114
|
};
|
|
115
115
|
createChannels(audioContext: any): any[];
|
|
116
116
|
createNoteBuffer(instrumentKey: any, isSF3: any): Promise<any>;
|
|
@@ -144,7 +144,7 @@ export class MidyGM2 {
|
|
|
144
144
|
createCombFilter(audioContext: any, input: any, delay: any, feedback: any): any;
|
|
145
145
|
createAllpassFilter(audioContext: any, input: any, delay: any, feedback: any): any;
|
|
146
146
|
generateDistributedArray(center: any, count: any, varianceRatio?: number, randomness?: number): any[];
|
|
147
|
-
createSchroederReverb(audioContext: any,
|
|
147
|
+
createSchroederReverb(audioContext: any, combFeedbacks: any, combDelays: any, allpassFeedbacks: any, allpassDelays: any): {
|
|
148
148
|
input: any;
|
|
149
149
|
output: any;
|
|
150
150
|
};
|
|
@@ -157,12 +157,11 @@ export class MidyGM2 {
|
|
|
157
157
|
delayNodes: any[];
|
|
158
158
|
feedbackGains: any[];
|
|
159
159
|
};
|
|
160
|
-
connectEffects(channel: any, gainNode: any): void;
|
|
161
160
|
cbToRatio(cb: any): number;
|
|
162
161
|
centToHz(cent: any): number;
|
|
163
162
|
calcSemitoneOffset(channel: any): any;
|
|
164
163
|
calcPlaybackRate(instrumentKey: any, noteNumber: any, semitoneOffset: any): number;
|
|
165
|
-
setVolumeEnvelope(
|
|
164
|
+
setVolumeEnvelope(note: any): void;
|
|
166
165
|
setFilterEnvelope(channel: any, note: any): void;
|
|
167
166
|
startModulation(channel: any, note: any, time: any): void;
|
|
168
167
|
createNote(channel: any, instrumentKey: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
|
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;IAkCE;;;;;;;;;;;;;;;;;MAiBE;IAEF;;;;;;;;;;;MAWE;IAEF;;;;;;;MAOE;IAgCF;;;;;
|
|
1
|
+
{"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"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"}
|
package/esm/midy-GM2.js
CHANGED
|
@@ -82,7 +82,7 @@ export class MidyGM2 {
|
|
|
82
82
|
writable: true,
|
|
83
83
|
value: {
|
|
84
84
|
time: this.getReverbTime(64),
|
|
85
|
-
feedback: 0.
|
|
85
|
+
feedback: 0.8,
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
88
|
Object.defineProperty(this, "chorus", {
|
|
@@ -224,8 +224,12 @@ export class MidyGM2 {
|
|
|
224
224
|
this.audioContext = audioContext;
|
|
225
225
|
this.options = { ...this.defaultOptions, ...options };
|
|
226
226
|
this.masterGain = new GainNode(audioContext);
|
|
227
|
-
this.masterGain.connect(audioContext.destination);
|
|
228
227
|
this.channels = this.createChannels(audioContext);
|
|
228
|
+
this.reverbEffect = this.options.reverbAlgorithm(audioContext);
|
|
229
|
+
this.chorusEffect = this.createChorusEffect(audioContext);
|
|
230
|
+
this.chorusEffect.output.connect(this.masterGain);
|
|
231
|
+
this.reverbEffect.output.connect(this.masterGain);
|
|
232
|
+
this.masterGain.connect(audioContext.destination);
|
|
229
233
|
this.GM2SystemOn();
|
|
230
234
|
}
|
|
231
235
|
initSoundFontTable() {
|
|
@@ -269,14 +273,11 @@ export class MidyGM2 {
|
|
|
269
273
|
const merger = new ChannelMergerNode(audioContext, { numberOfInputs: 2 });
|
|
270
274
|
gainL.connect(merger, 0, 0);
|
|
271
275
|
gainR.connect(merger, 0, 1);
|
|
272
|
-
|
|
273
|
-
const chorusEffect = this.createChorusEffect(audioContext);
|
|
276
|
+
merger.connect(this.masterGain);
|
|
274
277
|
return {
|
|
275
278
|
gainL,
|
|
276
279
|
gainR,
|
|
277
280
|
merger,
|
|
278
|
-
reverbEffect,
|
|
279
|
-
chorusEffect,
|
|
280
281
|
};
|
|
281
282
|
}
|
|
282
283
|
createChannels(audioContext) {
|
|
@@ -686,7 +687,7 @@ export class MidyGM2 {
|
|
|
686
687
|
}
|
|
687
688
|
// https://hajim.rochester.edu/ece/sites/zduan/teaching/ece472/reading/Schroeder_1962.pdf
|
|
688
689
|
// M.R.Schroeder, "Natural Sounding Artificial Reverberation", J.Audio Eng. Soc., vol.10, p.219, 1962
|
|
689
|
-
createSchroederReverb(audioContext, combDelays,
|
|
690
|
+
createSchroederReverb(audioContext, combFeedbacks, combDelays, allpassFeedbacks, allpassDelays) {
|
|
690
691
|
const input = new GainNode(audioContext);
|
|
691
692
|
const output = new GainNode(audioContext);
|
|
692
693
|
const mergerGain = new GainNode(audioContext);
|
|
@@ -745,21 +746,6 @@ export class MidyGM2 {
|
|
|
745
746
|
feedbackGains,
|
|
746
747
|
};
|
|
747
748
|
}
|
|
748
|
-
connectEffects(channel, gainNode) {
|
|
749
|
-
gainNode.connect(channel.merger);
|
|
750
|
-
channel.merger.connect(this.masterGain);
|
|
751
|
-
if (0 < channel.reverbSendLevel) {
|
|
752
|
-
channel.merger.connect(channel.reverbEffect.input);
|
|
753
|
-
channel.reverbEffect.output.connect(this.masterGain);
|
|
754
|
-
}
|
|
755
|
-
if (0 < channel.chorusSendLevel) {
|
|
756
|
-
channel.merger.connect(channel.chorusEffect.input);
|
|
757
|
-
channel.reverbEffect.output.connect(this.masterGain);
|
|
758
|
-
}
|
|
759
|
-
if (0 < this.chorus.sendToReverb) {
|
|
760
|
-
channel.chorusEffect.sendGain.connect(channel.reverbEffect.input);
|
|
761
|
-
}
|
|
762
|
-
}
|
|
763
749
|
cbToRatio(cb) {
|
|
764
750
|
return Math.pow(10, cb / 200);
|
|
765
751
|
}
|
|
@@ -776,14 +762,10 @@ export class MidyGM2 {
|
|
|
776
762
|
return instrumentKey.playbackRate(noteNumber) *
|
|
777
763
|
Math.pow(2, semitoneOffset / 12);
|
|
778
764
|
}
|
|
779
|
-
setVolumeEnvelope(
|
|
780
|
-
const { instrumentKey, startTime
|
|
765
|
+
setVolumeEnvelope(note) {
|
|
766
|
+
const { instrumentKey, startTime } = note;
|
|
781
767
|
note.gainNode = new GainNode(this.audioContext, { gain: 0 });
|
|
782
|
-
|
|
783
|
-
if (volume === 0)
|
|
784
|
-
volume = 1e-6; // exponentialRampToValueAtTime() requires a non-zero value
|
|
785
|
-
const attackVolume = this.cbToRatio(-instrumentKey.initialAttenuation) *
|
|
786
|
-
volume;
|
|
768
|
+
const attackVolume = this.cbToRatio(-instrumentKey.initialAttenuation);
|
|
787
769
|
const sustainVolume = attackVolume * (1 - instrumentKey.volSustain);
|
|
788
770
|
const volDelay = startTime + instrumentKey.volDelay;
|
|
789
771
|
const volAttack = volDelay + instrumentKey.volAttack;
|
|
@@ -843,7 +825,7 @@ export class MidyGM2 {
|
|
|
843
825
|
const note = new Note(noteNumber, velocity, startTime, instrumentKey);
|
|
844
826
|
note.bufferSource = await this.createNoteBufferNode(instrumentKey, isSF3);
|
|
845
827
|
note.bufferSource.playbackRate.value = this.calcPlaybackRate(instrumentKey, noteNumber, semitoneOffset);
|
|
846
|
-
this.setVolumeEnvelope(
|
|
828
|
+
this.setVolumeEnvelope(note);
|
|
847
829
|
this.setFilterEnvelope(channel, note);
|
|
848
830
|
if (channel.modulation > 0) {
|
|
849
831
|
const delayModLFO = startTime + instrumentKey.delayModLFO;
|
|
@@ -879,7 +861,8 @@ export class MidyGM2 {
|
|
|
879
861
|
if (!instrumentKey)
|
|
880
862
|
return;
|
|
881
863
|
const note = await this.createNote(channel, instrumentKey, noteNumber, velocity, startTime, isSF3);
|
|
882
|
-
|
|
864
|
+
note.gainNode.connect(channel.gainL);
|
|
865
|
+
note.gainNode.connect(channel.gainR);
|
|
883
866
|
if (channel.sostenutoPedal) {
|
|
884
867
|
channel.sostenutoNotes.set(noteNumber, note);
|
|
885
868
|
}
|
|
@@ -1022,13 +1005,13 @@ export class MidyGM2 {
|
|
|
1022
1005
|
}
|
|
1023
1006
|
}
|
|
1024
1007
|
handlePitchBendMessage(channelNumber, lsb, msb) {
|
|
1025
|
-
const pitchBend = msb * 128 + lsb;
|
|
1008
|
+
const pitchBend = msb * 128 + lsb - 8192;
|
|
1026
1009
|
this.setPitchBend(channelNumber, pitchBend);
|
|
1027
1010
|
}
|
|
1028
1011
|
setPitchBend(channelNumber, pitchBend) {
|
|
1029
1012
|
const channel = this.channels[channelNumber];
|
|
1030
1013
|
const prevPitchBend = channel.pitchBend;
|
|
1031
|
-
channel.pitchBend =
|
|
1014
|
+
channel.pitchBend = pitchBend / 8192;
|
|
1032
1015
|
const detuneChange = (channel.pitchBend - prevPitchBend) *
|
|
1033
1016
|
channel.pitchBendRange * 100;
|
|
1034
1017
|
this.updateDetune(channel, detuneChange);
|
|
@@ -1163,20 +1146,30 @@ export class MidyGM2 {
|
|
|
1163
1146
|
this.channels[channelNumber].portamento = value >= 64;
|
|
1164
1147
|
}
|
|
1165
1148
|
setReverbSendLevel(channelNumber, reverbSendLevel) {
|
|
1166
|
-
const now = this.audioContext.currentTime;
|
|
1167
1149
|
const channel = this.channels[channelNumber];
|
|
1168
|
-
const reverbEffect =
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1150
|
+
const reverbEffect = this.reverbEffect;
|
|
1151
|
+
if (0 < reverbSendLevel) {
|
|
1152
|
+
const now = this.audioContext.currentTime;
|
|
1153
|
+
channel.reverbSendLevel = reverbSendLevel / 127;
|
|
1154
|
+
reverbEffect.output.gain.cancelScheduledValues(now);
|
|
1155
|
+
reverbEffect.output.gain.setValueAtTime(channel.reverbSendLevel, now);
|
|
1156
|
+
}
|
|
1157
|
+
else if (channel.reverbSendLevel !== 0) {
|
|
1158
|
+
channel.merger.disconnect(reverbEffect.input);
|
|
1159
|
+
}
|
|
1172
1160
|
}
|
|
1173
1161
|
setChorusSendLevel(channelNumber, chorusSendLevel) {
|
|
1174
|
-
const now = this.audioContext.currentTime;
|
|
1175
1162
|
const channel = this.channels[channelNumber];
|
|
1176
|
-
const chorusEffect =
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1163
|
+
const chorusEffect = this.chorusEffect;
|
|
1164
|
+
if (0 < chorusSendLevel) {
|
|
1165
|
+
const now = this.audioContext.currentTime;
|
|
1166
|
+
channel.chorusSendLevel = chorusSendLevel / 127;
|
|
1167
|
+
chorusEffect.output.gain.cancelScheduledValues(now);
|
|
1168
|
+
chorusEffect.output.gain.setValueAtTime(channel.chorusSendLevel, now);
|
|
1169
|
+
}
|
|
1170
|
+
else if (channel.chorusSendLevel !== 0) {
|
|
1171
|
+
channel.merger.disconnect(chorusEffect.input);
|
|
1172
|
+
}
|
|
1180
1173
|
}
|
|
1181
1174
|
setSostenutoPedal(channelNumber, value) {
|
|
1182
1175
|
const isOn = value >= 64;
|
|
@@ -1341,7 +1334,7 @@ export class MidyGM2 {
|
|
|
1341
1334
|
channel.scheduledNotes.forEach((noteList) => {
|
|
1342
1335
|
const activeNote = this.getActiveNote(noteList, now);
|
|
1343
1336
|
if (activeNote) {
|
|
1344
|
-
const notePromise = this.scheduleNoteRelease(channelNumber, noteNumber, velocity, now, stopPedal);
|
|
1337
|
+
const notePromise = this.scheduleNoteRelease(channelNumber, activeNote.noteNumber, velocity, now, stopPedal);
|
|
1345
1338
|
promises.push(notePromise);
|
|
1346
1339
|
}
|
|
1347
1340
|
});
|
|
@@ -1510,11 +1503,9 @@ export class MidyGM2 {
|
|
|
1510
1503
|
}
|
|
1511
1504
|
setReverbType(type) {
|
|
1512
1505
|
this.reverb.time = this.getReverbTimeFromType(type);
|
|
1513
|
-
this.reverb.feedback = (type === 8) ? 0.
|
|
1514
|
-
const { audioContext,
|
|
1515
|
-
|
|
1516
|
-
channels[i].reverbEffect = options.reverbAlgorithm(audioContext);
|
|
1517
|
-
}
|
|
1506
|
+
this.reverb.feedback = (type === 8) ? 0.9 : 0.8;
|
|
1507
|
+
const { audioContext, options } = this;
|
|
1508
|
+
this.reverbEffect = options.reverbAlgorithm(audioContext);
|
|
1518
1509
|
}
|
|
1519
1510
|
getReverbTimeFromType(type) {
|
|
1520
1511
|
switch (type) {
|
|
@@ -1656,15 +1647,17 @@ export class MidyGM2 {
|
|
|
1656
1647
|
return value * 0.00763;
|
|
1657
1648
|
}
|
|
1658
1649
|
setChorusSendToReverb(value) {
|
|
1659
|
-
const now = this.audioContext.currentTime;
|
|
1660
1650
|
const sendToReverb = this.getChorusSendToReverb(value);
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
chorusEffect.sendGain.gain
|
|
1651
|
+
if (0 < sendToReverb) {
|
|
1652
|
+
const now = this.audioContext.currentTime;
|
|
1653
|
+
this.chorus.sendToReverb = sendToReverb;
|
|
1654
|
+
this.chorusEffect.sendGain.gain
|
|
1665
1655
|
.cancelScheduledValues(now)
|
|
1666
1656
|
.setValueAtTime(sendToReverb, now);
|
|
1667
1657
|
}
|
|
1658
|
+
else if (this.chorus.sendToReverb !== 0) {
|
|
1659
|
+
this.chorusEffect.sendGain.disconnect(this.reverbEffect.input);
|
|
1660
|
+
}
|
|
1668
1661
|
}
|
|
1669
1662
|
getChorusSendToReverb(value) {
|
|
1670
1663
|
return value * 0.00787;
|
package/esm/midy-GMLite.d.ts
CHANGED
|
@@ -70,12 +70,11 @@ export class MidyGMLite {
|
|
|
70
70
|
currentTime(): number;
|
|
71
71
|
getActiveNotes(channel: any, time: any): Map<any, any>;
|
|
72
72
|
getActiveNote(noteList: any, time: any): any;
|
|
73
|
-
connectEffects(channel: any, gainNode: any): void;
|
|
74
73
|
cbToRatio(cb: any): number;
|
|
75
74
|
centToHz(cent: any): number;
|
|
76
75
|
calcSemitoneOffset(channel: any): number;
|
|
77
76
|
calcPlaybackRate(instrumentKey: any, noteNumber: any, semitoneOffset: any): number;
|
|
78
|
-
setVolumeEnvelope(
|
|
77
|
+
setVolumeEnvelope(note: any): void;
|
|
79
78
|
setFilterEnvelope(channel: any, note: any): void;
|
|
80
79
|
startModulation(channel: any, note: any, time: any): void;
|
|
81
80
|
createNote(channel: any, instrumentKey: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
|
package/esm/midy-GMLite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy-GMLite.d.ts","sourceRoot":"","sources":["../src/midy-GMLite.js"],"names":[],"mappings":"AAqBA;IAmBE;;;;;;;;;MASE;IAEF;;;;;;;MAOE;IAEF,+BAMC;IA5CD,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;IAuBhB,kBAAgC;IAChC,gBAA4C;
|
|
1
|
+
{"version":3,"file":"midy-GMLite.d.ts","sourceRoot":"","sources":["../src/midy-GMLite.js"],"names":[],"mappings":"AAqBA;IAmBE;;;;;;;;;MASE;IAEF;;;;;;;MAOE;IAEF,+BAMC;IA5CD,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;IAuBhB,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,yCAEC;IAED,mFAGC;IAED,mCAcC;IAED,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,oCAYC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,oDAUC;IAED,kDAKC;IAED,iEAOC;IAED,uCAoBC;IAED,8CAEC;IAED,uCAoBC;IAED,4DAgBC;IAED,oBAQC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AA5+BD;IAOE,gFAKC;IAXD,kBAAa;IACb,cAAS;IACT,gBAAW;IACX,YAAO;IACP,gBAAW;IAGT,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,mBAAkC;CAErC"}
|
package/esm/midy-GMLite.js
CHANGED
|
@@ -144,8 +144,8 @@ export class MidyGMLite {
|
|
|
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 MidyGMLite {
|
|
|
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 MidyGMLite {
|
|
|
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
|
}
|
|
@@ -508,14 +505,10 @@ export class MidyGMLite {
|
|
|
508
505
|
return instrumentKey.playbackRate(noteNumber) *
|
|
509
506
|
Math.pow(2, semitoneOffset / 12);
|
|
510
507
|
}
|
|
511
|
-
setVolumeEnvelope(
|
|
512
|
-
const { instrumentKey, startTime
|
|
508
|
+
setVolumeEnvelope(note) {
|
|
509
|
+
const { instrumentKey, startTime } = note;
|
|
513
510
|
note.gainNode = new GainNode(this.audioContext, { gain: 0 });
|
|
514
|
-
|
|
515
|
-
if (volume === 0)
|
|
516
|
-
volume = 1e-6; // exponentialRampToValueAtTime() requires a non-zero value
|
|
517
|
-
const attackVolume = this.cbToRatio(-instrumentKey.initialAttenuation) *
|
|
518
|
-
volume;
|
|
511
|
+
const attackVolume = this.cbToRatio(-instrumentKey.initialAttenuation);
|
|
519
512
|
const sustainVolume = attackVolume * (1 - instrumentKey.volSustain);
|
|
520
513
|
const volDelay = startTime + instrumentKey.volDelay;
|
|
521
514
|
const volAttack = volDelay + instrumentKey.volAttack;
|
|
@@ -575,7 +568,7 @@ export class MidyGMLite {
|
|
|
575
568
|
const note = new Note(noteNumber, velocity, startTime, instrumentKey);
|
|
576
569
|
note.bufferSource = await this.createNoteBufferNode(instrumentKey, isSF3);
|
|
577
570
|
note.bufferSource.playbackRate.value = this.calcPlaybackRate(instrumentKey, noteNumber, semitoneOffset);
|
|
578
|
-
this.setVolumeEnvelope(
|
|
571
|
+
this.setVolumeEnvelope(note);
|
|
579
572
|
this.setFilterEnvelope(channel, note);
|
|
580
573
|
if (channel.modulation > 0) {
|
|
581
574
|
const delayModLFO = startTime + instrumentKey.delayModLFO;
|
|
@@ -598,7 +591,8 @@ export class MidyGMLite {
|
|
|
598
591
|
if (!instrumentKey)
|
|
599
592
|
return;
|
|
600
593
|
const note = await this.createNote(channel, instrumentKey, noteNumber, velocity, startTime, isSF3);
|
|
601
|
-
|
|
594
|
+
note.gainNode.connect(channel.gainL);
|
|
595
|
+
note.gainNode.connect(channel.gainR);
|
|
602
596
|
const scheduledNotes = channel.scheduledNotes;
|
|
603
597
|
if (scheduledNotes.has(noteNumber)) {
|
|
604
598
|
scheduledNotes.get(noteNumber).push(note);
|
|
@@ -701,13 +695,13 @@ export class MidyGMLite {
|
|
|
701
695
|
channel.program = program;
|
|
702
696
|
}
|
|
703
697
|
handlePitchBendMessage(channelNumber, lsb, msb) {
|
|
704
|
-
const pitchBend = msb * 128 + lsb;
|
|
698
|
+
const pitchBend = msb * 128 + lsb - 8192;
|
|
705
699
|
this.setPitchBend(channelNumber, pitchBend);
|
|
706
700
|
}
|
|
707
701
|
setPitchBend(channelNumber, pitchBend) {
|
|
708
702
|
const channel = this.channels[channelNumber];
|
|
709
703
|
const prevPitchBend = channel.pitchBend;
|
|
710
|
-
channel.pitchBend =
|
|
704
|
+
channel.pitchBend = pitchBend / 8192;
|
|
711
705
|
const detuneChange = (channel.pitchBend - prevPitchBend) *
|
|
712
706
|
channel.pitchBendRange * 100;
|
|
713
707
|
this.updateDetune(channel, detuneChange);
|
|
@@ -877,7 +871,7 @@ export class MidyGMLite {
|
|
|
877
871
|
channel.scheduledNotes.forEach((noteList) => {
|
|
878
872
|
const activeNote = this.getActiveNote(noteList, now);
|
|
879
873
|
if (activeNote) {
|
|
880
|
-
const notePromise = this.scheduleNoteRelease(channelNumber, noteNumber, velocity, now, stopPedal);
|
|
874
|
+
const notePromise = this.scheduleNoteRelease(channelNumber, activeNote.noteNumber, velocity, now, stopPedal);
|
|
881
875
|
promises.push(notePromise);
|
|
882
876
|
}
|
|
883
877
|
});
|
package/esm/midy.d.ts
CHANGED
|
@@ -93,6 +93,19 @@ export class Midy {
|
|
|
93
93
|
};
|
|
94
94
|
masterGain: any;
|
|
95
95
|
channels: any[];
|
|
96
|
+
reverbEffect: {
|
|
97
|
+
input: any;
|
|
98
|
+
output: any;
|
|
99
|
+
};
|
|
100
|
+
chorusEffect: {
|
|
101
|
+
input: any;
|
|
102
|
+
output: any;
|
|
103
|
+
sendGain: any;
|
|
104
|
+
lfo: any;
|
|
105
|
+
lfoGain: any;
|
|
106
|
+
delayNodes: any[];
|
|
107
|
+
feedbackGains: any[];
|
|
108
|
+
};
|
|
96
109
|
initSoundFontTable(): any[];
|
|
97
110
|
addSoundFont(soundFont: any): void;
|
|
98
111
|
loadSoundFont(soundFontUrl: any): Promise<void>;
|
|
@@ -101,19 +114,6 @@ export class Midy {
|
|
|
101
114
|
gainL: any;
|
|
102
115
|
gainR: any;
|
|
103
116
|
merger: any;
|
|
104
|
-
reverbEffect: {
|
|
105
|
-
input: any;
|
|
106
|
-
output: any;
|
|
107
|
-
};
|
|
108
|
-
chorusEffect: {
|
|
109
|
-
input: any;
|
|
110
|
-
output: any;
|
|
111
|
-
sendGain: any;
|
|
112
|
-
lfo: any;
|
|
113
|
-
lfoGain: any;
|
|
114
|
-
delayNodes: any[];
|
|
115
|
-
feedbackGains: any[];
|
|
116
|
-
};
|
|
117
117
|
};
|
|
118
118
|
createChannels(audioContext: any): any[];
|
|
119
119
|
createNoteBuffer(instrumentKey: any, isSF3: any): Promise<any>;
|
|
@@ -147,7 +147,7 @@ export class Midy {
|
|
|
147
147
|
createCombFilter(audioContext: any, input: any, delay: any, feedback: any): any;
|
|
148
148
|
createAllpassFilter(audioContext: any, input: any, delay: any, feedback: any): any;
|
|
149
149
|
generateDistributedArray(center: any, count: any, varianceRatio?: number, randomness?: number): any[];
|
|
150
|
-
createSchroederReverb(audioContext: any,
|
|
150
|
+
createSchroederReverb(audioContext: any, combFeedbacks: any, combDelays: any, allpassFeedbacks: any, allpassDelays: any): {
|
|
151
151
|
input: any;
|
|
152
152
|
output: any;
|
|
153
153
|
};
|
|
@@ -160,12 +160,11 @@ export class Midy {
|
|
|
160
160
|
delayNodes: any[];
|
|
161
161
|
feedbackGains: any[];
|
|
162
162
|
};
|
|
163
|
-
connectEffects(channel: any, gainNode: any): void;
|
|
164
163
|
cbToRatio(cb: any): number;
|
|
165
164
|
centToHz(cent: any): number;
|
|
166
165
|
calcSemitoneOffset(channel: any): any;
|
|
167
166
|
calcPlaybackRate(instrumentKey: any, noteNumber: any, semitoneOffset: any): number;
|
|
168
|
-
setVolumeEnvelope(
|
|
167
|
+
setVolumeEnvelope(note: any): void;
|
|
169
168
|
setFilterEnvelope(channel: any, note: any): void;
|
|
170
169
|
startModulation(channel: any, note: any, time: any): void;
|
|
171
170
|
startVibrato(channel: any, note: any, time: any): void;
|
package/esm/midy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"AAuBA;IAkCE;;;;;;;;;;;;;;;;;;;;MAoBE;IAEF;;;;;;;;;;;MAWE;IAEF;;;;;;;MAOE;IAgCF;;;;;
|
|
1
|
+
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"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"}
|