@marmooo/midy 0.4.7 → 0.4.8
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-GM2.d.ts +3 -0
- package/esm/midy-GM2.d.ts.map +1 -1
- package/esm/midy-GM2.js +12 -10
- package/esm/midy.d.ts +5 -0
- package/esm/midy.d.ts.map +1 -1
- package/esm/midy.js +36 -14
- package/package.json +1 -1
- package/script/midy-GM2.d.ts +3 -0
- package/script/midy-GM2.d.ts.map +1 -1
- package/script/midy-GM2.js +12 -10
- package/script/midy.d.ts +5 -0
- package/script/midy.d.ts.map +1 -1
- package/script/midy.js +36 -14
package/esm/midy-GM2.d.ts
CHANGED
|
@@ -237,6 +237,7 @@ export class MidyGM2 extends EventTarget {
|
|
|
237
237
|
updatePortamento(channel: any, scheduleTime: any): void;
|
|
238
238
|
setPortamentoTime(channelNumber: any, value: any, scheduleTime: any): void;
|
|
239
239
|
setVolume(channelNumber: any, value: any, scheduleTime: any): void;
|
|
240
|
+
applyVolume(channel: any, scheduleTime: any): void;
|
|
240
241
|
panToGain(pan: any): {
|
|
241
242
|
gainLeft: number;
|
|
242
243
|
gainRight: number;
|
|
@@ -320,7 +321,9 @@ export class MidyGM2 extends EventTarget {
|
|
|
320
321
|
getLFOAmplitudeDepth(channel: any): number;
|
|
321
322
|
createEffectHandlers(): any[];
|
|
322
323
|
setControlChangeEffects(channel: any, note: any, scheduleTime: any): void;
|
|
324
|
+
setChannelPressureEffects(channel: any, note: any, scheduleTime: any): void;
|
|
323
325
|
setPressureEffects(channel: any, note: any, tableName: any, scheduleTime: any): void;
|
|
326
|
+
handleChannelPressureSysEx(data: any, scheduleTime: any): void;
|
|
324
327
|
handlePressureSysEx(data: any, tableName: any, scheduleTime: any): void;
|
|
325
328
|
handleControlChangeSysEx(data: any, scheduleTime: any): void;
|
|
326
329
|
getKeyBasedValue(channel: any, keyNumber: any, controllerType: any): any;
|
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":"AAwLA;IAwDE;;;;;;;;;;;;;;MAcE;IAEF,+BAsBC;IAzFD,gCAAgC;IAChC,aAAa;IACb,yBAAqB;IACrB,2BAAuB;IACvB;;;;MAIE;IACF;;;;;;MAME;IACF,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAsB;IACtB,+BAA6B;IAC7B,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,0BAAuD;IACvD,4BAAyB;IACzB,0BAAuB;IACvB,kCAA+B;IAC/B,qBAAqC;IACrC,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;IACrC,+BAEE;IAoBA,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF,uBAAmD;IACnD;;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,kCAAyE;IACzE,sBAAiD;IACjD,gBAAiD;IACjD;;;kBAAyD;IACzD;;;;;;;;MAAyD;IAQ3D,mCASC;IAED,2DAYC;IAED,yCAmBC;IAED,oCASC;IAED,sBAoCC;IAED,8DAeC;IAED;;;;MAeC;IAED,sCAKC;IAED,yCAqBC;IAED,2CAsBC;IAED,kDA6BC;IAED,mDAIC;IAED,2FAWC;IAED,gEAyDC;IAED,mCASC;IAED,uBAUC;IAED,yDAqCC;IAED,2BAoFC;IAED,uDAEC;IAED,wDAEC;IAED,qCAMC;IAED;;;MAqFC;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,kFAuBC;IAED;;;;MASC;IAED,gFAUC;IAED,mFAYC;IAED,sGAcC;IAID;;;MA8BC;IAED;;;kBA6BC;IAED;;;;;;;;MA0CC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAWC;IAED,2DAQC;IAED,oDAEC;IAED,6CAIC;IAED,mDAIC;IAED,2CAoDC;IAED,8EASC;IAED,oEAgBC;IAED,sEASC;IAED,4DASC;IAED,6EAOC;IAED,qDAkBC;IAED,6CAIC;IAED,8EAmBC;IAED,oEA+BC;IAED,kEAqBC;IAED,+DAeC;IAED,4GAkCC;IAED,uEAkEC;IAED,0EAiBC;IAED,8EAoBC;IAED,oEAuBC;IAED,0FAuBC;IAED,gCAmBC;IAED,iEAwBC;IAED,4FA2BC;IAED,6CAUC;IAED,qDAUC;IAED,qFAeC;IAED,uFAkBC;IAED,+BAuBC;IAED,kDAOC;IAED,sBAEC;IAED,mFAcC;IAED,4EAYC;IAED,wFAGC;IAED,sEAWC;IAED,mEAaC;IAED,mEAYC;IAED,sEAMC;IAED,oEAQC;IAED,gEAyBC;IAED,gEAyBC;IAED,gCAKC;IAED,kDAKC;IAED,8CAOC;IAED,gEAMC;IAED;;;;;;;;;;;;MAwDC;IAED,oFAOC;IAED,6EA+BC;IAED,qCA2BC;IAED,+FAeC;IAED,+CAEC;IAED,wDAUC;IAED,4EAMC;IAED,wDAeC;IAED,2EAMC;IAED,
|
|
1
|
+
{"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"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"}
|
package/esm/midy-GM2.js
CHANGED
|
@@ -1857,7 +1857,7 @@ export class MidyGM2 extends EventTarget {
|
|
|
1857
1857
|
const next = this.calcChannelPressureEffectValue(channel, 0);
|
|
1858
1858
|
channel.detune += next - prev;
|
|
1859
1859
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
1860
|
-
this.
|
|
1860
|
+
this.setChannelPressureEffects(channel, note, scheduleTime);
|
|
1861
1861
|
});
|
|
1862
1862
|
this.applyVoiceParams(channel, 13, scheduleTime);
|
|
1863
1863
|
}
|
|
@@ -2213,6 +2213,9 @@ export class MidyGM2 extends EventTarget {
|
|
|
2213
2213
|
scheduleTime = this.audioContext.currentTime;
|
|
2214
2214
|
const channel = this.channels[channelNumber];
|
|
2215
2215
|
channel.state.volumeMSB = value / 127;
|
|
2216
|
+
this.applyVolume(channel, scheduleTime);
|
|
2217
|
+
}
|
|
2218
|
+
applyVolume(channel, scheduleTime) {
|
|
2216
2219
|
if (channel.isDrum) {
|
|
2217
2220
|
for (let i = 0; i < 128; i++) {
|
|
2218
2221
|
this.updateKeyBasedVolume(channel, i, scheduleTime);
|
|
@@ -2668,7 +2671,7 @@ export class MidyGM2 extends EventTarget {
|
|
|
2668
2671
|
case 9:
|
|
2669
2672
|
switch (data[3]) {
|
|
2670
2673
|
case 1: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
|
|
2671
|
-
return this.
|
|
2674
|
+
return this.handleChannelPressureSysEx(data, scheduelTime);
|
|
2672
2675
|
case 3: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
|
|
2673
2676
|
return this.handleControlChangeSysEx(data, scheduleTime);
|
|
2674
2677
|
default:
|
|
@@ -3020,14 +3023,7 @@ export class MidyGM2 extends EventTarget {
|
|
|
3020
3023
|
this.setFilterEnvelope(channel, note, scheduleTime);
|
|
3021
3024
|
}
|
|
3022
3025
|
};
|
|
3023
|
-
handlers[2] = (channel, note, scheduleTime) =>
|
|
3024
|
-
if (0.5 <= channel.state.portamemento && 0 <= note.portamentoNoteNumber) {
|
|
3025
|
-
this.setPortamentoVolumeEnvelope(channel, note, scheduleTime);
|
|
3026
|
-
}
|
|
3027
|
-
else {
|
|
3028
|
-
this.setVolumeEnvelope(channel, note, scheduleTime);
|
|
3029
|
-
}
|
|
3030
|
-
};
|
|
3026
|
+
handlers[2] = (channel, note, scheduleTime) => this.applyVolume(channel, note, scheduleTime);
|
|
3031
3027
|
handlers[3] = (channel, note, scheduleTime) => this.setModLfoToPitch(channel, note, scheduleTime);
|
|
3032
3028
|
handlers[4] = (channel, note, scheduleTime) => this.setModLfoToFilterFc(channel, note, scheduleTime);
|
|
3033
3029
|
handlers[5] = (channel, note, scheduleTime) => this.setModLfoToVolume(channel, note, scheduleTime);
|
|
@@ -3043,6 +3039,9 @@ export class MidyGM2 extends EventTarget {
|
|
|
3043
3039
|
handlers[i](channel, note, scheduleTime);
|
|
3044
3040
|
}
|
|
3045
3041
|
}
|
|
3042
|
+
setChannelPressureEffects(channel, note, scheduleTime) {
|
|
3043
|
+
this.setPressureEffects(channel, note, "channelPressureTable", scheduleTime);
|
|
3044
|
+
}
|
|
3046
3045
|
setPressureEffects(channel, note, tableName, scheduleTime) {
|
|
3047
3046
|
const handlers = this.effectHandlers;
|
|
3048
3047
|
const table = channel[tableName];
|
|
@@ -3054,6 +3053,9 @@ export class MidyGM2 extends EventTarget {
|
|
|
3054
3053
|
handlers[i](channel, note, scheduleTime);
|
|
3055
3054
|
}
|
|
3056
3055
|
}
|
|
3056
|
+
handleChannelPressureSysEx(data, scheduleTime) {
|
|
3057
|
+
this.handlePressureSysEx(data, "channelPressureTable", scheduleTime);
|
|
3058
|
+
}
|
|
3057
3059
|
handlePressureSysEx(data, tableName, scheduleTime) {
|
|
3058
3060
|
const channelNumber = data[4];
|
|
3059
3061
|
const channel = this.channels[channelNumber];
|
package/esm/midy.d.ts
CHANGED
|
@@ -260,6 +260,7 @@ export class Midy extends EventTarget {
|
|
|
260
260
|
updatePortamento(channel: any, scheduleTime: any): void;
|
|
261
261
|
setPortamentoTime(channelNumber: any, value: any, scheduleTime: any): void;
|
|
262
262
|
setVolume(channelNumber: any, value: any, scheduleTime: any): void;
|
|
263
|
+
applyVolume(channel: any, scheduleTime: any): void;
|
|
263
264
|
panToGain(pan: any): {
|
|
264
265
|
gainLeft: number;
|
|
265
266
|
gainRight: number;
|
|
@@ -363,7 +364,11 @@ export class Midy extends EventTarget {
|
|
|
363
364
|
getLFOAmplitudeDepth(channel: any, note: any): number;
|
|
364
365
|
createEffectHandlers(): any[];
|
|
365
366
|
setControlChangeEffects(channel: any, note: any, scheduleTime: any): void;
|
|
367
|
+
setChannelPressureEffects(channel: any, note: any, scheduleTime: any): void;
|
|
368
|
+
setPolyphonicKeyPressureEffects(channel: any, note: any, scheduleTime: any): void;
|
|
366
369
|
setPressureEffects(channel: any, note: any, tableName: any, scheduleTime: any): void;
|
|
370
|
+
handleChannelPressureSysEx(data: any, scheduleTime: any): void;
|
|
371
|
+
handlePolyphonicKeyPressureSysEx(data: any, scheduleTime: any): void;
|
|
367
372
|
handlePressureSysEx(data: any, tableName: any, scheduleTime: any): void;
|
|
368
373
|
handleControlChangeSysEx(data: any, scheduleTime: any): void;
|
|
369
374
|
getRelativeKeyBasedValue(channel: any, keyNumber: any, controllerType: any): any;
|
package/esm/midy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"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"}
|
package/esm/midy.js
CHANGED
|
@@ -2024,7 +2024,7 @@ export class Midy extends EventTarget {
|
|
|
2024
2024
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
2025
2025
|
if (note.noteNumber === noteNumber) {
|
|
2026
2026
|
note.pressure = pressure;
|
|
2027
|
-
this.
|
|
2027
|
+
this.setPolyphonicKeyPressureEffects(channel, note, scheduleTime);
|
|
2028
2028
|
}
|
|
2029
2029
|
});
|
|
2030
2030
|
this.applyVoiceParams(channel, 10, scheduleTime);
|
|
@@ -2065,7 +2065,7 @@ export class Midy extends EventTarget {
|
|
|
2065
2065
|
const next = this.calcChannelPressureEffectValue(channel, 0);
|
|
2066
2066
|
channel.detune += next - prev;
|
|
2067
2067
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
2068
|
-
this.
|
|
2068
|
+
this.setChannelPressureEffects(channel, note, scheduleTime);
|
|
2069
2069
|
});
|
|
2070
2070
|
this.applyVoiceParams(channel, 13, scheduleTime);
|
|
2071
2071
|
}
|
|
@@ -2465,6 +2465,9 @@ export class Midy extends EventTarget {
|
|
|
2465
2465
|
const intPart = Math.trunc(value);
|
|
2466
2466
|
state.volumeMSB = intPart / 127;
|
|
2467
2467
|
state.volumeLSB = value - intPart;
|
|
2468
|
+
this.applyVolume(channel, scheduleTime);
|
|
2469
|
+
}
|
|
2470
|
+
applyVolume(channel, scheduleTime) {
|
|
2468
2471
|
if (channel.isDrum) {
|
|
2469
2472
|
for (let i = 0; i < 128; i++) {
|
|
2470
2473
|
this.updateKeyBasedVolume(channel, i, scheduleTime);
|
|
@@ -3129,9 +3132,9 @@ export class Midy extends EventTarget {
|
|
|
3129
3132
|
case 9:
|
|
3130
3133
|
switch (data[3]) {
|
|
3131
3134
|
case 1: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
|
|
3132
|
-
return this.
|
|
3135
|
+
return this.handleChannelPressureSysEx(data, scheduelTime);
|
|
3133
3136
|
case 2: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
|
|
3134
|
-
return this.
|
|
3137
|
+
return this.handlePolyphonicKeyPressureSysEx(data, scheduleTime);
|
|
3135
3138
|
case 3: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
|
|
3136
3139
|
return this.handleControlChangeSysEx(data, scheduleTime);
|
|
3137
3140
|
default:
|
|
@@ -3510,7 +3513,7 @@ export class Midy extends EventTarget {
|
|
|
3510
3513
|
}
|
|
3511
3514
|
createEffectHandlers() {
|
|
3512
3515
|
const handlers = new Array(6);
|
|
3513
|
-
handlers[0] = (channel, note, scheduleTime) => {
|
|
3516
|
+
handlers[0] = (channel, note, _tableName, scheduleTime) => {
|
|
3514
3517
|
if (this.isPortamento(channel, note)) {
|
|
3515
3518
|
this.setPortamentoDetune(channel, note, scheduleTime);
|
|
3516
3519
|
}
|
|
@@ -3518,7 +3521,7 @@ export class Midy extends EventTarget {
|
|
|
3518
3521
|
this.setDetune(channel, note, scheduleTime);
|
|
3519
3522
|
}
|
|
3520
3523
|
};
|
|
3521
|
-
handlers[1] = (channel, note, scheduleTime) => {
|
|
3524
|
+
handlers[1] = (channel, note, _tableName, scheduleTime) => {
|
|
3522
3525
|
if (0.5 <= channel.state.portamento && 0 <= note.portamentoNoteNumber) {
|
|
3523
3526
|
this.setPortamentoFilterEnvelope(channel, note, scheduleTime);
|
|
3524
3527
|
}
|
|
@@ -3526,10 +3529,17 @@ export class Midy extends EventTarget {
|
|
|
3526
3529
|
this.setFilterEnvelope(channel, note, scheduleTime);
|
|
3527
3530
|
}
|
|
3528
3531
|
};
|
|
3529
|
-
handlers[2] = (channel, note, scheduleTime) =>
|
|
3530
|
-
|
|
3531
|
-
|
|
3532
|
-
|
|
3532
|
+
handlers[2] = (channel, note, tableName, scheduleTime) => {
|
|
3533
|
+
if (tableName === "polyphonicKeyPressureTable") {
|
|
3534
|
+
this.setVolumeNode(channel, note, scheduleTime);
|
|
3535
|
+
}
|
|
3536
|
+
else {
|
|
3537
|
+
this.applyVolume(channel, scheduleTime);
|
|
3538
|
+
}
|
|
3539
|
+
};
|
|
3540
|
+
handlers[3] = (channel, note, _tableName, scheduleTime) => this.setModLfoToPitch(channel, note, scheduleTime);
|
|
3541
|
+
handlers[4] = (channel, note, _tableName, scheduleTime) => this.setModLfoToFilterFc(channel, note, scheduleTime);
|
|
3542
|
+
handlers[5] = (channel, note, _tableName, scheduleTime) => this.setModLfoToVolume(channel, note, scheduleTime);
|
|
3533
3543
|
return handlers;
|
|
3534
3544
|
}
|
|
3535
3545
|
setControlChangeEffects(channel, note, scheduleTime) {
|
|
@@ -3539,9 +3549,15 @@ export class Midy extends EventTarget {
|
|
|
3539
3549
|
const tableValue = channel.controlTable[i + 6];
|
|
3540
3550
|
if (baseline === tableValue)
|
|
3541
3551
|
continue;
|
|
3542
|
-
handlers[i](channel, note, scheduleTime);
|
|
3552
|
+
handlers[i](channel, note, "controlTable", scheduleTime);
|
|
3543
3553
|
}
|
|
3544
3554
|
}
|
|
3555
|
+
setChannelPressureEffects(channel, note, scheduleTime) {
|
|
3556
|
+
this.setPressureEffects(channel, note, "channelPressureTable", scheduleTime);
|
|
3557
|
+
}
|
|
3558
|
+
setPolyphonicKeyPressureEffects(channel, note, scheduleTime) {
|
|
3559
|
+
this.setPressureEffects(channel, note, "polyphonicKeyPressureTable", scheduleTime);
|
|
3560
|
+
}
|
|
3545
3561
|
setPressureEffects(channel, note, tableName, scheduleTime) {
|
|
3546
3562
|
const handlers = this.effectHandlers;
|
|
3547
3563
|
const table = channel[tableName];
|
|
@@ -3550,9 +3566,15 @@ export class Midy extends EventTarget {
|
|
|
3550
3566
|
const tableValue = table[i];
|
|
3551
3567
|
if (baseline === tableValue)
|
|
3552
3568
|
continue;
|
|
3553
|
-
handlers[i](channel, note, scheduleTime);
|
|
3569
|
+
handlers[i](channel, note, tableName, scheduleTime);
|
|
3554
3570
|
}
|
|
3555
3571
|
}
|
|
3572
|
+
handleChannelPressureSysEx(data, scheduleTime) {
|
|
3573
|
+
this.handlePressureSysEx(data, "channelPressureTable", scheduleTime);
|
|
3574
|
+
}
|
|
3575
|
+
handlePolyphonicKeyPressureSysEx(data, scheduleTime) {
|
|
3576
|
+
this.handlePressureSysEx(data, "polyphonicKeyPressureTable", scheduleTime);
|
|
3577
|
+
}
|
|
3556
3578
|
handlePressureSysEx(data, tableName, scheduleTime) {
|
|
3557
3579
|
const channelNumber = data[4];
|
|
3558
3580
|
const channel = this.channels[channelNumber];
|
|
@@ -3566,7 +3588,7 @@ export class Midy extends EventTarget {
|
|
|
3566
3588
|
const handler = this.effectHandlers[pp];
|
|
3567
3589
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
3568
3590
|
if (handler)
|
|
3569
|
-
handler(channel, note, scheduleTime);
|
|
3591
|
+
handler(channel, note, tableName, scheduleTime);
|
|
3570
3592
|
});
|
|
3571
3593
|
}
|
|
3572
3594
|
}
|
|
@@ -3586,7 +3608,7 @@ export class Midy extends EventTarget {
|
|
|
3586
3608
|
const handler = this.effectHandlers[pp];
|
|
3587
3609
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
3588
3610
|
if (handler)
|
|
3589
|
-
handler(channel, note, scheduleTime);
|
|
3611
|
+
handler(channel, note, "controlTable", scheduleTime);
|
|
3590
3612
|
});
|
|
3591
3613
|
}
|
|
3592
3614
|
}
|
package/package.json
CHANGED
package/script/midy-GM2.d.ts
CHANGED
|
@@ -237,6 +237,7 @@ export class MidyGM2 extends EventTarget {
|
|
|
237
237
|
updatePortamento(channel: any, scheduleTime: any): void;
|
|
238
238
|
setPortamentoTime(channelNumber: any, value: any, scheduleTime: any): void;
|
|
239
239
|
setVolume(channelNumber: any, value: any, scheduleTime: any): void;
|
|
240
|
+
applyVolume(channel: any, scheduleTime: any): void;
|
|
240
241
|
panToGain(pan: any): {
|
|
241
242
|
gainLeft: number;
|
|
242
243
|
gainRight: number;
|
|
@@ -320,7 +321,9 @@ export class MidyGM2 extends EventTarget {
|
|
|
320
321
|
getLFOAmplitudeDepth(channel: any): number;
|
|
321
322
|
createEffectHandlers(): any[];
|
|
322
323
|
setControlChangeEffects(channel: any, note: any, scheduleTime: any): void;
|
|
324
|
+
setChannelPressureEffects(channel: any, note: any, scheduleTime: any): void;
|
|
323
325
|
setPressureEffects(channel: any, note: any, tableName: any, scheduleTime: any): void;
|
|
326
|
+
handleChannelPressureSysEx(data: any, scheduleTime: any): void;
|
|
324
327
|
handlePressureSysEx(data: any, tableName: any, scheduleTime: any): void;
|
|
325
328
|
handleControlChangeSysEx(data: any, scheduleTime: any): void;
|
|
326
329
|
getKeyBasedValue(channel: any, keyNumber: any, controllerType: any): any;
|
package/script/midy-GM2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"AAwLA;IAwDE;;;;;;;;;;;;;;MAcE;IAEF,+BAsBC;IAzFD,gCAAgC;IAChC,aAAa;IACb,yBAAqB;IACrB,2BAAuB;IACvB;;;;MAIE;IACF;;;;;;MAME;IACF,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAsB;IACtB,+BAA6B;IAC7B,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,0BAAuD;IACvD,4BAAyB;IACzB,0BAAuB;IACvB,kCAA+B;IAC/B,qBAAqC;IACrC,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;IACrC,+BAEE;IAoBA,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF,uBAAmD;IACnD;;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,kCAAyE;IACzE,sBAAiD;IACjD,gBAAiD;IACjD;;;kBAAyD;IACzD;;;;;;;;MAAyD;IAQ3D,mCASC;IAED,2DAYC;IAED,yCAmBC;IAED,oCASC;IAED,sBAoCC;IAED,8DAeC;IAED;;;;MAeC;IAED,sCAKC;IAED,yCAqBC;IAED,2CAsBC;IAED,kDA6BC;IAED,mDAIC;IAED,2FAWC;IAED,gEAyDC;IAED,mCASC;IAED,uBAUC;IAED,yDAqCC;IAED,2BAoFC;IAED,uDAEC;IAED,wDAEC;IAED,qCAMC;IAED;;;MAqFC;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,kFAuBC;IAED;;;;MASC;IAED,gFAUC;IAED,mFAYC;IAED,sGAcC;IAID;;;MA8BC;IAED;;;kBA6BC;IAED;;;;;;;;MA0CC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAWC;IAED,2DAQC;IAED,oDAEC;IAED,6CAIC;IAED,mDAIC;IAED,2CAoDC;IAED,8EASC;IAED,oEAgBC;IAED,sEASC;IAED,4DASC;IAED,6EAOC;IAED,qDAkBC;IAED,6CAIC;IAED,8EAmBC;IAED,oEA+BC;IAED,kEAqBC;IAED,+DAeC;IAED,4GAkCC;IAED,uEAkEC;IAED,0EAiBC;IAED,8EAoBC;IAED,oEAuBC;IAED,0FAuBC;IAED,gCAmBC;IAED,iEAwBC;IAED,4FA2BC;IAED,6CAUC;IAED,qDAUC;IAED,qFAeC;IAED,uFAkBC;IAED,+BAuBC;IAED,kDAOC;IAED,sBAEC;IAED,mFAcC;IAED,4EAYC;IAED,wFAGC;IAED,sEAWC;IAED,mEAaC;IAED,mEAYC;IAED,sEAMC;IAED,oEAQC;IAED,gEAyBC;IAED,gEAyBC;IAED,gCAKC;IAED,kDAKC;IAED,8CAOC;IAED,gEAMC;IAED;;;;;;;;;;;;MAwDC;IAED,oFAOC;IAED,6EA+BC;IAED,qCA2BC;IAED,+FAeC;IAED,+CAEC;IAED,wDAUC;IAED,4EAMC;IAED,wDAeC;IAED,2EAMC;IAED,
|
|
1
|
+
{"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"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"}
|
package/script/midy-GM2.js
CHANGED
|
@@ -1860,7 +1860,7 @@ class MidyGM2 extends EventTarget {
|
|
|
1860
1860
|
const next = this.calcChannelPressureEffectValue(channel, 0);
|
|
1861
1861
|
channel.detune += next - prev;
|
|
1862
1862
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
1863
|
-
this.
|
|
1863
|
+
this.setChannelPressureEffects(channel, note, scheduleTime);
|
|
1864
1864
|
});
|
|
1865
1865
|
this.applyVoiceParams(channel, 13, scheduleTime);
|
|
1866
1866
|
}
|
|
@@ -2216,6 +2216,9 @@ class MidyGM2 extends EventTarget {
|
|
|
2216
2216
|
scheduleTime = this.audioContext.currentTime;
|
|
2217
2217
|
const channel = this.channels[channelNumber];
|
|
2218
2218
|
channel.state.volumeMSB = value / 127;
|
|
2219
|
+
this.applyVolume(channel, scheduleTime);
|
|
2220
|
+
}
|
|
2221
|
+
applyVolume(channel, scheduleTime) {
|
|
2219
2222
|
if (channel.isDrum) {
|
|
2220
2223
|
for (let i = 0; i < 128; i++) {
|
|
2221
2224
|
this.updateKeyBasedVolume(channel, i, scheduleTime);
|
|
@@ -2671,7 +2674,7 @@ class MidyGM2 extends EventTarget {
|
|
|
2671
2674
|
case 9:
|
|
2672
2675
|
switch (data[3]) {
|
|
2673
2676
|
case 1: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
|
|
2674
|
-
return this.
|
|
2677
|
+
return this.handleChannelPressureSysEx(data, scheduelTime);
|
|
2675
2678
|
case 3: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
|
|
2676
2679
|
return this.handleControlChangeSysEx(data, scheduleTime);
|
|
2677
2680
|
default:
|
|
@@ -3023,14 +3026,7 @@ class MidyGM2 extends EventTarget {
|
|
|
3023
3026
|
this.setFilterEnvelope(channel, note, scheduleTime);
|
|
3024
3027
|
}
|
|
3025
3028
|
};
|
|
3026
|
-
handlers[2] = (channel, note, scheduleTime) =>
|
|
3027
|
-
if (0.5 <= channel.state.portamemento && 0 <= note.portamentoNoteNumber) {
|
|
3028
|
-
this.setPortamentoVolumeEnvelope(channel, note, scheduleTime);
|
|
3029
|
-
}
|
|
3030
|
-
else {
|
|
3031
|
-
this.setVolumeEnvelope(channel, note, scheduleTime);
|
|
3032
|
-
}
|
|
3033
|
-
};
|
|
3029
|
+
handlers[2] = (channel, note, scheduleTime) => this.applyVolume(channel, note, scheduleTime);
|
|
3034
3030
|
handlers[3] = (channel, note, scheduleTime) => this.setModLfoToPitch(channel, note, scheduleTime);
|
|
3035
3031
|
handlers[4] = (channel, note, scheduleTime) => this.setModLfoToFilterFc(channel, note, scheduleTime);
|
|
3036
3032
|
handlers[5] = (channel, note, scheduleTime) => this.setModLfoToVolume(channel, note, scheduleTime);
|
|
@@ -3046,6 +3042,9 @@ class MidyGM2 extends EventTarget {
|
|
|
3046
3042
|
handlers[i](channel, note, scheduleTime);
|
|
3047
3043
|
}
|
|
3048
3044
|
}
|
|
3045
|
+
setChannelPressureEffects(channel, note, scheduleTime) {
|
|
3046
|
+
this.setPressureEffects(channel, note, "channelPressureTable", scheduleTime);
|
|
3047
|
+
}
|
|
3049
3048
|
setPressureEffects(channel, note, tableName, scheduleTime) {
|
|
3050
3049
|
const handlers = this.effectHandlers;
|
|
3051
3050
|
const table = channel[tableName];
|
|
@@ -3057,6 +3056,9 @@ class MidyGM2 extends EventTarget {
|
|
|
3057
3056
|
handlers[i](channel, note, scheduleTime);
|
|
3058
3057
|
}
|
|
3059
3058
|
}
|
|
3059
|
+
handleChannelPressureSysEx(data, scheduleTime) {
|
|
3060
|
+
this.handlePressureSysEx(data, "channelPressureTable", scheduleTime);
|
|
3061
|
+
}
|
|
3060
3062
|
handlePressureSysEx(data, tableName, scheduleTime) {
|
|
3061
3063
|
const channelNumber = data[4];
|
|
3062
3064
|
const channel = this.channels[channelNumber];
|
package/script/midy.d.ts
CHANGED
|
@@ -260,6 +260,7 @@ export class Midy extends EventTarget {
|
|
|
260
260
|
updatePortamento(channel: any, scheduleTime: any): void;
|
|
261
261
|
setPortamentoTime(channelNumber: any, value: any, scheduleTime: any): void;
|
|
262
262
|
setVolume(channelNumber: any, value: any, scheduleTime: any): void;
|
|
263
|
+
applyVolume(channel: any, scheduleTime: any): void;
|
|
263
264
|
panToGain(pan: any): {
|
|
264
265
|
gainLeft: number;
|
|
265
266
|
gainRight: number;
|
|
@@ -363,7 +364,11 @@ export class Midy extends EventTarget {
|
|
|
363
364
|
getLFOAmplitudeDepth(channel: any, note: any): number;
|
|
364
365
|
createEffectHandlers(): any[];
|
|
365
366
|
setControlChangeEffects(channel: any, note: any, scheduleTime: any): void;
|
|
367
|
+
setChannelPressureEffects(channel: any, note: any, scheduleTime: any): void;
|
|
368
|
+
setPolyphonicKeyPressureEffects(channel: any, note: any, scheduleTime: any): void;
|
|
366
369
|
setPressureEffects(channel: any, note: any, tableName: any, scheduleTime: any): void;
|
|
370
|
+
handleChannelPressureSysEx(data: any, scheduleTime: any): void;
|
|
371
|
+
handlePolyphonicKeyPressureSysEx(data: any, scheduleTime: any): void;
|
|
367
372
|
handlePressureSysEx(data: any, tableName: any, scheduleTime: any): void;
|
|
368
373
|
handleControlChangeSysEx(data: any, scheduleTime: any): void;
|
|
369
374
|
getRelativeKeyBasedValue(channel: any, keyNumber: any, controllerType: any): any;
|
package/script/midy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"AA0MA;IAgEE;;;;;;;;;;;;;;;;;MAiBE;IAEF,+BAyBC;IAvGD,gCAAgC;IAChC,aAAa;IACb,yBAAqB;IACrB,2BAAuB;IACvB;;;;MAIE;IACF;;;;;;MAME;IACF,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAsB;IACtB,+BAA6B;IAC7B,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,0BAAuD;IACvD,4BAAyB;IACzB,0BAAuB;IACvB,kCAA+B;IAC/B,qBAAqC;IACrC,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,iCAEG;IACH,cAAU;IACV,cAAa;IACb,kBAAc;IACd,iBAAY;IACZ,gBAAc;IACd,oBAAkB;IAClB,sBAAwB;IACxB,2BAAqC;IACrC,+BAEE;IACF,oBAAmB;IACnB,wBAAoB;IACpB,wBAAoB;IACpB;;;MAGE;IAuBA,mCAA8C;IAC9C,4BAAsC;IACtC,4BAAqC;IACrC,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF,uBAAmD;IACnD;;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,kCAAyE;IACzE,sBAAiD;IACjD,gBAAiD;IACjD;;;kBAAyD;IACzD;;;;;;;;MAAyD;IAQ3D,mCASC;IAED,2DAYC;IAED,yCAmBC;IAED,oCASC;IAED,sBAoCC;IAED,8DAeC;IAED;;;;MAeC;IAED,sCAMC;IAED,yCAqBC;IAED,2CAsBC;IAED,kDA6BC;IAED,mDAIC;IAED,2FAWC;IAED,gEAiEC;IAED,mCASC;IAED,uBAUC;IAED,yDAqCC;IAED,2BA0FC;IAED,uDAEC;IAED,wDAEC;IAED,qCAMC;IAED;;;MAqFC;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,sDAaC;IAED,kFAuBC;IAED;;;;MASC;IAED,gFAUC;IAED,mFAYC;IAED,sGAcC;IAID;;;MA8BC;IAED;;;kBA6BC;IAED;;;;;;;;MA0CC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAWC;IAED,2DAQC;IAED,oDAEC;IAED,6CAKC;IAED,mDAMC;IAED,2CAoDC;IAED,8EASC;IAED,oEAoBC;IAED,gEAKC;IAED,sEAgBC;IAED,4DASC;IAED,6EAOC;IAED,qDAkBC;IAED,6CAIC;IAED,8EAsBC;IAED,oEAkCC;IAED,kEAqBC;IAED,+DAgBC;IAED,4GAkCC;IAED,uEA2EC;IAED,0EAiBC;IAED,8EAoBC;IAED,oEAuBC;IAED,0FAgBC;IAED,yGAyBC;IAED,gCAoBC;IAED,iEA0BC;IAED,2FAwCC;IAED,6FA2BC;IAED,6CAUC;IAED,qDAUC;IAED,qFAeC;IAED,uFAkBC;IAED,+BAyCC;IAED,kDAOC;IAED,sBAEC;IAED,sGAgBC;IAED,kFAIC;IAED,qFAcC;IAED,4EAKC;IAED,8EAWC;IAED,wFAGC;IAED,sEAIC;IAED,wEAWC;IAED,mEAcC;IAED,mEAaC;IAED,sEAMC;IAED,oEAQC;IAED,gEAyBC;IAED,gEAyBC;IAED,gCAKC;IAED,kDAKC;IAED,8CAQC;IAED,gEAOC;IAED;;;;;;;;;;;;MA6DC;IAED,gHAQC;IAED,6EAgCC;IAED,qCA4CC;IAED,+FAKC;IAED,iGAcC;IAED,+CAEC;IAED,wDAWC;IAED,4EASC;IAED,wDAeC;IAED,2EASC;IAED,
|
|
1
|
+
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"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"}
|
package/script/midy.js
CHANGED
|
@@ -2027,7 +2027,7 @@ class Midy extends EventTarget {
|
|
|
2027
2027
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
2028
2028
|
if (note.noteNumber === noteNumber) {
|
|
2029
2029
|
note.pressure = pressure;
|
|
2030
|
-
this.
|
|
2030
|
+
this.setPolyphonicKeyPressureEffects(channel, note, scheduleTime);
|
|
2031
2031
|
}
|
|
2032
2032
|
});
|
|
2033
2033
|
this.applyVoiceParams(channel, 10, scheduleTime);
|
|
@@ -2068,7 +2068,7 @@ class Midy extends EventTarget {
|
|
|
2068
2068
|
const next = this.calcChannelPressureEffectValue(channel, 0);
|
|
2069
2069
|
channel.detune += next - prev;
|
|
2070
2070
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
2071
|
-
this.
|
|
2071
|
+
this.setChannelPressureEffects(channel, note, scheduleTime);
|
|
2072
2072
|
});
|
|
2073
2073
|
this.applyVoiceParams(channel, 13, scheduleTime);
|
|
2074
2074
|
}
|
|
@@ -2468,6 +2468,9 @@ class Midy extends EventTarget {
|
|
|
2468
2468
|
const intPart = Math.trunc(value);
|
|
2469
2469
|
state.volumeMSB = intPart / 127;
|
|
2470
2470
|
state.volumeLSB = value - intPart;
|
|
2471
|
+
this.applyVolume(channel, scheduleTime);
|
|
2472
|
+
}
|
|
2473
|
+
applyVolume(channel, scheduleTime) {
|
|
2471
2474
|
if (channel.isDrum) {
|
|
2472
2475
|
for (let i = 0; i < 128; i++) {
|
|
2473
2476
|
this.updateKeyBasedVolume(channel, i, scheduleTime);
|
|
@@ -3132,9 +3135,9 @@ class Midy extends EventTarget {
|
|
|
3132
3135
|
case 9:
|
|
3133
3136
|
switch (data[3]) {
|
|
3134
3137
|
case 1: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
|
|
3135
|
-
return this.
|
|
3138
|
+
return this.handleChannelPressureSysEx(data, scheduelTime);
|
|
3136
3139
|
case 2: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
|
|
3137
|
-
return this.
|
|
3140
|
+
return this.handlePolyphonicKeyPressureSysEx(data, scheduleTime);
|
|
3138
3141
|
case 3: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
|
|
3139
3142
|
return this.handleControlChangeSysEx(data, scheduleTime);
|
|
3140
3143
|
default:
|
|
@@ -3513,7 +3516,7 @@ class Midy extends EventTarget {
|
|
|
3513
3516
|
}
|
|
3514
3517
|
createEffectHandlers() {
|
|
3515
3518
|
const handlers = new Array(6);
|
|
3516
|
-
handlers[0] = (channel, note, scheduleTime) => {
|
|
3519
|
+
handlers[0] = (channel, note, _tableName, scheduleTime) => {
|
|
3517
3520
|
if (this.isPortamento(channel, note)) {
|
|
3518
3521
|
this.setPortamentoDetune(channel, note, scheduleTime);
|
|
3519
3522
|
}
|
|
@@ -3521,7 +3524,7 @@ class Midy extends EventTarget {
|
|
|
3521
3524
|
this.setDetune(channel, note, scheduleTime);
|
|
3522
3525
|
}
|
|
3523
3526
|
};
|
|
3524
|
-
handlers[1] = (channel, note, scheduleTime) => {
|
|
3527
|
+
handlers[1] = (channel, note, _tableName, scheduleTime) => {
|
|
3525
3528
|
if (0.5 <= channel.state.portamento && 0 <= note.portamentoNoteNumber) {
|
|
3526
3529
|
this.setPortamentoFilterEnvelope(channel, note, scheduleTime);
|
|
3527
3530
|
}
|
|
@@ -3529,10 +3532,17 @@ class Midy extends EventTarget {
|
|
|
3529
3532
|
this.setFilterEnvelope(channel, note, scheduleTime);
|
|
3530
3533
|
}
|
|
3531
3534
|
};
|
|
3532
|
-
handlers[2] = (channel, note, scheduleTime) =>
|
|
3533
|
-
|
|
3534
|
-
|
|
3535
|
-
|
|
3535
|
+
handlers[2] = (channel, note, tableName, scheduleTime) => {
|
|
3536
|
+
if (tableName === "polyphonicKeyPressureTable") {
|
|
3537
|
+
this.setVolumeNode(channel, note, scheduleTime);
|
|
3538
|
+
}
|
|
3539
|
+
else {
|
|
3540
|
+
this.applyVolume(channel, scheduleTime);
|
|
3541
|
+
}
|
|
3542
|
+
};
|
|
3543
|
+
handlers[3] = (channel, note, _tableName, scheduleTime) => this.setModLfoToPitch(channel, note, scheduleTime);
|
|
3544
|
+
handlers[4] = (channel, note, _tableName, scheduleTime) => this.setModLfoToFilterFc(channel, note, scheduleTime);
|
|
3545
|
+
handlers[5] = (channel, note, _tableName, scheduleTime) => this.setModLfoToVolume(channel, note, scheduleTime);
|
|
3536
3546
|
return handlers;
|
|
3537
3547
|
}
|
|
3538
3548
|
setControlChangeEffects(channel, note, scheduleTime) {
|
|
@@ -3542,9 +3552,15 @@ class Midy extends EventTarget {
|
|
|
3542
3552
|
const tableValue = channel.controlTable[i + 6];
|
|
3543
3553
|
if (baseline === tableValue)
|
|
3544
3554
|
continue;
|
|
3545
|
-
handlers[i](channel, note, scheduleTime);
|
|
3555
|
+
handlers[i](channel, note, "controlTable", scheduleTime);
|
|
3546
3556
|
}
|
|
3547
3557
|
}
|
|
3558
|
+
setChannelPressureEffects(channel, note, scheduleTime) {
|
|
3559
|
+
this.setPressureEffects(channel, note, "channelPressureTable", scheduleTime);
|
|
3560
|
+
}
|
|
3561
|
+
setPolyphonicKeyPressureEffects(channel, note, scheduleTime) {
|
|
3562
|
+
this.setPressureEffects(channel, note, "polyphonicKeyPressureTable", scheduleTime);
|
|
3563
|
+
}
|
|
3548
3564
|
setPressureEffects(channel, note, tableName, scheduleTime) {
|
|
3549
3565
|
const handlers = this.effectHandlers;
|
|
3550
3566
|
const table = channel[tableName];
|
|
@@ -3553,9 +3569,15 @@ class Midy extends EventTarget {
|
|
|
3553
3569
|
const tableValue = table[i];
|
|
3554
3570
|
if (baseline === tableValue)
|
|
3555
3571
|
continue;
|
|
3556
|
-
handlers[i](channel, note, scheduleTime);
|
|
3572
|
+
handlers[i](channel, note, tableName, scheduleTime);
|
|
3557
3573
|
}
|
|
3558
3574
|
}
|
|
3575
|
+
handleChannelPressureSysEx(data, scheduleTime) {
|
|
3576
|
+
this.handlePressureSysEx(data, "channelPressureTable", scheduleTime);
|
|
3577
|
+
}
|
|
3578
|
+
handlePolyphonicKeyPressureSysEx(data, scheduleTime) {
|
|
3579
|
+
this.handlePressureSysEx(data, "polyphonicKeyPressureTable", scheduleTime);
|
|
3580
|
+
}
|
|
3559
3581
|
handlePressureSysEx(data, tableName, scheduleTime) {
|
|
3560
3582
|
const channelNumber = data[4];
|
|
3561
3583
|
const channel = this.channels[channelNumber];
|
|
@@ -3569,7 +3591,7 @@ class Midy extends EventTarget {
|
|
|
3569
3591
|
const handler = this.effectHandlers[pp];
|
|
3570
3592
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
3571
3593
|
if (handler)
|
|
3572
|
-
handler(channel, note, scheduleTime);
|
|
3594
|
+
handler(channel, note, tableName, scheduleTime);
|
|
3573
3595
|
});
|
|
3574
3596
|
}
|
|
3575
3597
|
}
|
|
@@ -3589,7 +3611,7 @@ class Midy extends EventTarget {
|
|
|
3589
3611
|
const handler = this.effectHandlers[pp];
|
|
3590
3612
|
this.processActiveNotes(channel, scheduleTime, (note) => {
|
|
3591
3613
|
if (handler)
|
|
3592
|
-
handler(channel, note, scheduleTime);
|
|
3614
|
+
handler(channel, note, "controlTable", scheduleTime);
|
|
3593
3615
|
});
|
|
3594
3616
|
}
|
|
3595
3617
|
}
|