@marmooo/midy 0.4.3 → 0.4.5
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/README.md +6 -1
- package/esm/midy-GM1.d.ts +10 -5
- package/esm/midy-GM1.d.ts.map +1 -1
- package/esm/midy-GM1.js +68 -41
- package/esm/midy-GM2.d.ts +15 -9
- package/esm/midy-GM2.d.ts.map +1 -1
- package/esm/midy-GM2.js +139 -93
- package/esm/midy-GMLite.d.ts +10 -5
- package/esm/midy-GMLite.d.ts.map +1 -1
- package/esm/midy-GMLite.js +71 -43
- package/esm/midy.d.ts +59 -7
- package/esm/midy.d.ts.map +1 -1
- package/esm/midy.js +286 -83
- package/package.json +2 -2
- package/script/midy-GM1.d.ts +10 -5
- package/script/midy-GM1.d.ts.map +1 -1
- package/script/midy-GM1.js +68 -41
- package/script/midy-GM2.d.ts +15 -9
- package/script/midy-GM2.d.ts.map +1 -1
- package/script/midy-GM2.js +139 -93
- package/script/midy-GMLite.d.ts +10 -5
- package/script/midy-GMLite.d.ts.map +1 -1
- package/script/midy-GMLite.js +71 -43
- package/script/midy.d.ts +59 -7
- package/script/midy.d.ts.map +1 -1
- package/script/midy.js +286 -83
package/script/midy-GMLite.js
CHANGED
|
@@ -177,6 +177,16 @@ const releaseCurve = 1 / (-Math.log(cbToRatio(-600)));
|
|
|
177
177
|
class MidyGMLite extends EventTarget {
|
|
178
178
|
constructor(audioContext) {
|
|
179
179
|
super();
|
|
180
|
+
// https://pmc.ncbi.nlm.nih.gov/articles/PMC4191557/
|
|
181
|
+
// https://pubmed.ncbi.nlm.nih.gov/12488797/
|
|
182
|
+
// Gap detection studies indicate humans detect temporal discontinuities
|
|
183
|
+
// around 2–3 ms. Smoothing over ~4 ms is perceived as continuous.
|
|
184
|
+
Object.defineProperty(this, "perceptualSmoothingTime", {
|
|
185
|
+
enumerable: true,
|
|
186
|
+
configurable: true,
|
|
187
|
+
writable: true,
|
|
188
|
+
value: 0.004
|
|
189
|
+
});
|
|
180
190
|
Object.defineProperty(this, "mode", {
|
|
181
191
|
enumerable: true,
|
|
182
192
|
configurable: true,
|
|
@@ -563,8 +573,8 @@ class MidyGMLite extends EventTarget {
|
|
|
563
573
|
this.voiceCache.clear();
|
|
564
574
|
this.realtimeVoiceCache.clear();
|
|
565
575
|
const channels = this.channels;
|
|
566
|
-
for (let
|
|
567
|
-
channels[
|
|
576
|
+
for (let ch = 0; ch < channels.length; ch++) {
|
|
577
|
+
channels[ch].scheduledNotes = [];
|
|
568
578
|
this.resetChannelStates(i);
|
|
569
579
|
}
|
|
570
580
|
}
|
|
@@ -755,8 +765,8 @@ class MidyGMLite extends EventTarget {
|
|
|
755
765
|
}
|
|
756
766
|
stopNotes(velocity, force, scheduleTime) {
|
|
757
767
|
const channels = this.channels;
|
|
758
|
-
for (let
|
|
759
|
-
this.stopChannelNotes(
|
|
768
|
+
for (let ch = 0; ch < channels.length; ch++) {
|
|
769
|
+
this.stopChannelNotes(ch, velocity, force, scheduleTime);
|
|
760
770
|
}
|
|
761
771
|
const stopPromise = Promise.all(this.notePromises);
|
|
762
772
|
this.notePromises = [];
|
|
@@ -797,6 +807,13 @@ class MidyGMLite extends EventTarget {
|
|
|
797
807
|
this.isSeeking = true;
|
|
798
808
|
}
|
|
799
809
|
}
|
|
810
|
+
tempoChange(tempo) {
|
|
811
|
+
const timeScale = this.tempo / tempo;
|
|
812
|
+
this.resumeTime = this.resumeTime * timeScale;
|
|
813
|
+
this.tempo = tempo;
|
|
814
|
+
this.totalTime = this.calcTotalTime();
|
|
815
|
+
this.seekTo(this.currentTime() * timeScale);
|
|
816
|
+
}
|
|
800
817
|
calcTotalTime() {
|
|
801
818
|
const totalTimeEventTypes = this.totalTimeEventTypes;
|
|
802
819
|
const timeline = this.timeline;
|
|
@@ -864,13 +881,11 @@ class MidyGMLite extends EventTarget {
|
|
|
864
881
|
}
|
|
865
882
|
updateChannelDetune(channel, scheduleTime) {
|
|
866
883
|
this.processScheduledNotes(channel, (note) => {
|
|
867
|
-
this.
|
|
884
|
+
this.setDetune(channel, note, scheduleTime);
|
|
868
885
|
});
|
|
869
886
|
}
|
|
870
|
-
|
|
871
|
-
note.
|
|
872
|
-
.cancelScheduledValues(scheduleTime)
|
|
873
|
-
.setValueAtTime(channel.detune, scheduleTime);
|
|
887
|
+
calcNoteDetune(channel, note) {
|
|
888
|
+
return channel.detune + note.voiceParams.detune;
|
|
874
889
|
}
|
|
875
890
|
setVolumeEnvelope(note, scheduleTime) {
|
|
876
891
|
const { voiceParams, startTime } = note;
|
|
@@ -883,30 +898,38 @@ class MidyGMLite extends EventTarget {
|
|
|
883
898
|
note.volumeEnvelopeNode.gain
|
|
884
899
|
.cancelScheduledValues(scheduleTime)
|
|
885
900
|
.setValueAtTime(0, startTime)
|
|
886
|
-
.setValueAtTime(
|
|
887
|
-
.
|
|
901
|
+
.setValueAtTime(1e-6, volDelay)
|
|
902
|
+
.exponentialRampToValueAtTime(attackVolume, volAttack)
|
|
888
903
|
.setValueAtTime(attackVolume, volHold)
|
|
889
904
|
.setTargetAtTime(sustainVolume, volHold, decayDuration * decayCurve);
|
|
890
905
|
}
|
|
906
|
+
setDetune(channel, note, scheduleTime) {
|
|
907
|
+
const detune = this.calcNoteDetune(channel, note);
|
|
908
|
+
note.bufferSource.detune
|
|
909
|
+
.cancelScheduledValues(scheduleTime)
|
|
910
|
+
.setValueAtTime(detune, scheduleTime);
|
|
911
|
+
const timeConstant = this.perceptualSmoothingTime / 5; // 99.3% (5 * tau)
|
|
912
|
+
note.bufferSource.detune
|
|
913
|
+
.cancelAndHoldAtTime(scheduleTime)
|
|
914
|
+
.setTargetAtTime(detune, scheduleTime, timeConstant);
|
|
915
|
+
}
|
|
891
916
|
setPitchEnvelope(note, scheduleTime) {
|
|
892
|
-
const { voiceParams } = note;
|
|
917
|
+
const { bufferSource, voiceParams } = note;
|
|
893
918
|
const baseRate = voiceParams.playbackRate;
|
|
894
|
-
|
|
919
|
+
bufferSource.playbackRate
|
|
895
920
|
.cancelScheduledValues(scheduleTime)
|
|
896
|
-
.setValueAtTime(baseRate,
|
|
921
|
+
.setValueAtTime(baseRate, scheduleTime);
|
|
897
922
|
const modEnvToPitch = voiceParams.modEnvToPitch;
|
|
898
923
|
if (modEnvToPitch === 0)
|
|
899
924
|
return;
|
|
900
|
-
const
|
|
901
|
-
const peekPitch = basePitch + modEnvToPitch;
|
|
902
|
-
const peekRate = this.centToRate(peekPitch);
|
|
925
|
+
const peekRate = baseRate * this.centToRate(modEnvToPitch);
|
|
903
926
|
const modDelay = note.startTime + voiceParams.modDelay;
|
|
904
927
|
const modAttack = modDelay + voiceParams.modAttack;
|
|
905
928
|
const modHold = modAttack + voiceParams.modHold;
|
|
906
929
|
const decayDuration = voiceParams.modDecay;
|
|
907
|
-
|
|
930
|
+
bufferSource.playbackRate
|
|
908
931
|
.setValueAtTime(baseRate, modDelay)
|
|
909
|
-
.
|
|
932
|
+
.exponentialRampToValueAtTime(peekRate, modAttack)
|
|
910
933
|
.setValueAtTime(peekRate, modHold)
|
|
911
934
|
.setTargetAtTime(baseRate, modHold, decayDuration * decayCurve);
|
|
912
935
|
}
|
|
@@ -937,7 +960,7 @@ class MidyGMLite extends EventTarget {
|
|
|
937
960
|
.cancelScheduledValues(scheduleTime)
|
|
938
961
|
.setValueAtTime(adjustedBaseFreq, startTime)
|
|
939
962
|
.setValueAtTime(adjustedBaseFreq, modDelay)
|
|
940
|
-
.
|
|
963
|
+
.exponentialRampToValueAtTime(adjustedPeekFreq, modAttack)
|
|
941
964
|
.setValueAtTime(adjustedPeekFreq, modHold)
|
|
942
965
|
.setTargetAtTime(adjustedSustainFreq, modHold, decayDuration * decayCurve);
|
|
943
966
|
}
|
|
@@ -1008,7 +1031,7 @@ class MidyGMLite extends EventTarget {
|
|
|
1008
1031
|
this.setVolumeEnvelope(note, now);
|
|
1009
1032
|
this.setFilterEnvelope(note, now);
|
|
1010
1033
|
this.setPitchEnvelope(note, now);
|
|
1011
|
-
this.
|
|
1034
|
+
this.setDetune(channel, note, now);
|
|
1012
1035
|
if (0 < state.modulationDepthMSB) {
|
|
1013
1036
|
this.startModulation(channel, note, now);
|
|
1014
1037
|
}
|
|
@@ -1105,15 +1128,14 @@ class MidyGMLite extends EventTarget {
|
|
|
1105
1128
|
}
|
|
1106
1129
|
releaseNote(channel, note, endTime) {
|
|
1107
1130
|
endTime ??= this.audioContext.currentTime;
|
|
1108
|
-
const
|
|
1109
|
-
const volRelease = endTime +
|
|
1110
|
-
const modRelease = endTime + note.voiceParams.modRelease;
|
|
1131
|
+
const volDuration = note.voiceParams.volRelease;
|
|
1132
|
+
const volRelease = endTime + volDuration;
|
|
1111
1133
|
note.filterNode.frequency
|
|
1112
1134
|
.cancelScheduledValues(endTime)
|
|
1113
|
-
.
|
|
1135
|
+
.setTargetAtTime(note.adjustedBaseFreq, endTime, note.voiceParams.modRelease * releaseCurve);
|
|
1114
1136
|
note.volumeEnvelopeNode.gain
|
|
1115
1137
|
.cancelScheduledValues(endTime)
|
|
1116
|
-
.setTargetAtTime(0, endTime,
|
|
1138
|
+
.setTargetAtTime(0, endTime, volDuration * releaseCurve);
|
|
1117
1139
|
return new Promise((resolve) => {
|
|
1118
1140
|
this.scheduleTask(() => {
|
|
1119
1141
|
const bufferSource = note.bufferSource;
|
|
@@ -1307,12 +1329,15 @@ class MidyGMLite extends EventTarget {
|
|
|
1307
1329
|
}
|
|
1308
1330
|
},
|
|
1309
1331
|
freqModLFO: (_channel, note, scheduleTime) => {
|
|
1310
|
-
if (0 < channel.state.
|
|
1332
|
+
if (0 < channel.state.modulationDepthMSB) {
|
|
1311
1333
|
this.setFreqModLFO(note, scheduleTime);
|
|
1312
1334
|
}
|
|
1313
1335
|
},
|
|
1314
1336
|
delayVibLFO: (_channel, _note, _scheduleTime) => { },
|
|
1315
1337
|
freqVibLFO: (_channel, _note, _scheduleTime) => { },
|
|
1338
|
+
detune: (channel, note, scheduleTime) => {
|
|
1339
|
+
this.setDetune(channel, note, scheduleTime);
|
|
1340
|
+
},
|
|
1316
1341
|
};
|
|
1317
1342
|
}
|
|
1318
1343
|
getControllerState(channel, noteNumber, velocity) {
|
|
@@ -1382,7 +1407,8 @@ class MidyGMLite extends EventTarget {
|
|
|
1382
1407
|
}
|
|
1383
1408
|
}
|
|
1384
1409
|
updateModulation(channel, scheduleTime) {
|
|
1385
|
-
const depth = channel.state.
|
|
1410
|
+
const depth = channel.state.modulationDepthMSB *
|
|
1411
|
+
channel.modulationDepthRange;
|
|
1386
1412
|
this.processScheduledNotes(channel, (note) => {
|
|
1387
1413
|
if (note.modulationDepth) {
|
|
1388
1414
|
note.modulationDepth.gain.setValueAtTime(depth, scheduleTime);
|
|
@@ -1392,18 +1418,18 @@ class MidyGMLite extends EventTarget {
|
|
|
1392
1418
|
}
|
|
1393
1419
|
});
|
|
1394
1420
|
}
|
|
1395
|
-
setModulationDepth(channelNumber,
|
|
1421
|
+
setModulationDepth(channelNumber, value, scheduleTime) {
|
|
1396
1422
|
const channel = this.channels[channelNumber];
|
|
1397
1423
|
if (!(0 <= scheduleTime))
|
|
1398
1424
|
scheduleTime = this.audioContext.currentTime;
|
|
1399
|
-
channel.state.
|
|
1425
|
+
channel.state.modulationDepthMSB = value / 127;
|
|
1400
1426
|
this.updateModulation(channel, scheduleTime);
|
|
1401
1427
|
}
|
|
1402
|
-
setVolume(channelNumber,
|
|
1428
|
+
setVolume(channelNumber, value, scheduleTime) {
|
|
1403
1429
|
if (!(0 <= scheduleTime))
|
|
1404
1430
|
scheduleTime = this.audioContext.currentTime;
|
|
1405
1431
|
const channel = this.channels[channelNumber];
|
|
1406
|
-
channel.state.
|
|
1432
|
+
channel.state.volumeMSB = value / 127;
|
|
1407
1433
|
this.updateChannelVolume(channel, scheduleTime);
|
|
1408
1434
|
}
|
|
1409
1435
|
panToGain(pan) {
|
|
@@ -1413,18 +1439,18 @@ class MidyGMLite extends EventTarget {
|
|
|
1413
1439
|
gainRight: Math.sin(theta),
|
|
1414
1440
|
};
|
|
1415
1441
|
}
|
|
1416
|
-
setPan(channelNumber,
|
|
1442
|
+
setPan(channelNumber, value, scheduleTime) {
|
|
1417
1443
|
if (!(0 <= scheduleTime))
|
|
1418
1444
|
scheduleTime = this.audioContext.currentTime;
|
|
1419
1445
|
const channel = this.channels[channelNumber];
|
|
1420
|
-
channel.state.
|
|
1446
|
+
channel.state.panMSB = value / 127;
|
|
1421
1447
|
this.updateChannelVolume(channel, scheduleTime);
|
|
1422
1448
|
}
|
|
1423
|
-
setExpression(channelNumber,
|
|
1449
|
+
setExpression(channelNumber, value, scheduleTime) {
|
|
1424
1450
|
if (!(0 <= scheduleTime))
|
|
1425
1451
|
scheduleTime = this.audioContext.currentTime;
|
|
1426
1452
|
const channel = this.channels[channelNumber];
|
|
1427
|
-
channel.state.
|
|
1453
|
+
channel.state.expressionMSB = value / 127;
|
|
1428
1454
|
this.updateChannelVolume(channel, scheduleTime);
|
|
1429
1455
|
}
|
|
1430
1456
|
dataEntryLSB(channelNumber, value, scheduleTime) {
|
|
@@ -1433,14 +1459,14 @@ class MidyGMLite extends EventTarget {
|
|
|
1433
1459
|
}
|
|
1434
1460
|
updateChannelVolume(channel, scheduleTime) {
|
|
1435
1461
|
const state = channel.state;
|
|
1436
|
-
const
|
|
1437
|
-
const { gainLeft, gainRight } = this.panToGain(state.
|
|
1462
|
+
const gain = state.volumeMSB * state.expressionMSB;
|
|
1463
|
+
const { gainLeft, gainRight } = this.panToGain(state.panMSB);
|
|
1438
1464
|
channel.gainL.gain
|
|
1439
1465
|
.cancelScheduledValues(scheduleTime)
|
|
1440
|
-
.setValueAtTime(
|
|
1466
|
+
.setValueAtTime(gain * gainLeft, scheduleTime);
|
|
1441
1467
|
channel.gainR.gain
|
|
1442
1468
|
.cancelScheduledValues(scheduleTime)
|
|
1443
|
-
.setValueAtTime(
|
|
1469
|
+
.setValueAtTime(gain * gainRight, scheduleTime);
|
|
1444
1470
|
}
|
|
1445
1471
|
setSustainPedal(channelNumber, value, scheduleTime) {
|
|
1446
1472
|
const channel = this.channels[channelNumber];
|
|
@@ -1481,6 +1507,8 @@ class MidyGMLite extends EventTarget {
|
|
|
1481
1507
|
case 0:
|
|
1482
1508
|
this.handlePitchBendRangeRPN(channelNumber, scheduleTime);
|
|
1483
1509
|
break;
|
|
1510
|
+
case 16383: // NULL
|
|
1511
|
+
break;
|
|
1484
1512
|
default:
|
|
1485
1513
|
console.warn(`Channel ${channelNumber}: Unsupported RPN MSB=${channel.rpnMSB} LSB=${channel.rpnLSB}`);
|
|
1486
1514
|
}
|
|
@@ -1593,9 +1621,9 @@ class MidyGMLite extends EventTarget {
|
|
|
1593
1621
|
if (!(0 <= scheduleTime))
|
|
1594
1622
|
scheduleTime = this.audioContext.currentTime;
|
|
1595
1623
|
this.mode = "GM1";
|
|
1596
|
-
for (let
|
|
1597
|
-
this.allSoundOff(
|
|
1598
|
-
const channel = channels[
|
|
1624
|
+
for (let ch = 0; ch < channels.length; ch++) {
|
|
1625
|
+
this.allSoundOff(ch, 0, scheduleTime);
|
|
1626
|
+
const channel = channels[ch];
|
|
1599
1627
|
channel.isDrum = false;
|
|
1600
1628
|
}
|
|
1601
1629
|
channels[9].isDrum = true;
|
package/script/midy.d.ts
CHANGED
|
@@ -14,8 +14,11 @@ export class Midy extends EventTarget {
|
|
|
14
14
|
fineTuning: number;
|
|
15
15
|
coarseTuning: number;
|
|
16
16
|
portamentoControl: boolean;
|
|
17
|
+
isMPEMember: boolean;
|
|
18
|
+
isMPEManager: boolean;
|
|
17
19
|
};
|
|
18
20
|
constructor(audioContext: any);
|
|
21
|
+
perceptualSmoothingTime: number;
|
|
19
22
|
mode: string;
|
|
20
23
|
masterFineTuning: number;
|
|
21
24
|
masterCoarseTuning: number;
|
|
@@ -61,6 +64,13 @@ export class Midy extends EventTarget {
|
|
|
61
64
|
instruments: Set<any>;
|
|
62
65
|
exclusiveClassNotes: any[];
|
|
63
66
|
drumExclusiveClassNotes: any[];
|
|
67
|
+
mpeEnabled: boolean;
|
|
68
|
+
lowerMPEMembers: number;
|
|
69
|
+
upperMPEMembers: number;
|
|
70
|
+
mpeState: {
|
|
71
|
+
channelToNotes: Map<any, any>;
|
|
72
|
+
noteToChannel: Map<any, any>;
|
|
73
|
+
};
|
|
64
74
|
audioContext: any;
|
|
65
75
|
masterVolume: any;
|
|
66
76
|
scheduler: any;
|
|
@@ -77,6 +87,7 @@ export class Midy extends EventTarget {
|
|
|
77
87
|
freqModLFO: (_channel: any, note: any, scheduleTime: any) => void;
|
|
78
88
|
delayVibLFO: (channel: any, note: any, _scheduleTime: any) => void;
|
|
79
89
|
freqVibLFO: (channel: any, note: any, scheduleTime: any) => void;
|
|
90
|
+
detune: (channel: any, note: any, scheduleTime: any) => void;
|
|
80
91
|
};
|
|
81
92
|
controlChangeHandlers: any[];
|
|
82
93
|
keyBasedControllerHandlers: any[];
|
|
@@ -130,10 +141,12 @@ export class Midy extends EventTarget {
|
|
|
130
141
|
pause(): Promise<void>;
|
|
131
142
|
resume(): Promise<void>;
|
|
132
143
|
seekTo(second: any): void;
|
|
144
|
+
tempoChange(tempo: any): void;
|
|
133
145
|
calcTotalTime(): number;
|
|
134
146
|
currentTime(): number;
|
|
135
147
|
processScheduledNotes(channel: any, callback: any): Promise<void>;
|
|
136
148
|
processActiveNotes(channel: any, scheduleTime: any, callback: any): Promise<void>;
|
|
149
|
+
applyToMPEChannels(channelNumber: any, fn: any): void;
|
|
137
150
|
createConvolutionReverbImpulse(audioContext: any, decay: any, preDecay: any): any;
|
|
138
151
|
createConvolutionReverb(audioContext: any, impulse: any): {
|
|
139
152
|
input: any;
|
|
@@ -164,14 +177,16 @@ export class Midy extends EventTarget {
|
|
|
164
177
|
centToRate(cent: any): number;
|
|
165
178
|
centToHz(cent: any): number;
|
|
166
179
|
calcChannelDetune(channel: any): any;
|
|
167
|
-
calcNoteDetune(channel: any, note: any): any;
|
|
168
180
|
updateChannelDetune(channel: any, scheduleTime: any): void;
|
|
169
|
-
|
|
181
|
+
calcScaleOctaveTuning(channel: any, note: any): any;
|
|
182
|
+
calcNoteDetune(channel: any, note: any): any;
|
|
170
183
|
getPortamentoTime(channel: any, note: any): number;
|
|
171
184
|
getPitchIncrementSpeed(value: any): number;
|
|
172
185
|
setPortamentoVolumeEnvelope(channel: any, note: any, scheduleTime: any): void;
|
|
173
186
|
setVolumeEnvelope(channel: any, note: any, scheduleTime: any): void;
|
|
174
|
-
|
|
187
|
+
setPortamentoDetune(channel: any, note: any, scheduleTime: any): void;
|
|
188
|
+
setDetune(channel: any, note: any, scheduleTime: any): void;
|
|
189
|
+
setPortamentoPitchEnvelope(channel: any, note: any, scheduleTime: any): void;
|
|
175
190
|
setPitchEnvelope(note: any, scheduleTime: any): void;
|
|
176
191
|
clampCutoffFrequency(frequency: any): number;
|
|
177
192
|
setPortamentoFilterEnvelope(channel: any, note: any, scheduleTime: any): void;
|
|
@@ -184,9 +199,11 @@ export class Midy extends EventTarget {
|
|
|
184
199
|
handleDrumExclusiveClass(note: any, channelNumber: any, startTime: any): void;
|
|
185
200
|
setNoteRouting(channelNumber: any, note: any, startTime: any): void;
|
|
186
201
|
noteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
|
|
202
|
+
startNote(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<Note | undefined>;
|
|
187
203
|
disconnectNote(note: any): void;
|
|
188
204
|
releaseNote(channel: any, note: any, endTime: any): Promise<any>;
|
|
189
|
-
noteOff(channelNumber: any, noteNumber: any,
|
|
205
|
+
noteOff(channelNumber: any, noteNumber: any, velocity: any, endTime: any, force: any): any;
|
|
206
|
+
stopNote(channelNumber: any, noteNumber: any, _velocity: any, endTime: any, force: any): any;
|
|
190
207
|
setNoteIndex(channel: any, index: any): void;
|
|
191
208
|
findNoteOffIndex(channel: any, noteNumber: any): any;
|
|
192
209
|
releaseSustainPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): any[];
|
|
@@ -195,10 +212,13 @@ export class Midy extends EventTarget {
|
|
|
195
212
|
handleMessage(data: any, scheduleTime: any): void;
|
|
196
213
|
activeSensing(): void;
|
|
197
214
|
setPolyphonicKeyPressure(channelNumber: any, noteNumber: any, pressure: any, scheduleTime: any): void;
|
|
198
|
-
setProgramChange(channelNumber: any, programNumber: any,
|
|
215
|
+
setProgramChange(channelNumber: any, programNumber: any, scheduleTime: any): void;
|
|
216
|
+
applyProgramChange(channelNumber: any, programNumber: any, _scheduleTime: any): void;
|
|
199
217
|
setChannelPressure(channelNumber: any, value: any, scheduleTime: any): void;
|
|
218
|
+
applyChannelPressure(channelNumber: any, value: any, scheduleTime: any): void;
|
|
200
219
|
handlePitchBendMessage(channelNumber: any, lsb: any, msb: any, scheduleTime: any): void;
|
|
201
220
|
setPitchBend(channelNumber: any, value: any, scheduleTime: any): void;
|
|
221
|
+
applyPitchBend(channelNumber: any, value: any, scheduleTime: any): void;
|
|
202
222
|
setModLfoToPitch(channel: any, note: any, scheduleTime: any): void;
|
|
203
223
|
setVibLfoToPitch(channel: any, note: any, scheduleTime: any): void;
|
|
204
224
|
setModLfoToFilterFc(channel: any, note: any, scheduleTime: any): void;
|
|
@@ -207,8 +227,8 @@ export class Midy extends EventTarget {
|
|
|
207
227
|
setChorusSend(channel: any, note: any, scheduleTime: any): void;
|
|
208
228
|
setDelayModLFO(note: any): void;
|
|
209
229
|
setFreqModLFO(note: any, scheduleTime: any): void;
|
|
210
|
-
setFreqVibLFO(channel: any, note: any, scheduleTime: any): void;
|
|
211
230
|
setDelayVibLFO(channel: any, note: any): void;
|
|
231
|
+
setFreqVibLFO(channel: any, note: any, scheduleTime: any): void;
|
|
212
232
|
createVoiceParamsHandlers(): {
|
|
213
233
|
modLfoToPitch: (channel: any, note: any, scheduleTime: any) => void;
|
|
214
234
|
vibLfoToPitch: (channel: any, note: any, scheduleTime: any) => void;
|
|
@@ -220,11 +240,13 @@ export class Midy extends EventTarget {
|
|
|
220
240
|
freqModLFO: (_channel: any, note: any, scheduleTime: any) => void;
|
|
221
241
|
delayVibLFO: (channel: any, note: any, _scheduleTime: any) => void;
|
|
222
242
|
freqVibLFO: (channel: any, note: any, scheduleTime: any) => void;
|
|
243
|
+
detune: (channel: any, note: any, scheduleTime: any) => void;
|
|
223
244
|
};
|
|
224
245
|
getControllerState(channel: any, noteNumber: any, velocity: any, polyphonicKeyPressure: any): Float32Array<any>;
|
|
225
246
|
applyVoiceParams(channel: any, controllerType: any, scheduleTime: any): void;
|
|
226
247
|
createControlChangeHandlers(): any[];
|
|
227
248
|
setControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
|
|
249
|
+
applyControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
|
|
228
250
|
setBankMSB(channelNumber: any, msb: any): void;
|
|
229
251
|
updateModulation(channel: any, scheduleTime: any): void;
|
|
230
252
|
setModulationDepth(channelNumber: any, value: any, scheduleTime: any): void;
|
|
@@ -275,8 +297,11 @@ export class Midy extends EventTarget {
|
|
|
275
297
|
setCoarseTuning(channelNumber: any, value: any, scheduleTime: any): void;
|
|
276
298
|
handleModulationDepthRangeRPN(channelNumber: any, scheduleTime: any): void;
|
|
277
299
|
setModulationDepthRange(channelNumber: any, value: any, scheduleTime: any): void;
|
|
300
|
+
handleMIDIPolyphonicExpressionRPN(channelNumber: any, _scheduleTime: any): void;
|
|
301
|
+
setMIDIPolyphonicExpression(channelNumber: any, value: any): void;
|
|
278
302
|
setRPGMakerLoop(_channelNumber: any, _value: any, scheduleTime: any): void;
|
|
279
|
-
allSoundOff(channelNumber: any,
|
|
303
|
+
allSoundOff(channelNumber: any, value: any, scheduleTime: any): void;
|
|
304
|
+
applyAllSoundOff(channelNumber: any, _value: any, scheduleTime: any): Promise<any[]> | undefined;
|
|
280
305
|
resetChannelStates(channelNumber: any): void;
|
|
281
306
|
resetAllControllers(channelNumber: any, _value: any, scheduleTime: any): void;
|
|
282
307
|
allNotesOff(channelNumber: any, _value: any, scheduleTime: any): Promise<any[]>;
|
|
@@ -332,4 +357,31 @@ export class Midy extends EventTarget {
|
|
|
332
357
|
handleSysEx(data: any, scheduleTime: any): void;
|
|
333
358
|
scheduleTask(callback: any, scheduleTime: any): Promise<any>;
|
|
334
359
|
}
|
|
360
|
+
declare class Note {
|
|
361
|
+
constructor(noteNumber: any, velocity: any, startTime: any);
|
|
362
|
+
voice: any;
|
|
363
|
+
voiceParams: any;
|
|
364
|
+
adjustedBaseFreq: number;
|
|
365
|
+
index: number;
|
|
366
|
+
ending: boolean;
|
|
367
|
+
bufferSource: any;
|
|
368
|
+
filterNode: any;
|
|
369
|
+
filterDepth: any;
|
|
370
|
+
volumeEnvelopeNode: any;
|
|
371
|
+
volumeDepth: any;
|
|
372
|
+
modulationLFO: any;
|
|
373
|
+
modulationDepth: any;
|
|
374
|
+
vibratoLFO: any;
|
|
375
|
+
vibratoDepth: any;
|
|
376
|
+
reverbSend: any;
|
|
377
|
+
chorusSend: any;
|
|
378
|
+
portamentoNoteNumber: number;
|
|
379
|
+
pressure: number;
|
|
380
|
+
noteNumber: any;
|
|
381
|
+
velocity: any;
|
|
382
|
+
startTime: any;
|
|
383
|
+
ready: Promise<any>;
|
|
384
|
+
resolveReady: (value: any) => void;
|
|
385
|
+
}
|
|
386
|
+
export {};
|
|
335
387
|
//# sourceMappingURL=midy.d.ts.map
|
package/script/midy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"AAgLA;
|
|
1
|
+
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"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"}
|