@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/script/midy-GMLite.js
CHANGED
|
@@ -11,6 +11,12 @@ class Note {
|
|
|
11
11
|
writable: true,
|
|
12
12
|
value: -1
|
|
13
13
|
});
|
|
14
|
+
Object.defineProperty(this, "ending", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
configurable: true,
|
|
17
|
+
writable: true,
|
|
18
|
+
value: false
|
|
19
|
+
});
|
|
14
20
|
Object.defineProperty(this, "bufferSource", {
|
|
15
21
|
enumerable: true,
|
|
16
22
|
configurable: true,
|
|
@@ -311,17 +317,37 @@ class MidyGMLite {
|
|
|
311
317
|
}
|
|
312
318
|
}
|
|
313
319
|
}
|
|
314
|
-
async loadSoundFont(
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
320
|
+
async loadSoundFont(input) {
|
|
321
|
+
let uint8Array;
|
|
322
|
+
if (typeof input === "string") {
|
|
323
|
+
const response = await fetch(input);
|
|
324
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
325
|
+
uint8Array = new Uint8Array(arrayBuffer);
|
|
326
|
+
}
|
|
327
|
+
else if (input instanceof Uint8Array) {
|
|
328
|
+
uint8Array = input;
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
throw new TypeError("input must be a URL string or Uint8Array");
|
|
332
|
+
}
|
|
333
|
+
const parsed = (0, soundfont_parser_1.parse)(uint8Array);
|
|
318
334
|
const soundFont = new soundfont_parser_1.SoundFont(parsed);
|
|
319
335
|
this.addSoundFont(soundFont);
|
|
320
336
|
}
|
|
321
|
-
async loadMIDI(
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
337
|
+
async loadMIDI(input) {
|
|
338
|
+
let uint8Array;
|
|
339
|
+
if (typeof input === "string") {
|
|
340
|
+
const response = await fetch(input);
|
|
341
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
342
|
+
uint8Array = new Uint8Array(arrayBuffer);
|
|
343
|
+
}
|
|
344
|
+
else if (input instanceof Uint8Array) {
|
|
345
|
+
uint8Array = input;
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
throw new TypeError("input must be a URL string or Uint8Array");
|
|
349
|
+
}
|
|
350
|
+
const midi = (0, midi_file_1.parseMidi)(uint8Array);
|
|
325
351
|
this.ticksPerBeat = midi.header.ticksPerBeat;
|
|
326
352
|
const midiData = this.extractMidiData(midi);
|
|
327
353
|
this.instruments = midiData.instruments;
|
|
@@ -385,10 +411,12 @@ class MidyGMLite {
|
|
|
385
411
|
return audioBuffer;
|
|
386
412
|
}
|
|
387
413
|
}
|
|
388
|
-
createBufferSource(voiceParams, audioBuffer) {
|
|
414
|
+
createBufferSource(channel, voiceParams, audioBuffer) {
|
|
389
415
|
const bufferSource = new AudioBufferSourceNode(this.audioContext);
|
|
390
416
|
bufferSource.buffer = audioBuffer;
|
|
391
417
|
bufferSource.loop = voiceParams.sampleModes % 2 !== 0;
|
|
418
|
+
if (channel.isDrum)
|
|
419
|
+
bufferSource.loop = false;
|
|
392
420
|
if (bufferSource.loop) {
|
|
393
421
|
bufferSource.loopStart = voiceParams.loopStart / voiceParams.sampleRate;
|
|
394
422
|
bufferSource.loopEnd = voiceParams.loopEnd / voiceParams.sampleRate;
|
|
@@ -403,12 +431,13 @@ class MidyGMLite {
|
|
|
403
431
|
const delay = this.startDelay - resumeTime;
|
|
404
432
|
const startTime = event.startTime + delay;
|
|
405
433
|
switch (event.type) {
|
|
406
|
-
case "noteOn":
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
434
|
+
case "noteOn":
|
|
435
|
+
await this.scheduleNoteOn(event.channel, event.noteNumber, event.velocity, startTime);
|
|
436
|
+
break;
|
|
437
|
+
case "noteOff": {
|
|
438
|
+
const notePromise = this.scheduleNoteOff(event.channel, event.noteNumber, event.velocity, startTime, false);
|
|
439
|
+
if (notePromise)
|
|
440
|
+
this.notePromises.push(notePromise);
|
|
412
441
|
break;
|
|
413
442
|
}
|
|
414
443
|
case "controller":
|
|
@@ -510,6 +539,7 @@ class MidyGMLite {
|
|
|
510
539
|
return `${programNumber}:${noteNumber}:${velocity}`;
|
|
511
540
|
}
|
|
512
541
|
extractMidiData(midi) {
|
|
542
|
+
this.audioBufferCounter.clear();
|
|
513
543
|
const instruments = new Set();
|
|
514
544
|
const timeline = [];
|
|
515
545
|
const tmpChannels = new Array(this.channels.length);
|
|
@@ -573,38 +603,13 @@ class MidyGMLite {
|
|
|
573
603
|
prevTempoTicks = event.ticks;
|
|
574
604
|
}
|
|
575
605
|
}
|
|
576
|
-
const activeNotes = new Array(this.channels.length * 128);
|
|
577
|
-
for (let i = 0; i < activeNotes.length; i++) {
|
|
578
|
-
activeNotes[i] = [];
|
|
579
|
-
}
|
|
580
|
-
for (let i = 0; i < timeline.length; i++) {
|
|
581
|
-
const event = timeline[i];
|
|
582
|
-
switch (event.type) {
|
|
583
|
-
case "noteOn": {
|
|
584
|
-
const index = event.channel * 128 + event.noteNumber;
|
|
585
|
-
activeNotes[index].push(event);
|
|
586
|
-
break;
|
|
587
|
-
}
|
|
588
|
-
case "noteOff": {
|
|
589
|
-
const index = event.channel * 128 + event.noteNumber;
|
|
590
|
-
const noteOn = activeNotes[index].pop();
|
|
591
|
-
if (noteOn) {
|
|
592
|
-
noteOn.noteOffEvent = event;
|
|
593
|
-
}
|
|
594
|
-
else {
|
|
595
|
-
const eventString = JSON.stringify(event, null, 2);
|
|
596
|
-
console.warn(`noteOff without matching noteOn: ${eventString}`);
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
606
|
return { instruments, timeline };
|
|
602
607
|
}
|
|
603
608
|
stopActiveNotes(channelNumber, velocity, force, scheduleTime) {
|
|
604
609
|
const channel = this.channels[channelNumber];
|
|
605
610
|
const promises = [];
|
|
606
611
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
607
|
-
const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force
|
|
612
|
+
const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force);
|
|
608
613
|
this.notePromises.push(promise);
|
|
609
614
|
promises.push(promise);
|
|
610
615
|
});
|
|
@@ -614,7 +619,7 @@ class MidyGMLite {
|
|
|
614
619
|
const channel = this.channels[channelNumber];
|
|
615
620
|
const promises = [];
|
|
616
621
|
this.processScheduledNotes(channel, (note) => {
|
|
617
|
-
const promise = this.scheduleNoteOff(channelNumber, note, velocity, scheduleTime, force);
|
|
622
|
+
const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force);
|
|
618
623
|
this.notePromises.push(promise);
|
|
619
624
|
promises.push(promise);
|
|
620
625
|
});
|
|
@@ -691,9 +696,6 @@ class MidyGMLite {
|
|
|
691
696
|
continue;
|
|
692
697
|
if (note.ending)
|
|
693
698
|
continue;
|
|
694
|
-
const noteOffEvent = note.noteOffEvent;
|
|
695
|
-
if (noteOffEvent && noteOffEvent.startTime < scheduleTime)
|
|
696
|
-
continue;
|
|
697
699
|
if (scheduleTime < note.startTime)
|
|
698
700
|
continue;
|
|
699
701
|
callback(note);
|
|
@@ -835,7 +837,7 @@ class MidyGMLite {
|
|
|
835
837
|
const voiceParams = voice.getAllParams(controllerState);
|
|
836
838
|
const note = new Note(noteNumber, velocity, startTime, voice, voiceParams);
|
|
837
839
|
const audioBuffer = await this.getAudioBuffer(channel.programNumber, noteNumber, velocity, voiceParams, isSF3);
|
|
838
|
-
note.bufferSource = this.createBufferSource(voiceParams, audioBuffer);
|
|
840
|
+
note.bufferSource = this.createBufferSource(channel, voiceParams, audioBuffer);
|
|
839
841
|
note.volumeEnvelopeNode = new GainNode(this.audioContext);
|
|
840
842
|
note.filterNode = new BiquadFilterNode(this.audioContext, {
|
|
841
843
|
type: "lowpass",
|
|
@@ -861,7 +863,7 @@ class MidyGMLite {
|
|
|
861
863
|
if (prev) {
|
|
862
864
|
const [prevNote, prevChannelNumber] = prev;
|
|
863
865
|
if (prevNote && !prevNote.ending) {
|
|
864
|
-
this.scheduleNoteOff(prevChannelNumber, prevNote, 0, // velocity,
|
|
866
|
+
this.scheduleNoteOff(prevChannelNumber, prevNote.noteNumber, 0, // velocity,
|
|
865
867
|
startTime, true);
|
|
866
868
|
}
|
|
867
869
|
}
|
|
@@ -877,7 +879,7 @@ class MidyGMLite {
|
|
|
877
879
|
const index = drumExclusiveClass * this.channels.length + channelNumber;
|
|
878
880
|
const prevNote = this.drumExclusiveClassNotes[index];
|
|
879
881
|
if (prevNote && !prevNote.ending) {
|
|
880
|
-
this.scheduleNoteOff(channelNumber, prevNote, 0, // velocity,
|
|
882
|
+
this.scheduleNoteOff(channelNumber, prevNote.noteNumber, 0, // velocity,
|
|
881
883
|
startTime, true);
|
|
882
884
|
}
|
|
883
885
|
this.drumExclusiveClassNotes[index] = note;
|
|
@@ -905,24 +907,6 @@ class MidyGMLite {
|
|
|
905
907
|
const scheduledNotes = channel.scheduledNotes;
|
|
906
908
|
note.index = scheduledNotes.length;
|
|
907
909
|
scheduledNotes.push(note);
|
|
908
|
-
if (channel.isDrum) {
|
|
909
|
-
const stopTime = startTime + note.bufferSource.buffer.duration;
|
|
910
|
-
const promise = new Promise((resolve) => {
|
|
911
|
-
note.bufferSource.onended = () => {
|
|
912
|
-
scheduledNotes[note.index] = undefined;
|
|
913
|
-
this.disconnectNote(note);
|
|
914
|
-
resolve();
|
|
915
|
-
};
|
|
916
|
-
note.bufferSource.stop(stopTime);
|
|
917
|
-
});
|
|
918
|
-
this.notePromises.push(promise);
|
|
919
|
-
}
|
|
920
|
-
else if (noteOffEvent) {
|
|
921
|
-
const notePromise = this.scheduleNoteOff(channelNumber, note, noteOffEvent.velocity, noteOffEvent.startTime, false);
|
|
922
|
-
if (notePromise) {
|
|
923
|
-
this.notePromises.push(notePromise);
|
|
924
|
-
}
|
|
925
|
-
}
|
|
926
910
|
}
|
|
927
911
|
noteOn(channelNumber, noteNumber, velocity, scheduleTime) {
|
|
928
912
|
scheduleTime ??= this.audioContext.currentTime;
|
|
@@ -938,36 +922,40 @@ class MidyGMLite {
|
|
|
938
922
|
note.modulationLFO.stop();
|
|
939
923
|
}
|
|
940
924
|
}
|
|
941
|
-
|
|
925
|
+
releaseNote(channel, note, endTime) {
|
|
926
|
+
const volRelease = endTime + note.voiceParams.volRelease;
|
|
927
|
+
const modRelease = endTime + note.voiceParams.modRelease;
|
|
928
|
+
const stopTime = Math.min(volRelease, modRelease);
|
|
929
|
+
note.filterNode.frequency
|
|
930
|
+
.cancelScheduledValues(endTime)
|
|
931
|
+
.linearRampToValueAtTime(0, modRelease);
|
|
942
932
|
note.volumeEnvelopeNode.gain
|
|
943
933
|
.cancelScheduledValues(endTime)
|
|
944
|
-
.linearRampToValueAtTime(0,
|
|
945
|
-
note.ending = true;
|
|
946
|
-
this.scheduleTask(() => {
|
|
947
|
-
note.bufferSource.loop = false;
|
|
948
|
-
}, stopTime);
|
|
934
|
+
.linearRampToValueAtTime(0, volRelease);
|
|
949
935
|
return new Promise((resolve) => {
|
|
950
|
-
|
|
951
|
-
|
|
936
|
+
this.scheduleTask(() => {
|
|
937
|
+
const bufferSource = note.bufferSource;
|
|
938
|
+
bufferSource.loop = false;
|
|
939
|
+
bufferSource.stop(stopTime);
|
|
952
940
|
this.disconnectNote(note);
|
|
941
|
+
channel.scheduledNotes[note.index] = undefined;
|
|
953
942
|
resolve();
|
|
954
|
-
};
|
|
955
|
-
note.bufferSource.stop(stopTime);
|
|
943
|
+
}, stopTime);
|
|
956
944
|
});
|
|
957
945
|
}
|
|
958
|
-
scheduleNoteOff(channelNumber,
|
|
946
|
+
scheduleNoteOff(channelNumber, noteNumber, _velocity, endTime, force) {
|
|
959
947
|
const channel = this.channels[channelNumber];
|
|
960
|
-
if (
|
|
961
|
-
|
|
962
|
-
|
|
948
|
+
if (!force) {
|
|
949
|
+
if (channel.isDrum)
|
|
950
|
+
return;
|
|
951
|
+
if (0.5 <= channel.state.sustainPedal)
|
|
952
|
+
return;
|
|
953
|
+
}
|
|
954
|
+
const note = this.findNoteOffTarget(channel, noteNumber);
|
|
955
|
+
if (!note)
|
|
963
956
|
return;
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
note.filterNode.frequency
|
|
967
|
-
.cancelScheduledValues(endTime)
|
|
968
|
-
.linearRampToValueAtTime(0, modRelease);
|
|
969
|
-
const stopTime = Math.min(volRelease, modRelease);
|
|
970
|
-
return this.stopNote(channel, note, endTime, stopTime);
|
|
957
|
+
note.ending = true;
|
|
958
|
+
this.releaseNote(channel, note, endTime);
|
|
971
959
|
}
|
|
972
960
|
findNoteOffTarget(channel, noteNumber) {
|
|
973
961
|
const scheduledNotes = channel.scheduledNotes;
|
|
@@ -984,16 +972,14 @@ class MidyGMLite {
|
|
|
984
972
|
}
|
|
985
973
|
noteOff(channelNumber, noteNumber, velocity, scheduleTime) {
|
|
986
974
|
scheduleTime ??= this.audioContext.currentTime;
|
|
987
|
-
|
|
988
|
-
const note = this.findNoteOffTarget(channel, noteNumber);
|
|
989
|
-
return this.scheduleNoteOff(channelNumber, note, velocity, scheduleTime, false);
|
|
975
|
+
return this.scheduleNoteOff(channelNumber, noteNumber, velocity, scheduleTime, false);
|
|
990
976
|
}
|
|
991
977
|
releaseSustainPedal(channelNumber, halfVelocity, scheduleTime) {
|
|
992
978
|
const velocity = halfVelocity * 2;
|
|
993
979
|
const channel = this.channels[channelNumber];
|
|
994
980
|
const promises = [];
|
|
995
981
|
for (let i = 0; i < channel.sustainNotes.length; i++) {
|
|
996
|
-
const promise = this.scheduleNoteOff(channelNumber, channel.sustainNotes[i], velocity, scheduleTime);
|
|
982
|
+
const promise = this.scheduleNoteOff(channelNumber, channel.sustainNotes[i].noteNumber, velocity, scheduleTime);
|
|
997
983
|
promises.push(promise);
|
|
998
984
|
}
|
|
999
985
|
channel.sustainNotes = [];
|
package/script/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/script/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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"}
|