@marmooo/midy 0.0.8 → 0.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.
package/esm/midy-GM1.d.ts CHANGED
@@ -39,27 +39,7 @@ export class MidyGM1 {
39
39
  notePromises: any[];
40
40
  audioContext: any;
41
41
  masterGain: any;
42
- channels: {
43
- scheduledNotes: Map<any, any>;
44
- gainL: any;
45
- gainR: any;
46
- expression: number;
47
- modulation: number;
48
- sustainPedal: boolean;
49
- rpnMSB: number;
50
- rpnLSB: number;
51
- pitchBendRange: number;
52
- volume: number;
53
- pan: number;
54
- bank: number;
55
- dataMSB: number;
56
- dataLSB: number;
57
- program: number;
58
- pitchBend: number;
59
- fineTuning: number;
60
- coarseTuning: number;
61
- modulationDepthRange: number;
62
- }[];
42
+ channels: any[];
63
43
  initSoundFontTable(): any[];
64
44
  addSoundFont(soundFont: any): void;
65
45
  loadSoundFont(soundFontUrl: any): Promise<void>;
@@ -67,28 +47,9 @@ export class MidyGM1 {
67
47
  setChannelAudioNodes(audioContext: any): {
68
48
  gainL: any;
69
49
  gainR: any;
50
+ merger: any;
70
51
  };
71
- createChannels(audioContext: any): {
72
- scheduledNotes: Map<any, any>;
73
- gainL: any;
74
- gainR: any;
75
- expression: number;
76
- modulation: number;
77
- sustainPedal: boolean;
78
- rpnMSB: number;
79
- rpnLSB: number;
80
- pitchBendRange: number;
81
- volume: number;
82
- pan: number;
83
- bank: number;
84
- dataMSB: number;
85
- dataLSB: number;
86
- program: number;
87
- pitchBend: number;
88
- fineTuning: number;
89
- coarseTuning: number;
90
- modulationDepthRange: number;
91
- }[];
52
+ createChannels(audioContext: any): any[];
92
53
  createNoteBuffer(instrumentKey: any, isSF3: any): Promise<any>;
93
54
  createNoteBufferNode(instrumentKey: any, isSF3: any): Promise<any>;
94
55
  convertToFloat32Array(uint8Array: any): Float32Array;
@@ -111,7 +72,7 @@ export class MidyGM1 {
111
72
  currentTime(): number;
112
73
  getActiveNotes(channel: any, time: any): Map<any, any>;
113
74
  getActiveNote(noteList: any, time: any): any;
114
- connectNoteEffects(channel: any, gainNode: any): void;
75
+ connectEffects(channel: any, gainNode: any): void;
115
76
  cbToRatio(cb: any): number;
116
77
  centToHz(cent: any): number;
117
78
  calcSemitoneOffset(channel: any): any;
@@ -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;IAE5C;;;;;;;;;;;;;;;;;;;;QAAiD;IAInD,4BAMC;IAED,mCASC;IAED,gDAMC;IAED,sCASC;IAED;;;MAYC;IAED;;;;;;;;;;;;;;;;;;;;QAUC;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,sDAGC;IAED,2BAEC;IAED,4BAEC;IAED,sCAGC;IAED,mFAGC;IAED,iDAiBC;IAED,iDAiCC;IAED,0DAmBC;IAED,wHA6BC;IAED,kGA6BC;IAED,0EAGC;IAED,sIAmDC;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;AAtjCD;IAOE,gFAKC;IAXD,kBAAa;IACb,cAAS;IACT,gBAAW;IACX,YAAO;IACP,gBAAW;IAGT,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,mBAAkC;CAErC"}
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;IAE5C,gBAAiD;IAInD,4BAMC;IAED,mCASC;IAED,gDAMC;IAED,sCASC;IAED;;;;MAcC;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,kDAGC;IAED,2BAEC;IAED,4BAEC;IAED,sCAGC;IAED,mFAGC;IAED,iDAiBC;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,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;AAnjCD;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
@@ -183,23 +183,23 @@ export class MidyGM1 {
183
183
  this.totalTime = this.calcTotalTime();
184
184
  }
185
185
  setChannelAudioNodes(audioContext) {
186
- const { gainLeft, gainRight } = this.panToGain(MidyGM1.channelSettings.pan);
186
+ const { gainLeft, gainRight } = this.panToGain(this.constructor.channelSettings.pan);
187
187
  const gainL = new GainNode(audioContext, { gain: gainLeft });
188
188
  const gainR = new GainNode(audioContext, { gain: gainRight });
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);
193
192
  return {
194
193
  gainL,
195
194
  gainR,
195
+ merger,
196
196
  };
197
197
  }
198
198
  createChannels(audioContext) {
199
199
  const channels = Array.from({ length: 16 }, () => {
200
200
  return {
201
- ...MidyGM1.channelSettings,
202
- ...MidyGM1.effectSettings,
201
+ ...this.constructor.channelSettings,
202
+ ...this.constructor.effectSettings,
203
203
  ...this.setChannelAudioNodes(audioContext),
204
204
  scheduledNotes: new Map(),
205
205
  };
@@ -491,9 +491,9 @@ export class MidyGM1 {
491
491
  }
492
492
  return noteList[0];
493
493
  }
494
- connectNoteEffects(channel, gainNode) {
495
- gainNode.connect(channel.gainL);
496
- gainNode.connect(channel.gainR);
494
+ connectEffects(channel, gainNode) {
495
+ gainNode.connect(channel.merger);
496
+ merger.connect(this.masterGain);
497
497
  }
498
498
  cbToRatio(cb) {
499
499
  return Math.pow(10, cb / 200);
@@ -560,7 +560,7 @@ export class MidyGM1 {
560
560
  startModulation(channel, note, time) {
561
561
  const { instrumentKey } = note;
562
562
  note.modLFOGain = new GainNode(this.audioContext, {
563
- gain: this.cbToRatio(instrumentKey.modLfoToVolume) * channel.modulation,
563
+ gain: this.cbToRatio(instrumentKey.modLfoToVolume + channel.modulation),
564
564
  });
565
565
  note.modLFO = new OscillatorNode(this.audioContext, {
566
566
  frequency: this.centToHz(instrumentKey.freqModLFO),
@@ -599,7 +599,7 @@ export class MidyGM1 {
599
599
  if (!instrumentKey)
600
600
  return;
601
601
  const note = await this.createNote(channel, instrumentKey, noteNumber, velocity, startTime, isSF3);
602
- this.connectNoteEffects(channel, note.gainNode);
602
+ this.connectEffects(channel, note.gainNode);
603
603
  const scheduledNotes = channel.scheduledNotes;
604
604
  if (scheduledNotes.has(noteNumber)) {
605
605
  scheduledNotes.get(noteNumber).push(note);
@@ -618,39 +618,41 @@ export class MidyGM1 {
618
618
  return;
619
619
  if (!channel.scheduledNotes.has(noteNumber))
620
620
  return;
621
- const targetNotes = channel.scheduledNotes.get(noteNumber);
622
- for (let i = 0; i < targetNotes.length; i++) {
623
- const targetNote = targetNotes[i];
624
- if (!targetNote)
621
+ const scheduledNotes = channel.scheduledNotes.get(noteNumber);
622
+ for (let i = 0; i < scheduledNotes.length; i++) {
623
+ const note = scheduledNotes[i];
624
+ if (!note)
625
625
  continue;
626
- if (targetNote.ending)
626
+ if (note.ending)
627
627
  continue;
628
- const { bufferSource, filterNode, gainNode, modLFO, modLFOGain, instrumentKey, } = targetNote;
629
628
  const velocityRate = (velocity + 127) / 127;
630
- const volEndTime = stopTime + instrumentKey.volRelease * velocityRate;
631
- gainNode.gain.cancelScheduledValues(stopTime);
632
- gainNode.gain.linearRampToValueAtTime(0, volEndTime);
629
+ const volEndTime = stopTime +
630
+ note.instrumentKey.volRelease * velocityRate;
631
+ note.gainNode.gain
632
+ .cancelScheduledValues(stopTime)
633
+ .linearRampToValueAtTime(0, volEndTime);
633
634
  const maxFreq = this.audioContext.sampleRate / 2;
634
- const baseFreq = this.centToHz(instrumentKey.initialFilterFc);
635
+ const baseFreq = this.centToHz(note.instrumentKey.initialFilterFc);
635
636
  const adjustedBaseFreq = Math.min(maxFreq, baseFreq);
636
- const modEndTime = stopTime + instrumentKey.modRelease * velocityRate;
637
- filterNode.frequency
637
+ const modEndTime = stopTime +
638
+ note.instrumentKey.modRelease * velocityRate;
639
+ note.filterNode.frequency
638
640
  .cancelScheduledValues(stopTime)
639
641
  .linearRampToValueAtTime(adjustedBaseFreq, modEndTime);
640
- targetNote.ending = true;
642
+ note.ending = true;
641
643
  this.scheduleTask(() => {
642
- bufferSource.loop = false;
644
+ note.bufferSource.loop = false;
643
645
  }, stopTime);
644
646
  return new Promise((resolve) => {
645
- bufferSource.onended = () => {
646
- targetNotes[i] = null;
647
- bufferSource.disconnect(0);
648
- filterNode.disconnect(0);
649
- gainNode.disconnect(0);
650
- if (modLFOGain)
651
- modLFOGain.disconnect(0);
652
- if (modLFO)
653
- modLFO.stop();
647
+ note.bufferSource.onended = () => {
648
+ scheduledNotes[i] = null;
649
+ note.bufferSource.disconnect();
650
+ note.filterNode.disconnect();
651
+ note.gainNode.disconnect();
652
+ if (note.modLFOGain)
653
+ note.modLFOGain.disconnect();
654
+ if (note.modLFO)
655
+ note.modLFO.stop();
654
656
  resolve();
655
657
  };
656
658
  bufferSource.stop(volEndTime);
@@ -950,11 +952,11 @@ export class MidyGM1 {
950
952
  case 2: // GM System Off
951
953
  break;
952
954
  default:
953
- console.warn(`Unsupported Exclusive Message ${data}`);
955
+ console.warn(`Unsupported Exclusive Message: ${data}`);
954
956
  }
955
957
  break;
956
958
  default:
957
- console.warn(`Unsupported Exclusive Message ${data}`);
959
+ console.warn(`Unsupported Exclusive Message: ${data}`);
958
960
  }
959
961
  }
960
962
  GM1SystemOn() {
@@ -973,11 +975,11 @@ export class MidyGM1 {
973
975
  case 1:
974
976
  return this.handleMasterVolumeSysEx(data);
975
977
  default:
976
- console.warn(`Unsupported Exclusive Message ${data}`);
978
+ console.warn(`Unsupported Exclusive Message: ${data}`);
977
979
  }
978
980
  break;
979
981
  default:
980
- console.warn(`Unsupported Exclusive Message ${data}`);
982
+ console.warn(`Unsupported Exclusive Message: ${data}`);
981
983
  }
982
984
  }
983
985
  handleMasterVolumeSysEx(data) {
@@ -995,7 +997,7 @@ export class MidyGM1 {
995
997
  }
996
998
  }
997
999
  handleExclusiveMessage(data) {
998
- console.warn(`Unsupported Exclusive Message ${data}`);
1000
+ console.warn(`Unsupported Exclusive Message: ${data}`);
999
1001
  }
1000
1002
  handleSysEx(data) {
1001
1003
  switch (data[0]) {
package/esm/midy-GM2.d.ts CHANGED
@@ -4,8 +4,8 @@ export class MidyGM2 {
4
4
  volume: number;
5
5
  pan: number;
6
6
  portamentoTime: number;
7
- reverb: number;
8
- chorus: number;
7
+ reverbSendLevel: number;
8
+ chorusSendLevel: number;
9
9
  bank: number;
10
10
  bankMSB: number;
11
11
  bankLSB: number;
@@ -37,12 +37,26 @@ export class MidyGM2 {
37
37
  lfoFilterDepth: number;
38
38
  lfoAmplitudeDepth: number;
39
39
  };
40
- constructor(audioContext: any);
40
+ constructor(audioContext: any, options?: {
41
+ reverbAlgorithm: (audioContext: any) => {
42
+ input: any;
43
+ output: any;
44
+ };
45
+ });
41
46
  ticksPerBeat: number;
42
47
  totalTime: number;
43
- reverbFactor: number;
44
48
  masterFineTuning: number;
45
49
  masterCoarseTuning: number;
50
+ reverb: {
51
+ time: number;
52
+ feedback: number;
53
+ };
54
+ chorus: {
55
+ modRate: number;
56
+ modDepth: number;
57
+ feedback: number;
58
+ sendToReverb: number;
59
+ };
46
60
  mono: boolean;
47
61
  omni: boolean;
48
62
  noteCheckInterval: number;
@@ -60,58 +74,21 @@ export class MidyGM2 {
60
74
  timeline: any[];
61
75
  instruments: any[];
62
76
  notePromises: any[];
63
- audioContext: any;
64
- masterGain: any;
65
- channels: {
66
- scheduledNotes: Map<any, any>;
67
- sostenutoNotes: Map<any, any>;
68
- channelPressure: {
69
- pitchControl: number;
70
- filterCutoffControl: number;
71
- amplitudeControl: number;
72
- lfoPitchDepth: number;
73
- lfoFilterDepth: number;
74
- lfoAmplitudeDepth: number;
77
+ defaultOptions: {
78
+ reverbAlgorithm: (audioContext: any) => {
79
+ input: any;
80
+ output: any;
75
81
  };
76
- gainL: any;
77
- gainR: any;
78
- reverbEffect: {
79
- convolverNode: any;
80
- dryGain: any;
81
- wetGain: any;
82
- };
83
- chorusEffect: {
84
- lfo: any;
85
- lfoGain: any;
86
- delayNodes: any[];
87
- chorusGains: any[];
82
+ };
83
+ audioContext: any;
84
+ options: {
85
+ reverbAlgorithm: (audioContext: any) => {
86
+ input: any;
87
+ output: any;
88
88
  };
89
- expression: number;
90
- modulation: number;
91
- sustainPedal: boolean;
92
- portamento: boolean;
93
- sostenutoPedal: boolean;
94
- softPedal: number;
95
- rpnMSB: number;
96
- rpnLSB: number;
97
- pitchBendRange: number;
98
- currentBufferSource: null;
99
- volume: number;
100
- pan: number;
101
- portamentoTime: number;
102
- reverb: number;
103
- chorus: number;
104
- bank: number;
105
- bankMSB: number;
106
- bankLSB: number;
107
- dataMSB: number;
108
- dataLSB: number;
109
- program: number;
110
- pitchBend: number;
111
- fineTuning: number;
112
- coarseTuning: number;
113
- modulationDepthRange: number;
114
- }[];
89
+ };
90
+ masterGain: any;
91
+ channels: any[];
115
92
  initSoundFontTable(): any[];
116
93
  addSoundFont(soundFont: any): void;
117
94
  loadSoundFont(soundFontUrl: any): Promise<void>;
@@ -119,68 +96,20 @@ export class MidyGM2 {
119
96
  setChannelAudioNodes(audioContext: any): {
120
97
  gainL: any;
121
98
  gainR: any;
99
+ merger: any;
122
100
  reverbEffect: {
123
- convolverNode: any;
124
- dryGain: any;
125
- wetGain: any;
101
+ input: any;
102
+ output: any;
126
103
  };
127
104
  chorusEffect: {
128
105
  lfo: any;
129
106
  lfoGain: any;
130
107
  delayNodes: any[];
131
108
  chorusGains: any[];
109
+ output: any;
132
110
  };
133
111
  };
134
- createChannels(audioContext: any): {
135
- scheduledNotes: Map<any, any>;
136
- sostenutoNotes: Map<any, any>;
137
- channelPressure: {
138
- pitchControl: number;
139
- filterCutoffControl: number;
140
- amplitudeControl: number;
141
- lfoPitchDepth: number;
142
- lfoFilterDepth: number;
143
- lfoAmplitudeDepth: number;
144
- };
145
- gainL: any;
146
- gainR: any;
147
- reverbEffect: {
148
- convolverNode: any;
149
- dryGain: any;
150
- wetGain: any;
151
- };
152
- chorusEffect: {
153
- lfo: any;
154
- lfoGain: any;
155
- delayNodes: any[];
156
- chorusGains: any[];
157
- };
158
- expression: number;
159
- modulation: number;
160
- sustainPedal: boolean;
161
- portamento: boolean;
162
- sostenutoPedal: boolean;
163
- softPedal: number;
164
- rpnMSB: number;
165
- rpnLSB: number;
166
- pitchBendRange: number;
167
- currentBufferSource: null;
168
- volume: number;
169
- pan: number;
170
- portamentoTime: number;
171
- reverb: number;
172
- chorus: number;
173
- bank: number;
174
- bankMSB: number;
175
- bankLSB: number;
176
- dataMSB: number;
177
- dataLSB: number;
178
- program: number;
179
- pitchBend: number;
180
- fineTuning: number;
181
- coarseTuning: number;
182
- modulationDepthRange: number;
183
- }[];
112
+ createChannels(audioContext: any): any[];
184
113
  createNoteBuffer(instrumentKey: any, isSF3: any): Promise<any>;
185
114
  createNoteBufferNode(instrumentKey: any, isSF3: any): Promise<any>;
186
115
  convertToFloat32Array(uint8Array: any): Float32Array;
@@ -203,18 +132,27 @@ export class MidyGM2 {
203
132
  currentTime(): number;
204
133
  getActiveNotes(channel: any, time: any): Map<any, any>;
205
134
  getActiveNote(noteList: any, time: any): any;
206
- createReverbEffect(audioContext: any, options?: {}): {
135
+ createConvolutionReverbImpulse(audioContext: any, decay: any, preDecay: any): any;
136
+ createConvolutionReverb(audioContext: any, impulse: any): {
137
+ input: any;
138
+ output: any;
207
139
  convolverNode: any;
208
- dryGain: any;
209
- wetGain: any;
140
+ };
141
+ createCombFilter(audioContext: any, input: any, delay: any, feedback: any): any;
142
+ createAllpassFilter(audioContext: any, input: any, delay: any, feedback: any): any;
143
+ generateDistributedArray(center: any, count: any, varianceRatio?: number, randomness?: number): any[];
144
+ createSchroederReverb(audioContext: any, combDelays: any, combFeedbacks: any, allpassDelays: any, allpassFeedbacks: any): {
145
+ input: any;
146
+ output: any;
210
147
  };
211
148
  createChorusEffect(audioContext: any, options?: {}): {
212
149
  lfo: any;
213
150
  lfoGain: any;
214
151
  delayNodes: any[];
215
152
  chorusGains: any[];
153
+ output: any;
216
154
  };
217
- connectNoteEffects(channel: any, gainNode: any): void;
155
+ connectEffects(channel: any, gainNode: any): void;
218
156
  cbToRatio(cb: any): number;
219
157
  centToHz(cent: any): number;
220
158
  calcSemitoneOffset(channel: any): any;
@@ -252,8 +190,8 @@ export class MidyGM2 {
252
190
  updateChannelGain(channel: any): void;
253
191
  setSustainPedal(channelNumber: any, value: any): void;
254
192
  setPortamento(channelNumber: any, value: any): void;
255
- setReverbSendLevel(channelNumber: any, reverb: any): void;
256
- setChorusSendLevel(channelNumber: any, chorus: any): void;
193
+ setReverbSendLevel(channelNumber: any, reverbSendLevel: any): void;
194
+ setChorusSendLevel(channelNumber: any, chorusSendLevel: any): void;
257
195
  setSostenutoPedal(channelNumber: any, value: any): void;
258
196
  setSoftPedal(channelNumber: any, softPedal: any): void;
259
197
  limitData(channel: any, minMSB: any, maxMSB: any, minLSB: any, maxLSB: any): void;
@@ -288,6 +226,19 @@ export class MidyGM2 {
288
226
  setMasterFineTuning(fineTuning: any): void;
289
227
  handleMasterCoarseTuningSysEx(data: any): void;
290
228
  setMasterCoarseTuning(coarseTuning: any): void;
229
+ handleGlobalParameterControl(data: any): void;
230
+ handleReverbParameter(data: any): void;
231
+ setReverbType(type: any): void;
232
+ getReverbTimeFromType(type: any): number | undefined;
233
+ setReverbTime(value: any): void;
234
+ getReverbTime(value: any): number;
235
+ calcDelay(rt60: any, feedback: any): number;
236
+ handleChorusParameter(data: any): void;
237
+ setChorusType(type: any): void;
238
+ setChorusModRate(value: any): void;
239
+ setChorusModDepth(value: any): void;
240
+ setChorusFeedback(value: any): void;
241
+ setChorusSendToReverb(value: any): void;
291
242
  handleExclusiveMessage(data: any): void;
292
243
  handleSysEx(data: any): void;
293
244
  scheduleTask(callback: any, startTime: any): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"AAuBA;IAwBE;;;;;;;;;;;;;;;;;MAiBE;IAEF;;;;;;;;;;;MAWE;IAEF;;;;;;;MAOE;IAEF,+BAMC;IAtED,qBAAmB;IACnB,kBAAc;IACd,qBAAmB;IACnB,yBAAqB;IACrB,2BAAuB;IACvB,cAAa;IACb,cAAa;IACb,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;IA4ChB,kBAAgC;IAChC,gBAA4C;IAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAiD;IAInD,4BAMC;IAED,mCASC;IAED,gDAMC;IAED,sCASC;IAED;;;;;;;;;;;;;;MAqBC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAcC;IAED,+DAyBC;IAED,mEAWC;IAED,qDAOC;IAED,2EAkDC;IAED,mCAOC;IAED,0BA+CC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAgGC;IAED,4BAsBC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,uDASC;IAED,6CAQC;IAED;;;;MAoCC;IAED;;;;;MAqCC;IAED,sDA6BC;IAED,2BAEC;IAED,4BAEC;IAED,sCAKC;IAED,mFAGC;IAED,iDAiBC;IAED,iDAiCC;IAED,0DAmBC;IAED,wHAiCC;IAED,gDAQC;IAED,kGAgCC;IAED,0EAGC;IAED,sIAoDC;IAED,0FAGC;IAED,kEAeC;IAED,oEAYC;IAED,wFAmBC;IAED,4DAIC;IAED,+DAcC;IAED,qEAGC;IAED,uDAOC;IAED,mFAuDC;IAED,+CAEC;IAED,qCAcC;IAED,yDAIC;IAED,iEAEC;IAED,iDAIC;IAED;;;MAMC;IAED,2CAIC;IAED,yDAIC;IAED,+CAEC;IAED,mDAGC;IAED,sCAUC;IAED,sDAMC;IAED,oDAEC;IAED,0DASC;IAED,0DAIC;IAED,wDAWC;IAED,uDAGC;IAED,kFAeC;IAED,2DAMC;IAED,oCAqBC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,oDAUC;IAED,kDAKC;IAED,iEAOC;IAED,8CAKC;IAED,yDAMC;IAED,gDAKC;IAED,6DAMC;IAED,wDAKC;IAED,6EAKC;IAED,uCAoBC;IAED,8CAEC;IAED,uCAoBC;IAED,gBAEC;IAED,eAEC;IAED,eAEC;IAED,eAEC;IAED,4DAmBC;IAED,oBAQC;IAED,oBAQC;IAED,yDAgDC;IAED,yCAGC;IAED,mCAQC;IAED,6CAGC;IAED,2CAMC;IAED,+CAGC;IAED,+CAMC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AAr9CD;IASE,gFAKC;IAbD,kBAAa;IACb,cAAS;IACT,gBAAW;IACX,YAAO;IACP,gBAAW;IACX,YAAO;IACP,gBAAW;IAGT,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,mBAAkC;CAErC"}
1
+ {"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"AAuBA;IAiCE;;;;;;;;;;;;;;;;;MAiBE;IAEF;;;;;;;;;;;MAWE;IAEF;;;;;;;MAOE;IAgCF;;;;;OAOC;IA9GD,qBAAmB;IACnB,kBAAc;IACd,yBAAqB;IACrB,2BAAuB;IACvB;;;MAGE;IACF;;;;;MAKE;IACF,cAAa;IACb,cAAa;IACb,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;IA2ClB;;;;;MA4BE;IAGA,kBAAgC;IAChC;;;;;MAAqD;IACrD,gBAA4C;IAE5C,gBAAiD;IAInD,4BAMC;IAED,mCASC;IAED,gDAMC;IAED,sCASC;IAED;;;;;;;;;;;;;;;MAkBC;IAED,yCAcC;IAED,+DAyBC;IAED,mEAWC;IAED,qDAOC;IAED,2EAkDC;IAED,mCAOC;IAED,0BA+CC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAgGC;IAED,4BAsBC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,uDASC;IAED,6CAQC;IAED,kFAuBC;IAED;;;;MAWC;IAED,gFAUC;IAED,mFAYC;IAED,sGAcC;IAID;;;MAiCC;IAED;;;;;;MAoCC;IAED,kDAsBC;IAED,2BAEC;IAED,4BAEC;IAED,sCAKC;IAED,mFAGC;IAED,iDAiBC;IAED,iDAiCC;IAED,0DAmBC;IAED,wHAiCC;IAED,gDAQC;IAED,kGAgCC;IAED,0EAGC;IAED,sIAiDC;IAED,0FAGC;IAED,kEAeC;IAED,oEAYC;IAED,wFAmBC;IAED,4DAIC;IAED,+DAcC;IAED,qEAGC;IAED,uDAOC;IAED,mFAuDC;IAED,+CAEC;IAED,qCAcC;IAED,yDAIC;IAED,iEAEC;IAED,iDAIC;IAED;;;MAMC;IAED,2CAIC;IAED,yDAIC;IAED,+CAEC;IAED,mDAGC;IAED,sCAUC;IAED,sDAMC;IAGD,oDAEC;IAED,mEAOC;IAED,mEAIC;IAED,wDAWC;IAED,uDAGC;IAED,kFAeC;IAED,2DAMC;IAED,oCAqBC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,oDAUC;IAED,kDAKC;IAED,iEAOC;IAED,8CAKC;IAED,yDAMC;IAED,gDAKC;IAED,6DAMC;IAED,wDAKC;IAED,6EAKC;IAED,uCAoBC;IAED,8CAEC;IAED,uCAoBC;IAED,gBAEC;IAED,eAEC;IAED,eAEC;IAED,eAEC;IAED,4DAmBC;IAED,oBAQC;IAED,oBAQC;IAED,yDAiDC;IAED,yCAGC;IAED,mCAQC;IAED,6CAGC;IAED,2CAMC;IAED,+CAGC;IAED,+CAMC;IAED,8CAeC;IAED,uCAOC;IAED,+BAOC;IAED,qDAiBC;IAED,gCAMC;IAED,kCAEC;IA2BD,4CAEC;IAED,uCAaC;IAED,+BAEC;IAED,mCAEC;IAED,oCAEC;IAED,oCAEC;IAED,wCAEC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AAhsDD;IASE,gFAKC;IAbD,kBAAa;IACb,cAAS;IACT,gBAAW;IACX,YAAO;IACP,gBAAW;IACX,YAAO;IACP,gBAAW;IAGT,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,mBAAkC;CAErC"}