@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.
@@ -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"}
@@ -186,23 +186,23 @@ class MidyGM1 {
186
186
  this.totalTime = this.calcTotalTime();
187
187
  }
188
188
  setChannelAudioNodes(audioContext) {
189
- const { gainLeft, gainRight } = this.panToGain(MidyGM1.channelSettings.pan);
189
+ const { gainLeft, gainRight } = this.panToGain(this.constructor.channelSettings.pan);
190
190
  const gainL = new GainNode(audioContext, { gain: gainLeft });
191
191
  const gainR = new GainNode(audioContext, { gain: gainRight });
192
192
  const merger = new ChannelMergerNode(audioContext, { numberOfInputs: 2 });
193
193
  gainL.connect(merger, 0, 0);
194
194
  gainR.connect(merger, 0, 1);
195
- merger.connect(this.masterGain);
196
195
  return {
197
196
  gainL,
198
197
  gainR,
198
+ merger,
199
199
  };
200
200
  }
201
201
  createChannels(audioContext) {
202
202
  const channels = Array.from({ length: 16 }, () => {
203
203
  return {
204
- ...MidyGM1.channelSettings,
205
- ...MidyGM1.effectSettings,
204
+ ...this.constructor.channelSettings,
205
+ ...this.constructor.effectSettings,
206
206
  ...this.setChannelAudioNodes(audioContext),
207
207
  scheduledNotes: new Map(),
208
208
  };
@@ -494,9 +494,9 @@ class MidyGM1 {
494
494
  }
495
495
  return noteList[0];
496
496
  }
497
- connectNoteEffects(channel, gainNode) {
498
- gainNode.connect(channel.gainL);
499
- gainNode.connect(channel.gainR);
497
+ connectEffects(channel, gainNode) {
498
+ gainNode.connect(channel.merger);
499
+ merger.connect(this.masterGain);
500
500
  }
501
501
  cbToRatio(cb) {
502
502
  return Math.pow(10, cb / 200);
@@ -563,7 +563,7 @@ class MidyGM1 {
563
563
  startModulation(channel, note, time) {
564
564
  const { instrumentKey } = note;
565
565
  note.modLFOGain = new GainNode(this.audioContext, {
566
- gain: this.cbToRatio(instrumentKey.modLfoToVolume) * channel.modulation,
566
+ gain: this.cbToRatio(instrumentKey.modLfoToVolume + channel.modulation),
567
567
  });
568
568
  note.modLFO = new OscillatorNode(this.audioContext, {
569
569
  frequency: this.centToHz(instrumentKey.freqModLFO),
@@ -602,7 +602,7 @@ class MidyGM1 {
602
602
  if (!instrumentKey)
603
603
  return;
604
604
  const note = await this.createNote(channel, instrumentKey, noteNumber, velocity, startTime, isSF3);
605
- this.connectNoteEffects(channel, note.gainNode);
605
+ this.connectEffects(channel, note.gainNode);
606
606
  const scheduledNotes = channel.scheduledNotes;
607
607
  if (scheduledNotes.has(noteNumber)) {
608
608
  scheduledNotes.get(noteNumber).push(note);
@@ -621,39 +621,41 @@ class MidyGM1 {
621
621
  return;
622
622
  if (!channel.scheduledNotes.has(noteNumber))
623
623
  return;
624
- const targetNotes = channel.scheduledNotes.get(noteNumber);
625
- for (let i = 0; i < targetNotes.length; i++) {
626
- const targetNote = targetNotes[i];
627
- if (!targetNote)
624
+ const scheduledNotes = channel.scheduledNotes.get(noteNumber);
625
+ for (let i = 0; i < scheduledNotes.length; i++) {
626
+ const note = scheduledNotes[i];
627
+ if (!note)
628
628
  continue;
629
- if (targetNote.ending)
629
+ if (note.ending)
630
630
  continue;
631
- const { bufferSource, filterNode, gainNode, modLFO, modLFOGain, instrumentKey, } = targetNote;
632
631
  const velocityRate = (velocity + 127) / 127;
633
- const volEndTime = stopTime + instrumentKey.volRelease * velocityRate;
634
- gainNode.gain.cancelScheduledValues(stopTime);
635
- gainNode.gain.linearRampToValueAtTime(0, volEndTime);
632
+ const volEndTime = stopTime +
633
+ note.instrumentKey.volRelease * velocityRate;
634
+ note.gainNode.gain
635
+ .cancelScheduledValues(stopTime)
636
+ .linearRampToValueAtTime(0, volEndTime);
636
637
  const maxFreq = this.audioContext.sampleRate / 2;
637
- const baseFreq = this.centToHz(instrumentKey.initialFilterFc);
638
+ const baseFreq = this.centToHz(note.instrumentKey.initialFilterFc);
638
639
  const adjustedBaseFreq = Math.min(maxFreq, baseFreq);
639
- const modEndTime = stopTime + instrumentKey.modRelease * velocityRate;
640
- filterNode.frequency
640
+ const modEndTime = stopTime +
641
+ note.instrumentKey.modRelease * velocityRate;
642
+ note.filterNode.frequency
641
643
  .cancelScheduledValues(stopTime)
642
644
  .linearRampToValueAtTime(adjustedBaseFreq, modEndTime);
643
- targetNote.ending = true;
645
+ note.ending = true;
644
646
  this.scheduleTask(() => {
645
- bufferSource.loop = false;
647
+ note.bufferSource.loop = false;
646
648
  }, stopTime);
647
649
  return new Promise((resolve) => {
648
- bufferSource.onended = () => {
649
- targetNotes[i] = null;
650
- bufferSource.disconnect(0);
651
- filterNode.disconnect(0);
652
- gainNode.disconnect(0);
653
- if (modLFOGain)
654
- modLFOGain.disconnect(0);
655
- if (modLFO)
656
- modLFO.stop();
650
+ note.bufferSource.onended = () => {
651
+ scheduledNotes[i] = null;
652
+ note.bufferSource.disconnect();
653
+ note.filterNode.disconnect();
654
+ note.gainNode.disconnect();
655
+ if (note.modLFOGain)
656
+ note.modLFOGain.disconnect();
657
+ if (note.modLFO)
658
+ note.modLFO.stop();
657
659
  resolve();
658
660
  };
659
661
  bufferSource.stop(volEndTime);
@@ -953,11 +955,11 @@ class MidyGM1 {
953
955
  case 2: // GM System Off
954
956
  break;
955
957
  default:
956
- console.warn(`Unsupported Exclusive Message ${data}`);
958
+ console.warn(`Unsupported Exclusive Message: ${data}`);
957
959
  }
958
960
  break;
959
961
  default:
960
- console.warn(`Unsupported Exclusive Message ${data}`);
962
+ console.warn(`Unsupported Exclusive Message: ${data}`);
961
963
  }
962
964
  }
963
965
  GM1SystemOn() {
@@ -976,11 +978,11 @@ class MidyGM1 {
976
978
  case 1:
977
979
  return this.handleMasterVolumeSysEx(data);
978
980
  default:
979
- console.warn(`Unsupported Exclusive Message ${data}`);
981
+ console.warn(`Unsupported Exclusive Message: ${data}`);
980
982
  }
981
983
  break;
982
984
  default:
983
- console.warn(`Unsupported Exclusive Message ${data}`);
985
+ console.warn(`Unsupported Exclusive Message: ${data}`);
984
986
  }
985
987
  }
986
988
  handleMasterVolumeSysEx(data) {
@@ -998,7 +1000,7 @@ class MidyGM1 {
998
1000
  }
999
1001
  }
1000
1002
  handleExclusiveMessage(data) {
1001
- console.warn(`Unsupported Exclusive Message ${data}`);
1003
+ console.warn(`Unsupported Exclusive Message: ${data}`);
1002
1004
  }
1003
1005
  handleSysEx(data) {
1004
1006
  switch (data[0]) {
@@ -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"}