@marmooo/midy 0.3.2 → 0.3.3
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 +8 -7
- package/esm/midy-GM1.d.ts.map +1 -1
- package/esm/midy-GM1.js +67 -73
- package/esm/midy-GM2.d.ts +13 -11
- package/esm/midy-GM2.d.ts.map +1 -1
- package/esm/midy-GM2.js +124 -136
- package/esm/midy-GMLite.d.ts +9 -8
- package/esm/midy-GMLite.d.ts.map +1 -1
- package/esm/midy-GMLite.js +77 -91
- package/esm/midy.d.ts +13 -12
- package/esm/midy.d.ts.map +1 -1
- package/esm/midy.js +123 -140
- package/package.json +1 -1
- package/script/midy-GM1.d.ts +8 -7
- package/script/midy-GM1.d.ts.map +1 -1
- package/script/midy-GM1.js +67 -73
- package/script/midy-GM2.d.ts +13 -11
- package/script/midy-GM2.d.ts.map +1 -1
- package/script/midy-GM2.js +124 -136
- package/script/midy-GMLite.d.ts +9 -8
- package/script/midy-GMLite.d.ts.map +1 -1
- package/script/midy-GMLite.js +77 -91
- package/script/midy.d.ts +13 -12
- package/script/midy.d.ts.map +1 -1
- package/script/midy.js +123 -140
package/esm/midy-GMLite.js
CHANGED
|
@@ -8,6 +8,12 @@ class Note {
|
|
|
8
8
|
writable: true,
|
|
9
9
|
value: -1
|
|
10
10
|
});
|
|
11
|
+
Object.defineProperty(this, "ending", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
configurable: true,
|
|
14
|
+
writable: true,
|
|
15
|
+
value: false
|
|
16
|
+
});
|
|
11
17
|
Object.defineProperty(this, "bufferSource", {
|
|
12
18
|
enumerable: true,
|
|
13
19
|
configurable: true,
|
|
@@ -308,17 +314,37 @@ export class MidyGMLite {
|
|
|
308
314
|
}
|
|
309
315
|
}
|
|
310
316
|
}
|
|
311
|
-
async loadSoundFont(
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
317
|
+
async loadSoundFont(input) {
|
|
318
|
+
let uint8Array;
|
|
319
|
+
if (typeof input === "string") {
|
|
320
|
+
const response = await fetch(input);
|
|
321
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
322
|
+
uint8Array = new Uint8Array(arrayBuffer);
|
|
323
|
+
}
|
|
324
|
+
else if (input instanceof Uint8Array) {
|
|
325
|
+
uint8Array = input;
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
throw new TypeError("input must be a URL string or Uint8Array");
|
|
329
|
+
}
|
|
330
|
+
const parsed = parse(uint8Array);
|
|
315
331
|
const soundFont = new SoundFont(parsed);
|
|
316
332
|
this.addSoundFont(soundFont);
|
|
317
333
|
}
|
|
318
|
-
async loadMIDI(
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
334
|
+
async loadMIDI(input) {
|
|
335
|
+
let uint8Array;
|
|
336
|
+
if (typeof input === "string") {
|
|
337
|
+
const response = await fetch(input);
|
|
338
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
339
|
+
uint8Array = new Uint8Array(arrayBuffer);
|
|
340
|
+
}
|
|
341
|
+
else if (input instanceof Uint8Array) {
|
|
342
|
+
uint8Array = input;
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
throw new TypeError("input must be a URL string or Uint8Array");
|
|
346
|
+
}
|
|
347
|
+
const midi = parseMidi(uint8Array);
|
|
322
348
|
this.ticksPerBeat = midi.header.ticksPerBeat;
|
|
323
349
|
const midiData = this.extractMidiData(midi);
|
|
324
350
|
this.instruments = midiData.instruments;
|
|
@@ -382,10 +408,12 @@ export class MidyGMLite {
|
|
|
382
408
|
return audioBuffer;
|
|
383
409
|
}
|
|
384
410
|
}
|
|
385
|
-
createBufferSource(voiceParams, audioBuffer) {
|
|
411
|
+
createBufferSource(channel, voiceParams, audioBuffer) {
|
|
386
412
|
const bufferSource = new AudioBufferSourceNode(this.audioContext);
|
|
387
413
|
bufferSource.buffer = audioBuffer;
|
|
388
414
|
bufferSource.loop = voiceParams.sampleModes % 2 !== 0;
|
|
415
|
+
if (channel.isDrum)
|
|
416
|
+
bufferSource.loop = false;
|
|
389
417
|
if (bufferSource.loop) {
|
|
390
418
|
bufferSource.loopStart = voiceParams.loopStart / voiceParams.sampleRate;
|
|
391
419
|
bufferSource.loopEnd = voiceParams.loopEnd / voiceParams.sampleRate;
|
|
@@ -400,12 +428,13 @@ export class MidyGMLite {
|
|
|
400
428
|
const delay = this.startDelay - resumeTime;
|
|
401
429
|
const startTime = event.startTime + delay;
|
|
402
430
|
switch (event.type) {
|
|
403
|
-
case "noteOn":
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
431
|
+
case "noteOn":
|
|
432
|
+
await this.scheduleNoteOn(event.channel, event.noteNumber, event.velocity, startTime);
|
|
433
|
+
break;
|
|
434
|
+
case "noteOff": {
|
|
435
|
+
const notePromise = this.scheduleNoteOff(event.channel, event.noteNumber, event.velocity, startTime, false);
|
|
436
|
+
if (notePromise)
|
|
437
|
+
this.notePromises.push(notePromise);
|
|
409
438
|
break;
|
|
410
439
|
}
|
|
411
440
|
case "controller":
|
|
@@ -507,6 +536,7 @@ export class MidyGMLite {
|
|
|
507
536
|
return `${programNumber}:${noteNumber}:${velocity}`;
|
|
508
537
|
}
|
|
509
538
|
extractMidiData(midi) {
|
|
539
|
+
this.audioBufferCounter.clear();
|
|
510
540
|
const instruments = new Set();
|
|
511
541
|
const timeline = [];
|
|
512
542
|
const tmpChannels = new Array(this.channels.length);
|
|
@@ -570,38 +600,13 @@ export class MidyGMLite {
|
|
|
570
600
|
prevTempoTicks = event.ticks;
|
|
571
601
|
}
|
|
572
602
|
}
|
|
573
|
-
const activeNotes = new Array(this.channels.length * 128);
|
|
574
|
-
for (let i = 0; i < activeNotes.length; i++) {
|
|
575
|
-
activeNotes[i] = [];
|
|
576
|
-
}
|
|
577
|
-
for (let i = 0; i < timeline.length; i++) {
|
|
578
|
-
const event = timeline[i];
|
|
579
|
-
switch (event.type) {
|
|
580
|
-
case "noteOn": {
|
|
581
|
-
const index = event.channel * 128 + event.noteNumber;
|
|
582
|
-
activeNotes[index].push(event);
|
|
583
|
-
break;
|
|
584
|
-
}
|
|
585
|
-
case "noteOff": {
|
|
586
|
-
const index = event.channel * 128 + event.noteNumber;
|
|
587
|
-
const noteOn = activeNotes[index].pop();
|
|
588
|
-
if (noteOn) {
|
|
589
|
-
noteOn.noteOffEvent = event;
|
|
590
|
-
}
|
|
591
|
-
else {
|
|
592
|
-
const eventString = JSON.stringify(event, null, 2);
|
|
593
|
-
console.warn(`noteOff without matching noteOn: ${eventString}`);
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
603
|
return { instruments, timeline };
|
|
599
604
|
}
|
|
600
605
|
stopActiveNotes(channelNumber, velocity, force, scheduleTime) {
|
|
601
606
|
const channel = this.channels[channelNumber];
|
|
602
607
|
const promises = [];
|
|
603
608
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
604
|
-
const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force
|
|
609
|
+
const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force);
|
|
605
610
|
this.notePromises.push(promise);
|
|
606
611
|
promises.push(promise);
|
|
607
612
|
});
|
|
@@ -611,7 +616,7 @@ export class MidyGMLite {
|
|
|
611
616
|
const channel = this.channels[channelNumber];
|
|
612
617
|
const promises = [];
|
|
613
618
|
this.processScheduledNotes(channel, (note) => {
|
|
614
|
-
const promise = this.scheduleNoteOff(channelNumber, note, velocity, scheduleTime, force);
|
|
619
|
+
const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force);
|
|
615
620
|
this.notePromises.push(promise);
|
|
616
621
|
promises.push(promise);
|
|
617
622
|
});
|
|
@@ -688,9 +693,6 @@ export class MidyGMLite {
|
|
|
688
693
|
continue;
|
|
689
694
|
if (note.ending)
|
|
690
695
|
continue;
|
|
691
|
-
const noteOffEvent = note.noteOffEvent;
|
|
692
|
-
if (noteOffEvent && noteOffEvent.startTime < scheduleTime)
|
|
693
|
-
continue;
|
|
694
696
|
if (scheduleTime < note.startTime)
|
|
695
697
|
continue;
|
|
696
698
|
callback(note);
|
|
@@ -832,7 +834,7 @@ export class MidyGMLite {
|
|
|
832
834
|
const voiceParams = voice.getAllParams(controllerState);
|
|
833
835
|
const note = new Note(noteNumber, velocity, startTime, voice, voiceParams);
|
|
834
836
|
const audioBuffer = await this.getAudioBuffer(channel.programNumber, noteNumber, velocity, voiceParams, isSF3);
|
|
835
|
-
note.bufferSource = this.createBufferSource(voiceParams, audioBuffer);
|
|
837
|
+
note.bufferSource = this.createBufferSource(channel, voiceParams, audioBuffer);
|
|
836
838
|
note.volumeEnvelopeNode = new GainNode(this.audioContext);
|
|
837
839
|
note.filterNode = new BiquadFilterNode(this.audioContext, {
|
|
838
840
|
type: "lowpass",
|
|
@@ -858,7 +860,7 @@ export class MidyGMLite {
|
|
|
858
860
|
if (prev) {
|
|
859
861
|
const [prevNote, prevChannelNumber] = prev;
|
|
860
862
|
if (prevNote && !prevNote.ending) {
|
|
861
|
-
this.scheduleNoteOff(prevChannelNumber, prevNote, 0, // velocity,
|
|
863
|
+
this.scheduleNoteOff(prevChannelNumber, prevNote.noteNumber, 0, // velocity,
|
|
862
864
|
startTime, true);
|
|
863
865
|
}
|
|
864
866
|
}
|
|
@@ -874,7 +876,7 @@ export class MidyGMLite {
|
|
|
874
876
|
const index = drumExclusiveClass * this.channels.length + channelNumber;
|
|
875
877
|
const prevNote = this.drumExclusiveClassNotes[index];
|
|
876
878
|
if (prevNote && !prevNote.ending) {
|
|
877
|
-
this.scheduleNoteOff(channelNumber, prevNote, 0, // velocity,
|
|
879
|
+
this.scheduleNoteOff(channelNumber, prevNote.noteNumber, 0, // velocity,
|
|
878
880
|
startTime, true);
|
|
879
881
|
}
|
|
880
882
|
this.drumExclusiveClassNotes[index] = note;
|
|
@@ -902,24 +904,6 @@ export class MidyGMLite {
|
|
|
902
904
|
const scheduledNotes = channel.scheduledNotes;
|
|
903
905
|
note.index = scheduledNotes.length;
|
|
904
906
|
scheduledNotes.push(note);
|
|
905
|
-
if (channel.isDrum) {
|
|
906
|
-
const stopTime = startTime + note.bufferSource.buffer.duration;
|
|
907
|
-
const promise = new Promise((resolve) => {
|
|
908
|
-
note.bufferSource.onended = () => {
|
|
909
|
-
scheduledNotes[note.index] = undefined;
|
|
910
|
-
this.disconnectNote(note);
|
|
911
|
-
resolve();
|
|
912
|
-
};
|
|
913
|
-
note.bufferSource.stop(stopTime);
|
|
914
|
-
});
|
|
915
|
-
this.notePromises.push(promise);
|
|
916
|
-
}
|
|
917
|
-
else if (noteOffEvent) {
|
|
918
|
-
const notePromise = this.scheduleNoteOff(channelNumber, note, noteOffEvent.velocity, noteOffEvent.startTime, false);
|
|
919
|
-
if (notePromise) {
|
|
920
|
-
this.notePromises.push(notePromise);
|
|
921
|
-
}
|
|
922
|
-
}
|
|
923
907
|
}
|
|
924
908
|
noteOn(channelNumber, noteNumber, velocity, scheduleTime) {
|
|
925
909
|
scheduleTime ??= this.audioContext.currentTime;
|
|
@@ -935,36 +919,40 @@ export class MidyGMLite {
|
|
|
935
919
|
note.modulationLFO.stop();
|
|
936
920
|
}
|
|
937
921
|
}
|
|
938
|
-
|
|
922
|
+
releaseNote(channel, note, endTime) {
|
|
923
|
+
const volRelease = endTime + note.voiceParams.volRelease;
|
|
924
|
+
const modRelease = endTime + note.voiceParams.modRelease;
|
|
925
|
+
const stopTime = Math.min(volRelease, modRelease);
|
|
926
|
+
note.filterNode.frequency
|
|
927
|
+
.cancelScheduledValues(endTime)
|
|
928
|
+
.linearRampToValueAtTime(0, modRelease);
|
|
939
929
|
note.volumeEnvelopeNode.gain
|
|
940
930
|
.cancelScheduledValues(endTime)
|
|
941
|
-
.linearRampToValueAtTime(0,
|
|
942
|
-
note.ending = true;
|
|
943
|
-
this.scheduleTask(() => {
|
|
944
|
-
note.bufferSource.loop = false;
|
|
945
|
-
}, stopTime);
|
|
931
|
+
.linearRampToValueAtTime(0, volRelease);
|
|
946
932
|
return new Promise((resolve) => {
|
|
947
|
-
|
|
948
|
-
|
|
933
|
+
this.scheduleTask(() => {
|
|
934
|
+
const bufferSource = note.bufferSource;
|
|
935
|
+
bufferSource.loop = false;
|
|
936
|
+
bufferSource.stop(stopTime);
|
|
949
937
|
this.disconnectNote(note);
|
|
938
|
+
channel.scheduledNotes[note.index] = undefined;
|
|
950
939
|
resolve();
|
|
951
|
-
};
|
|
952
|
-
note.bufferSource.stop(stopTime);
|
|
940
|
+
}, stopTime);
|
|
953
941
|
});
|
|
954
942
|
}
|
|
955
|
-
scheduleNoteOff(channelNumber,
|
|
943
|
+
scheduleNoteOff(channelNumber, noteNumber, _velocity, endTime, force) {
|
|
956
944
|
const channel = this.channels[channelNumber];
|
|
957
|
-
if (
|
|
958
|
-
|
|
959
|
-
|
|
945
|
+
if (!force) {
|
|
946
|
+
if (channel.isDrum)
|
|
947
|
+
return;
|
|
948
|
+
if (0.5 <= channel.state.sustainPedal)
|
|
949
|
+
return;
|
|
950
|
+
}
|
|
951
|
+
const note = this.findNoteOffTarget(channel, noteNumber);
|
|
952
|
+
if (!note)
|
|
960
953
|
return;
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
note.filterNode.frequency
|
|
964
|
-
.cancelScheduledValues(endTime)
|
|
965
|
-
.linearRampToValueAtTime(0, modRelease);
|
|
966
|
-
const stopTime = Math.min(volRelease, modRelease);
|
|
967
|
-
return this.stopNote(channel, note, endTime, stopTime);
|
|
954
|
+
note.ending = true;
|
|
955
|
+
this.releaseNote(channel, note, endTime);
|
|
968
956
|
}
|
|
969
957
|
findNoteOffTarget(channel, noteNumber) {
|
|
970
958
|
const scheduledNotes = channel.scheduledNotes;
|
|
@@ -981,16 +969,14 @@ export class MidyGMLite {
|
|
|
981
969
|
}
|
|
982
970
|
noteOff(channelNumber, noteNumber, velocity, scheduleTime) {
|
|
983
971
|
scheduleTime ??= this.audioContext.currentTime;
|
|
984
|
-
|
|
985
|
-
const note = this.findNoteOffTarget(channel, noteNumber);
|
|
986
|
-
return this.scheduleNoteOff(channelNumber, note, velocity, scheduleTime, false);
|
|
972
|
+
return this.scheduleNoteOff(channelNumber, noteNumber, velocity, scheduleTime, false);
|
|
987
973
|
}
|
|
988
974
|
releaseSustainPedal(channelNumber, halfVelocity, scheduleTime) {
|
|
989
975
|
const velocity = halfVelocity * 2;
|
|
990
976
|
const channel = this.channels[channelNumber];
|
|
991
977
|
const promises = [];
|
|
992
978
|
for (let i = 0; i < channel.sustainNotes.length; i++) {
|
|
993
|
-
const promise = this.scheduleNoteOff(channelNumber, channel.sustainNotes[i], velocity, scheduleTime);
|
|
979
|
+
const promise = this.scheduleNoteOff(channelNumber, channel.sustainNotes[i].noteNumber, velocity, scheduleTime);
|
|
994
980
|
promises.push(promise);
|
|
995
981
|
}
|
|
996
982
|
channel.sustainNotes = [];
|
package/esm/midy.d.ts
CHANGED
|
@@ -101,8 +101,8 @@ export class Midy {
|
|
|
101
101
|
};
|
|
102
102
|
initSoundFontTable(): any[];
|
|
103
103
|
addSoundFont(soundFont: any): void;
|
|
104
|
-
loadSoundFont(
|
|
105
|
-
loadMIDI(
|
|
104
|
+
loadSoundFont(input: any): Promise<void>;
|
|
105
|
+
loadMIDI(input: any): Promise<void>;
|
|
106
106
|
setChannelAudioNodes(audioContext: any): {
|
|
107
107
|
gainL: any;
|
|
108
108
|
gainR: any;
|
|
@@ -111,7 +111,8 @@ export class Midy {
|
|
|
111
111
|
resetChannelTable(channel: any): void;
|
|
112
112
|
createChannels(audioContext: any): any[];
|
|
113
113
|
createNoteBuffer(voiceParams: any, isSF3: any): Promise<any>;
|
|
114
|
-
|
|
114
|
+
isLoopDrum(channel: any, noteNumber: any): boolean;
|
|
115
|
+
createBufferSource(channel: any, noteNumber: any, voiceParams: any, audioBuffer: any): any;
|
|
115
116
|
scheduleTimelineEvents(t: any, resumeTime: any, queueIndex: any): Promise<any>;
|
|
116
117
|
getQueueIndex(second: any): number;
|
|
117
118
|
playNotes(): Promise<any>;
|
|
@@ -180,17 +181,16 @@ export class Midy {
|
|
|
180
181
|
calcBank(channel: any): any;
|
|
181
182
|
handleExclusiveClass(note: any, channelNumber: any, startTime: any): void;
|
|
182
183
|
handleDrumExclusiveClass(note: any, channelNumber: any, startTime: any): void;
|
|
183
|
-
isDrumNoteOffException(channel: any, noteNumber: any): boolean;
|
|
184
184
|
scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any, noteOffEvent: any): Promise<void>;
|
|
185
185
|
noteOn(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): Promise<void>;
|
|
186
186
|
disconnectNote(note: any): void;
|
|
187
|
-
|
|
188
|
-
scheduleNoteOff(channelNumber: any,
|
|
187
|
+
releaseNote(channel: any, note: any, endTime: any): Promise<any>;
|
|
188
|
+
scheduleNoteOff(channelNumber: any, noteNumber: any, _velocity: any, endTime: any, force: any): void;
|
|
189
189
|
findNoteOffTarget(channel: any, noteNumber: any): any;
|
|
190
|
-
noteOff(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any):
|
|
191
|
-
releaseSustainPedal(channelNumber: any, halfVelocity: any, scheduleTime: any):
|
|
192
|
-
releaseSostenutoPedal(channelNumber: any, halfVelocity: any, scheduleTime: any):
|
|
193
|
-
handleMIDIMessage(statusByte: any, data1: any, data2: any, scheduleTime: any): void | Promise<
|
|
190
|
+
noteOff(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): void;
|
|
191
|
+
releaseSustainPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): void[];
|
|
192
|
+
releaseSostenutoPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): void[];
|
|
193
|
+
handleMIDIMessage(statusByte: any, data1: any, data2: any, scheduleTime: any): void | Promise<void>;
|
|
194
194
|
handlePolyphonicKeyPressure(channelNumber: any, noteNumber: any, pressure: any, scheduleTime: any): void;
|
|
195
195
|
handleProgramChange(channelNumber: any, programNumber: any, _scheduleTime: any): void;
|
|
196
196
|
handleChannelPressure(channelNumber: any, value: any, scheduleTime: any): void;
|
|
@@ -241,6 +241,7 @@ export class Midy {
|
|
|
241
241
|
setSustainPedal(channelNumber: any, value: any, scheduleTime: any): void;
|
|
242
242
|
setPortamento(channelNumber: any, value: any, scheduleTime: any): void;
|
|
243
243
|
setSostenutoPedal(channelNumber: any, value: any, scheduleTime: any): void;
|
|
244
|
+
getSoftPedalFactor(channel: any, note: any): number;
|
|
244
245
|
setSoftPedal(channelNumber: any, softPedal: any, scheduleTime: any): void;
|
|
245
246
|
setFilterResonance(channelNumber: any, filterResonance: any, scheduleTime: any): void;
|
|
246
247
|
setReleaseTime(channelNumber: any, releaseTime: any, scheduleTime: any): void;
|
|
@@ -319,7 +320,7 @@ export class Midy {
|
|
|
319
320
|
resetControlTable(table: any): any;
|
|
320
321
|
applyControlTable(channel: any, controllerType: any): void;
|
|
321
322
|
handleControlChangeSysEx(data: any): void;
|
|
322
|
-
getKeyBasedInstrumentControlValue(channel: any, keyNumber: any, controllerType: any):
|
|
323
|
+
getKeyBasedInstrumentControlValue(channel: any, keyNumber: any, controllerType: any): any;
|
|
323
324
|
handleKeyBasedInstrumentControlSysEx(data: any, scheduleTime: any): void;
|
|
324
325
|
handleSysEx(data: any, scheduleTime: any): void;
|
|
325
326
|
scheduleTask(callback: any, scheduleTime: any): Promise<any>;
|
|
@@ -327,7 +328,7 @@ export class Midy {
|
|
|
327
328
|
declare class Note {
|
|
328
329
|
constructor(noteNumber: any, velocity: any, startTime: any, voice: any, voiceParams: any);
|
|
329
330
|
index: number;
|
|
330
|
-
|
|
331
|
+
ending: boolean;
|
|
331
332
|
bufferSource: any;
|
|
332
333
|
filterNode: any;
|
|
333
334
|
filterDepth: any;
|
package/esm/midy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"AAuJA;IAwCE;;;;;;;;;;;;;;MAcE;IAgCF;;;;;OAmBC;IAxGD,aAAa;IACb,yBAAqB;IACrB,2BAAuB;IACvB;;;MAGE;IACF;;;;;;MAME;IACF,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,kCAA+B;IAC/B,gCAA6B;IAC7B,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,2BAAqC;IACrC,+BAEE;IAkBF;;;;;MA4BE;IAGA,kBAAgC;IAChC;;;;;MAAqD;IACrD,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,gBAAiD;IACjD;;;MAA8D;IAC9D;;;;;;;;MAAyD;IAQ3D,4BAMC;IAED,mCAWC;IAED,
|
|
1
|
+
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"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"}
|