@marmooo/midy 0.4.3 → 0.4.4
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 +1 -0
- package/esm/midy-GM1.d.ts +10 -5
- package/esm/midy-GM1.d.ts.map +1 -1
- package/esm/midy-GM1.js +61 -34
- package/esm/midy-GM2.d.ts +15 -9
- package/esm/midy-GM2.d.ts.map +1 -1
- package/esm/midy-GM2.js +122 -78
- package/esm/midy-GMLite.d.ts +10 -5
- package/esm/midy-GMLite.d.ts.map +1 -1
- package/esm/midy-GMLite.js +64 -36
- package/esm/midy.d.ts +54 -6
- package/esm/midy.d.ts.map +1 -1
- package/esm/midy.js +232 -71
- 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 +61 -34
- package/script/midy-GM2.d.ts +15 -9
- package/script/midy-GM2.d.ts.map +1 -1
- package/script/midy-GM2.js +122 -78
- package/script/midy-GMLite.d.ts +10 -5
- package/script/midy-GMLite.d.ts.map +1 -1
- package/script/midy-GMLite.js +64 -36
- package/script/midy.d.ts +54 -6
- package/script/midy.d.ts.map +1 -1
- package/script/midy.js +232 -71
package/README.md
CHANGED
package/esm/midy-GM1.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export class MidyGM1 extends EventTarget {
|
|
|
12
12
|
coarseTuning: number;
|
|
13
13
|
};
|
|
14
14
|
constructor(audioContext: any);
|
|
15
|
+
perceptualSmoothingTime: number;
|
|
15
16
|
mode: string;
|
|
16
17
|
numChannels: number;
|
|
17
18
|
ticksPerBeat: number;
|
|
@@ -55,6 +56,7 @@ export class MidyGM1 extends EventTarget {
|
|
|
55
56
|
freqModLFO: (_channel: any, note: any, scheduleTime: any) => void;
|
|
56
57
|
delayVibLFO: (_channel: any, _note: any, _scheduleTime: any) => void;
|
|
57
58
|
freqVibLFO: (_channel: any, _note: any, _scheduleTime: any) => void;
|
|
59
|
+
detune: (channel: any, note: any, scheduleTime: any) => void;
|
|
58
60
|
};
|
|
59
61
|
controlChangeHandlers: any[];
|
|
60
62
|
channels: any[];
|
|
@@ -92,6 +94,7 @@ export class MidyGM1 extends EventTarget {
|
|
|
92
94
|
pause(): Promise<void>;
|
|
93
95
|
resume(): Promise<void>;
|
|
94
96
|
seekTo(second: any): void;
|
|
97
|
+
tempoChange(tempo: any): void;
|
|
95
98
|
calcTotalTime(): number;
|
|
96
99
|
currentTime(): number;
|
|
97
100
|
processScheduledNotes(channel: any, callback: any): Promise<void>;
|
|
@@ -101,8 +104,9 @@ export class MidyGM1 extends EventTarget {
|
|
|
101
104
|
centToHz(cent: any): number;
|
|
102
105
|
calcChannelDetune(channel: any): any;
|
|
103
106
|
updateChannelDetune(channel: any, scheduleTime: any): void;
|
|
104
|
-
|
|
107
|
+
calcNoteDetune(channel: any, note: any): any;
|
|
105
108
|
setVolumeEnvelope(note: any, scheduleTime: any): void;
|
|
109
|
+
setDetune(channel: any, note: any, scheduleTime: any): void;
|
|
106
110
|
setPitchEnvelope(note: any, scheduleTime: any): void;
|
|
107
111
|
clampCutoffFrequency(frequency: any): number;
|
|
108
112
|
setFilterEnvelope(note: any, scheduleTime: any): void;
|
|
@@ -140,20 +144,21 @@ export class MidyGM1 extends EventTarget {
|
|
|
140
144
|
freqModLFO: (_channel: any, note: any, scheduleTime: any) => void;
|
|
141
145
|
delayVibLFO: (_channel: any, _note: any, _scheduleTime: any) => void;
|
|
142
146
|
freqVibLFO: (_channel: any, _note: any, _scheduleTime: any) => void;
|
|
147
|
+
detune: (channel: any, note: any, scheduleTime: any) => void;
|
|
143
148
|
};
|
|
144
149
|
getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array<any>;
|
|
145
150
|
applyVoiceParams(channel: any, controllerType: any, scheduleTime: any): void;
|
|
146
151
|
createControlChangeHandlers(): any[];
|
|
147
152
|
setControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
|
|
148
153
|
updateModulation(channel: any, scheduleTime: any): void;
|
|
149
|
-
setModulationDepth(channelNumber: any,
|
|
150
|
-
setVolume(channelNumber: any,
|
|
154
|
+
setModulationDepth(channelNumber: any, value: any, scheduleTime: any): void;
|
|
155
|
+
setVolume(channelNumber: any, value: any, scheduleTime: any): void;
|
|
151
156
|
panToGain(pan: any): {
|
|
152
157
|
gainLeft: number;
|
|
153
158
|
gainRight: number;
|
|
154
159
|
};
|
|
155
|
-
setPan(channelNumber: any,
|
|
156
|
-
setExpression(channelNumber: any,
|
|
160
|
+
setPan(channelNumber: any, value: any, scheduleTime: any): void;
|
|
161
|
+
setExpression(channelNumber: any, value: any, scheduleTime: any): void;
|
|
157
162
|
dataEntryLSB(channelNumber: any, value: any, scheduleTime: any): void;
|
|
158
163
|
updateChannelVolume(channel: any, scheduleTime: any): void;
|
|
159
164
|
setSustainPedal(channelNumber: any, value: any, scheduleTime: any): void;
|
package/esm/midy-GM1.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAuGA;
|
|
1
|
+
{"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAuGA;IAoCE;;;;;;;;;;;MAWE;IAEF,+BAgBC;IA5DD,gCAAgC;IAChC,aAAa;IACb,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,0BAAuD;IACvD,4BAAyB;IACzB,0BAAuB;IACvB,kCAA+B;IAC/B,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,iCAEG;IACH,cAAU;IACV,cAAa;IACb,iBAAY;IACZ,gBAAc;IACd,oBAAkB;IAClB,sBAAwB;IACxB,2BAAqC;IAiBnC,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF,uBAAmD;IACnD;;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,gBAAiD;IAMnD,mCASC;IAED,2DAYC;IAED,yCAmBC;IAED,oCASC;IAED,sBAoCC;IAED,8DAeC;IAED;;;;MAeC;IAED,yCAaC;IAED,kDASC;IAED,4DASC;IAED,gEAsDC;IAED,mCASC;IAED,uBAUC;IAED,yDAqCC;IAED,2BA0EC;IAED,uDAEC;IAED,wDAEC;IAED,qCAKC;IAED;;;MAwDC;IAED,kGAeC;IAED,mGAeC;IAED,wEAQC;IAED,uBAMC;IAED,sBAIC;IAED,uBAMC;IAED,wBAIC;IAED,0BAKC;IAED,8BAMC;IAED,wBAYC;IAED,sBAIC;IAED,kEAWC;IAED,kFAYC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,2DAIC;IAED,6CAEC;IAED,sDAeC;IAED,4DASC;IAED,qDAkBC;IAED,6CAIC;IAED,sDA6BC;IAED,kEAqBC;IAED,4GAkCC;IAED,uEAyCC;IAED,0EAiBC;IAED,oEASC;IAED,0FAwBC;IAED,gCASC;IAED,iEAwBC;IAED,4FAmBC;IAED,6CAUC;IAED,qDAUC;IAED,qFAeC;IAED,+BAmBC;IAED,kDAOC;IAED,sFA2BC;IAED,mFAGC;IAED,wFAGC;IAED,sEAUC;IAED,mEAYC;IAED,wDAKC;IAED,sDAOC;IAED,mDAMC;IAED,kDAKC;IAED;;;;;;;;;;;;MAoCC;IAED,oFAMC;IAED,6EA2BC;IAED,qCAeC;IAED,+FAWC;IAED,wDAUC;IAED,4EAKC;IAED,mEAKC;IAED;;;MAMC;IAED,gEAKC;IAED,uEAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,2DAMC;IAED,uDAoBC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,iEAMC;IAED,uEAQC;IAED,mEAKC;IAED,yEAQC;IAED,gFAGC;IAED,6CAqBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAUC;IAED,4EAaC;IAED,4DAGC;IAED,qDAKC;IAED,gDAYC;IAGD,6DAgBC;CACF"}
|
package/esm/midy-GM1.js
CHANGED
|
@@ -161,6 +161,16 @@ const releaseCurve = 1 / (-Math.log(cbToRatio(-600)));
|
|
|
161
161
|
export class MidyGM1 extends EventTarget {
|
|
162
162
|
constructor(audioContext) {
|
|
163
163
|
super();
|
|
164
|
+
// https://pmc.ncbi.nlm.nih.gov/articles/PMC4191557/
|
|
165
|
+
// https://pubmed.ncbi.nlm.nih.gov/12488797/
|
|
166
|
+
// Gap detection studies indicate humans detect temporal discontinuities
|
|
167
|
+
// around 2–3 ms. Smoothing over ~4 ms is perceived as continuous.
|
|
168
|
+
Object.defineProperty(this, "perceptualSmoothingTime", {
|
|
169
|
+
enumerable: true,
|
|
170
|
+
configurable: true,
|
|
171
|
+
writable: true,
|
|
172
|
+
value: 0.004
|
|
173
|
+
});
|
|
164
174
|
Object.defineProperty(this, "mode", {
|
|
165
175
|
enumerable: true,
|
|
166
176
|
configurable: true,
|
|
@@ -773,6 +783,13 @@ export class MidyGM1 extends EventTarget {
|
|
|
773
783
|
this.isSeeking = true;
|
|
774
784
|
}
|
|
775
785
|
}
|
|
786
|
+
tempoChange(tempo) {
|
|
787
|
+
const timeScale = this.tempo / tempo;
|
|
788
|
+
this.resumeTime = this.resumeTime * timeScale;
|
|
789
|
+
this.tempo = tempo;
|
|
790
|
+
this.totalTime = this.calcTotalTime();
|
|
791
|
+
this.seekTo(this.currentTime() * timeScale);
|
|
792
|
+
}
|
|
776
793
|
calcTotalTime() {
|
|
777
794
|
const totalTimeEventTypes = this.totalTimeEventTypes;
|
|
778
795
|
const timeline = this.timeline;
|
|
@@ -842,13 +859,11 @@ export class MidyGM1 extends EventTarget {
|
|
|
842
859
|
}
|
|
843
860
|
updateChannelDetune(channel, scheduleTime) {
|
|
844
861
|
this.processScheduledNotes(channel, (note) => {
|
|
845
|
-
this.
|
|
862
|
+
this.setDetune(channel, note, scheduleTime);
|
|
846
863
|
});
|
|
847
864
|
}
|
|
848
|
-
|
|
849
|
-
note.
|
|
850
|
-
.cancelScheduledValues(scheduleTime)
|
|
851
|
-
.setValueAtTime(channel.detune, scheduleTime);
|
|
865
|
+
calcNoteDetune(channel, note) {
|
|
866
|
+
return channel.detune + note.voiceParams.detune;
|
|
852
867
|
}
|
|
853
868
|
setVolumeEnvelope(note, scheduleTime) {
|
|
854
869
|
const { voiceParams, startTime } = note;
|
|
@@ -861,30 +876,38 @@ export class MidyGM1 extends EventTarget {
|
|
|
861
876
|
note.volumeEnvelopeNode.gain
|
|
862
877
|
.cancelScheduledValues(scheduleTime)
|
|
863
878
|
.setValueAtTime(0, startTime)
|
|
864
|
-
.setValueAtTime(
|
|
865
|
-
.
|
|
879
|
+
.setValueAtTime(1e-6, volDelay)
|
|
880
|
+
.exponentialRampToValueAtTime(attackVolume, volAttack)
|
|
866
881
|
.setValueAtTime(attackVolume, volHold)
|
|
867
882
|
.setTargetAtTime(sustainVolume, volHold, decayDuration * decayCurve);
|
|
868
883
|
}
|
|
884
|
+
setDetune(channel, note, scheduleTime) {
|
|
885
|
+
const detune = this.calcNoteDetune(channel, note);
|
|
886
|
+
note.bufferSource.detune
|
|
887
|
+
.cancelScheduledValues(scheduleTime)
|
|
888
|
+
.setValueAtTime(detune, scheduleTime);
|
|
889
|
+
const timeConstant = this.perceptualSmoothingTime / 5; // 99.3% (5 * tau)
|
|
890
|
+
note.bufferSource.detune
|
|
891
|
+
.cancelAndHoldAtTime(scheduleTime)
|
|
892
|
+
.setTargetAtTime(detune, scheduleTime, timeConstant);
|
|
893
|
+
}
|
|
869
894
|
setPitchEnvelope(note, scheduleTime) {
|
|
870
|
-
const { voiceParams } = note;
|
|
895
|
+
const { bufferSource, voiceParams } = note;
|
|
871
896
|
const baseRate = voiceParams.playbackRate;
|
|
872
|
-
|
|
897
|
+
bufferSource.playbackRate
|
|
873
898
|
.cancelScheduledValues(scheduleTime)
|
|
874
|
-
.setValueAtTime(baseRate,
|
|
899
|
+
.setValueAtTime(baseRate, scheduleTime);
|
|
875
900
|
const modEnvToPitch = voiceParams.modEnvToPitch;
|
|
876
901
|
if (modEnvToPitch === 0)
|
|
877
902
|
return;
|
|
878
|
-
const
|
|
879
|
-
const peekPitch = basePitch + modEnvToPitch;
|
|
880
|
-
const peekRate = this.centToRate(peekPitch);
|
|
903
|
+
const peekRate = baseRate * this.centToRate(modEnvToPitch);
|
|
881
904
|
const modDelay = note.startTime + voiceParams.modDelay;
|
|
882
905
|
const modAttack = modDelay + voiceParams.modAttack;
|
|
883
906
|
const modHold = modAttack + voiceParams.modHold;
|
|
884
907
|
const decayDuration = voiceParams.modDecay;
|
|
885
|
-
|
|
908
|
+
bufferSource.playbackRate
|
|
886
909
|
.setValueAtTime(baseRate, modDelay)
|
|
887
|
-
.
|
|
910
|
+
.exponentialRampToValueAtTime(peekRate, modAttack)
|
|
888
911
|
.setValueAtTime(peekRate, modHold)
|
|
889
912
|
.setTargetAtTime(baseRate, modHold, decayDuration * decayCurve);
|
|
890
913
|
}
|
|
@@ -915,7 +938,7 @@ export class MidyGM1 extends EventTarget {
|
|
|
915
938
|
.cancelScheduledValues(scheduleTime)
|
|
916
939
|
.setValueAtTime(adjustedBaseFreq, startTime)
|
|
917
940
|
.setValueAtTime(adjustedBaseFreq, modDelay)
|
|
918
|
-
.
|
|
941
|
+
.exponentialRampToValueAtTime(adjustedPeekFreq, modAttack)
|
|
919
942
|
.setValueAtTime(adjustedPeekFreq, modHold)
|
|
920
943
|
.setTargetAtTime(adjustedSustainFreq, modHold, decayDuration * decayCurve);
|
|
921
944
|
}
|
|
@@ -986,8 +1009,8 @@ export class MidyGM1 extends EventTarget {
|
|
|
986
1009
|
this.setVolumeEnvelope(note, now);
|
|
987
1010
|
this.setFilterEnvelope(note, now);
|
|
988
1011
|
this.setPitchEnvelope(note, now);
|
|
989
|
-
this.
|
|
990
|
-
if (0 < state.
|
|
1012
|
+
this.setDetune(channel, note, now);
|
|
1013
|
+
if (0 < state.modulationDepthMSB) {
|
|
991
1014
|
this.startModulation(channel, note, now);
|
|
992
1015
|
}
|
|
993
1016
|
note.bufferSource.connect(note.filterNode);
|
|
@@ -1067,15 +1090,14 @@ export class MidyGM1 extends EventTarget {
|
|
|
1067
1090
|
}
|
|
1068
1091
|
releaseNote(channel, note, endTime) {
|
|
1069
1092
|
endTime ??= this.audioContext.currentTime;
|
|
1070
|
-
const
|
|
1071
|
-
const volRelease = endTime +
|
|
1072
|
-
const modRelease = endTime + note.voiceParams.modRelease;
|
|
1093
|
+
const volDuration = note.voiceParams.volRelease;
|
|
1094
|
+
const volRelease = endTime + volDuration;
|
|
1073
1095
|
note.filterNode.frequency
|
|
1074
1096
|
.cancelScheduledValues(endTime)
|
|
1075
|
-
.
|
|
1097
|
+
.setTargetAtTime(note.adjustedBaseFreq, endTime, note.voiceParams.modRelease * releaseCurve);
|
|
1076
1098
|
note.volumeEnvelopeNode.gain
|
|
1077
1099
|
.cancelScheduledValues(endTime)
|
|
1078
|
-
.setTargetAtTime(0, endTime,
|
|
1100
|
+
.setTargetAtTime(0, endTime, volDuration * releaseCurve);
|
|
1079
1101
|
return new Promise((resolve) => {
|
|
1080
1102
|
this.scheduleTask(() => {
|
|
1081
1103
|
const bufferSource = note.bufferSource;
|
|
@@ -1271,6 +1293,9 @@ export class MidyGM1 extends EventTarget {
|
|
|
1271
1293
|
},
|
|
1272
1294
|
delayVibLFO: (_channel, _note, _scheduleTime) => { },
|
|
1273
1295
|
freqVibLFO: (_channel, _note, _scheduleTime) => { },
|
|
1296
|
+
detune: (channel, note, scheduleTime) => {
|
|
1297
|
+
this.setDetune(channel, note, scheduleTime);
|
|
1298
|
+
},
|
|
1274
1299
|
};
|
|
1275
1300
|
}
|
|
1276
1301
|
getControllerState(channel, noteNumber, velocity) {
|
|
@@ -1351,18 +1376,18 @@ export class MidyGM1 extends EventTarget {
|
|
|
1351
1376
|
}
|
|
1352
1377
|
});
|
|
1353
1378
|
}
|
|
1354
|
-
setModulationDepth(channelNumber,
|
|
1379
|
+
setModulationDepth(channelNumber, value, scheduleTime) {
|
|
1355
1380
|
const channel = this.channels[channelNumber];
|
|
1356
1381
|
if (!(0 <= scheduleTime))
|
|
1357
1382
|
scheduleTime = this.audioContext.currentTime;
|
|
1358
|
-
channel.state.modulationDepthMSB =
|
|
1383
|
+
channel.state.modulationDepthMSB = value / 127;
|
|
1359
1384
|
this.updateModulation(channel, scheduleTime);
|
|
1360
1385
|
}
|
|
1361
|
-
setVolume(channelNumber,
|
|
1386
|
+
setVolume(channelNumber, value, scheduleTime) {
|
|
1362
1387
|
if (!(0 <= scheduleTime))
|
|
1363
1388
|
scheduleTime = this.audioContext.currentTime;
|
|
1364
1389
|
const channel = this.channels[channelNumber];
|
|
1365
|
-
channel.state.volumeMSB =
|
|
1390
|
+
channel.state.volumeMSB = value / 127;
|
|
1366
1391
|
this.updateChannelVolume(channel, scheduleTime);
|
|
1367
1392
|
}
|
|
1368
1393
|
panToGain(pan) {
|
|
@@ -1372,18 +1397,18 @@ export class MidyGM1 extends EventTarget {
|
|
|
1372
1397
|
gainRight: Math.sin(theta),
|
|
1373
1398
|
};
|
|
1374
1399
|
}
|
|
1375
|
-
setPan(channelNumber,
|
|
1400
|
+
setPan(channelNumber, value, scheduleTime) {
|
|
1376
1401
|
if (!(0 <= scheduleTime))
|
|
1377
1402
|
scheduleTime = this.audioContext.currentTime;
|
|
1378
1403
|
const channel = this.channels[channelNumber];
|
|
1379
|
-
channel.state.panMSB =
|
|
1404
|
+
channel.state.panMSB = value / 127;
|
|
1380
1405
|
this.updateChannelVolume(channel, scheduleTime);
|
|
1381
1406
|
}
|
|
1382
|
-
setExpression(channelNumber,
|
|
1407
|
+
setExpression(channelNumber, value, scheduleTime) {
|
|
1383
1408
|
if (!(0 <= scheduleTime))
|
|
1384
1409
|
scheduleTime = this.audioContext.currentTime;
|
|
1385
1410
|
const channel = this.channels[channelNumber];
|
|
1386
|
-
channel.state.expressionMSB =
|
|
1411
|
+
channel.state.expressionMSB = value / 127;
|
|
1387
1412
|
this.updateChannelVolume(channel, scheduleTime);
|
|
1388
1413
|
}
|
|
1389
1414
|
dataEntryLSB(channelNumber, value, scheduleTime) {
|
|
@@ -1392,14 +1417,14 @@ export class MidyGM1 extends EventTarget {
|
|
|
1392
1417
|
}
|
|
1393
1418
|
updateChannelVolume(channel, scheduleTime) {
|
|
1394
1419
|
const state = channel.state;
|
|
1395
|
-
const
|
|
1420
|
+
const gain = state.volumeMSB * state.expressionMSB;
|
|
1396
1421
|
const { gainLeft, gainRight } = this.panToGain(state.panMSB);
|
|
1397
1422
|
channel.gainL.gain
|
|
1398
1423
|
.cancelScheduledValues(scheduleTime)
|
|
1399
|
-
.setValueAtTime(
|
|
1424
|
+
.setValueAtTime(gain * gainLeft, scheduleTime);
|
|
1400
1425
|
channel.gainR.gain
|
|
1401
1426
|
.cancelScheduledValues(scheduleTime)
|
|
1402
|
-
.setValueAtTime(
|
|
1427
|
+
.setValueAtTime(gain * gainRight, scheduleTime);
|
|
1403
1428
|
}
|
|
1404
1429
|
setSustainPedal(channelNumber, value, scheduleTime) {
|
|
1405
1430
|
const channel = this.channels[channelNumber];
|
|
@@ -1454,6 +1479,8 @@ export class MidyGM1 extends EventTarget {
|
|
|
1454
1479
|
case 2:
|
|
1455
1480
|
this.handleCoarseTuningRPN(channelNumber, scheduleTime);
|
|
1456
1481
|
break;
|
|
1482
|
+
case 16383: // NULL
|
|
1483
|
+
break;
|
|
1457
1484
|
default:
|
|
1458
1485
|
console.warn(`Channel ${channelNumber}: Unsupported RPN MSB=${channel.rpnMSB} LSB=${channel.rpnLSB}`);
|
|
1459
1486
|
}
|
package/esm/midy-GM2.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export class MidyGM2 extends EventTarget {
|
|
|
15
15
|
coarseTuning: number;
|
|
16
16
|
};
|
|
17
17
|
constructor(audioContext: any);
|
|
18
|
+
perceptualSmoothingTime: number;
|
|
18
19
|
mode: string;
|
|
19
20
|
masterFineTuning: number;
|
|
20
21
|
masterCoarseTuning: number;
|
|
@@ -75,6 +76,7 @@ export class MidyGM2 extends EventTarget {
|
|
|
75
76
|
freqModLFO: (_channel: any, note: any, scheduleTime: any) => void;
|
|
76
77
|
delayVibLFO: (channel: any, note: any, _scheduleTime: any) => void;
|
|
77
78
|
freqVibLFO: (channel: any, note: any, scheduleTime: any) => void;
|
|
79
|
+
detune: (channel: any, note: any, scheduleTime: any) => void;
|
|
78
80
|
};
|
|
79
81
|
controlChangeHandlers: any[];
|
|
80
82
|
keyBasedControllerHandlers: any[];
|
|
@@ -128,6 +130,7 @@ export class MidyGM2 extends EventTarget {
|
|
|
128
130
|
pause(): Promise<void>;
|
|
129
131
|
resume(): Promise<void>;
|
|
130
132
|
seekTo(second: any): void;
|
|
133
|
+
tempoChange(tempo: any): void;
|
|
131
134
|
calcTotalTime(): number;
|
|
132
135
|
currentTime(): number;
|
|
133
136
|
processScheduledNotes(channel: any, callback: any): Promise<void>;
|
|
@@ -162,14 +165,16 @@ export class MidyGM2 extends EventTarget {
|
|
|
162
165
|
centToRate(cent: any): number;
|
|
163
166
|
centToHz(cent: any): number;
|
|
164
167
|
calcChannelDetune(channel: any): any;
|
|
165
|
-
calcNoteDetune(channel: any, note: any): any;
|
|
166
168
|
updateChannelDetune(channel: any, scheduleTime: any): void;
|
|
167
|
-
|
|
169
|
+
calcScaleOctaveTuning(channel: any, note: any): any;
|
|
170
|
+
calcNoteDetune(channel: any, note: any): any;
|
|
168
171
|
getPortamentoTime(channel: any, note: any): number;
|
|
169
172
|
getPitchIncrementSpeed(value: any): number;
|
|
170
173
|
setPortamentoVolumeEnvelope(channel: any, note: any, scheduleTime: any): void;
|
|
171
174
|
setVolumeEnvelope(channel: any, note: any, scheduleTime: any): void;
|
|
172
|
-
|
|
175
|
+
setPortamentoDetune(channel: any, note: any, scheduleTime: any): void;
|
|
176
|
+
setDetune(channel: any, note: any, scheduleTime: any): void;
|
|
177
|
+
setPortamentoPitchEnvelope(channel: any, note: any, scheduleTime: any): void;
|
|
173
178
|
setPitchEnvelope(note: any, scheduleTime: any): void;
|
|
174
179
|
clampCutoffFrequency(frequency: any): number;
|
|
175
180
|
setPortamentoFilterEnvelope(channel: any, note: any, scheduleTime: any): void;
|
|
@@ -204,8 +209,8 @@ export class MidyGM2 extends EventTarget {
|
|
|
204
209
|
setChorusSend(channel: any, note: any, scheduleTime: any): void;
|
|
205
210
|
setDelayModLFO(note: any): void;
|
|
206
211
|
setFreqModLFO(note: any, scheduleTime: any): void;
|
|
207
|
-
setFreqVibLFO(channel: any, note: any, scheduleTime: any): void;
|
|
208
212
|
setDelayVibLFO(channel: any, note: any): void;
|
|
213
|
+
setFreqVibLFO(channel: any, note: any, scheduleTime: any): void;
|
|
209
214
|
createVoiceParamsHandlers(): {
|
|
210
215
|
modLfoToPitch: (channel: any, note: any, scheduleTime: any) => void;
|
|
211
216
|
vibLfoToPitch: (channel: any, note: any, scheduleTime: any) => void;
|
|
@@ -217,6 +222,7 @@ export class MidyGM2 extends EventTarget {
|
|
|
217
222
|
freqModLFO: (_channel: any, note: any, scheduleTime: any) => void;
|
|
218
223
|
delayVibLFO: (channel: any, note: any, _scheduleTime: any) => void;
|
|
219
224
|
freqVibLFO: (channel: any, note: any, scheduleTime: any) => void;
|
|
225
|
+
detune: (channel: any, note: any, scheduleTime: any) => void;
|
|
220
226
|
};
|
|
221
227
|
getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array<any>;
|
|
222
228
|
applyVoiceParams(channel: any, controllerType: any, scheduleTime: any): void;
|
|
@@ -224,16 +230,16 @@ export class MidyGM2 extends EventTarget {
|
|
|
224
230
|
setControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
|
|
225
231
|
setBankMSB(channelNumber: any, msb: any): void;
|
|
226
232
|
updateModulation(channel: any, scheduleTime: any): void;
|
|
227
|
-
setModulationDepth(channelNumber: any,
|
|
233
|
+
setModulationDepth(channelNumber: any, value: any, scheduleTime: any): void;
|
|
228
234
|
updatePortamento(channel: any, scheduleTime: any): void;
|
|
229
|
-
setPortamentoTime(channelNumber: any,
|
|
230
|
-
setVolume(channelNumber: any,
|
|
235
|
+
setPortamentoTime(channelNumber: any, value: any, scheduleTime: any): void;
|
|
236
|
+
setVolume(channelNumber: any, value: any, scheduleTime: any): void;
|
|
231
237
|
panToGain(pan: any): {
|
|
232
238
|
gainLeft: number;
|
|
233
239
|
gainRight: number;
|
|
234
240
|
};
|
|
235
|
-
setPan(channelNumber: any,
|
|
236
|
-
setExpression(channelNumber: any,
|
|
241
|
+
setPan(channelNumber: any, value: any, scheduleTime: any): void;
|
|
242
|
+
setExpression(channelNumber: any, value: any, scheduleTime: any): void;
|
|
237
243
|
setBankLSB(channelNumber: any, lsb: any): void;
|
|
238
244
|
dataEntryLSB(channelNumber: any, value: any, scheduleTime: any): void;
|
|
239
245
|
updateChannelVolume(channel: any, scheduleTime: any): void;
|
package/esm/midy-GM2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"AA+JA;
|
|
1
|
+
{"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"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"}
|