@marmooo/midy 0.2.3 → 0.2.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/esm/midy-GM1.d.ts +2 -1
- package/esm/midy-GM1.d.ts.map +1 -1
- package/esm/midy-GM1.js +16 -13
- package/esm/midy-GM2.d.ts +12 -19
- package/esm/midy-GM2.d.ts.map +1 -1
- package/esm/midy-GM2.js +78 -108
- package/esm/midy-GMLite.d.ts +3 -2
- package/esm/midy-GMLite.d.ts.map +1 -1
- package/esm/midy-GMLite.js +18 -13
- package/esm/midy.d.ts +14 -18
- package/esm/midy.d.ts.map +1 -1
- package/esm/midy.js +158 -105
- package/package.json +1 -1
- package/script/midy-GM1.d.ts +2 -1
- package/script/midy-GM1.d.ts.map +1 -1
- package/script/midy-GM1.js +16 -13
- package/script/midy-GM2.d.ts +12 -19
- package/script/midy-GM2.d.ts.map +1 -1
- package/script/midy-GM2.js +78 -108
- package/script/midy-GMLite.d.ts +3 -2
- package/script/midy-GMLite.d.ts.map +1 -1
- package/script/midy-GMLite.js +18 -13
- package/script/midy.d.ts +14 -18
- package/script/midy.d.ts.map +1 -1
- package/script/midy.js +158 -105
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy-GMLite.d.ts","sourceRoot":"","sources":["../src/midy-GMLite.js"],"names":[],"mappings":"AAmFA;IAoBE;;;;;;;;;MASE;IAEF,+BAQC;IAtCD,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,iCAA8B;IAc5B,kBAAgC;IAChC,kBAA8C;IAC9C;;;;;;;;;;;MAA2D;IAC3D;;;;;;;;;;;;;MAA+D;IAC/D,gBAAiD;IAKnD,4BAMC;IAED,mCAWC;IAED,gDAMC;IAED,sCASC;IAED;;;;MAeC;IAED,yCAUC;IAED,6DA2BC;IAED,iEAUC;IAED,2EA+CC;IAED,mCAOC;IAED,0BAkDC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAgEC;IAED,+EAmBC;IAED,qDAKC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,uDASC;IAED,6CAQC;IAED,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,wCAIC;IAED,
|
|
1
|
+
{"version":3,"file":"midy-GMLite.d.ts","sourceRoot":"","sources":["../src/midy-GMLite.js"],"names":[],"mappings":"AAmFA;IAoBE;;;;;;;;;MASE;IAEF,+BAQC;IAtCD,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,iCAA8B;IAc5B,kBAAgC;IAChC,kBAA8C;IAC9C;;;;;;;;;;;MAA2D;IAC3D;;;;;;;;;;;;;MAA+D;IAC/D,gBAAiD;IAKnD,4BAMC;IAED,mCAWC;IAED,gDAMC;IAED,sCASC;IAED;;;;MAeC;IAED,yCAUC;IAED,6DA2BC;IAED,iEAUC;IAED,2EA+CC;IAED,mCAOC;IAED,0BAkDC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAgEC;IAED,+EAmBC;IAED,qDAKC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,uDASC;IAED,6CAQC;IAED,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,wCAIC;IAED,wCAQC;IAED,4CAKC;IAED,mCAgBC;IAED,kCAqBC;IAED,6CAIC;IAED,mCAuBC;IAED,+DAoBC;IAED,gHA2BC;IAED,kGAgDC;IAED,0EAGC;IAED,qFAwBC;IAED,6HAuBC;IAED,0FAGC;IAED,kEAeC;IAED,gFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,mDASC;IAED,gDASC;IAED,qCAMC;IAED,mCAQC;IAED,gCAOC;IAED,+BAMC;IAED;;;;;;;;;;;MAqBC;IAED,oFAMC;IAED,0DA6CC;IAED;;;;;;;;;;;;;MAeC;IAED,+EAWC;IAED,qCAeC;IAED,8DAIC;IACD,iDAIC;IAED;;;MAMC;IAED,2CAIC;IAED,yDAIC;IAED,mDAGC;IAED,wCAWC;IAED,sDAKC;IAED,kFAeC;IAED,oCAYC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,kDAKC;IAED,wDASC;IAED,+CAEC;IAED,8CAqBC;IAED,+CAEC;IAED,4DAgBC;IAED,oBAMC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AA1tCD;IAQE,0FAMC;IAbD,kBAAa;IACb,gBAAW;IACX,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAGd,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}
|
package/script/midy-GMLite.js
CHANGED
|
@@ -598,19 +598,22 @@ class MidyGMLite {
|
|
|
598
598
|
const pitchWheelSensitivity = channel.state.pitchWheelSensitivity * 12800;
|
|
599
599
|
return pitchWheel * pitchWheelSensitivity;
|
|
600
600
|
}
|
|
601
|
-
|
|
602
|
-
const now = this.audioContext.currentTime;
|
|
601
|
+
updateChannelDetune(channel) {
|
|
603
602
|
channel.scheduledNotes.forEach((noteList) => {
|
|
604
603
|
for (let i = 0; i < noteList.length; i++) {
|
|
605
604
|
const note = noteList[i];
|
|
606
605
|
if (!note)
|
|
607
606
|
continue;
|
|
608
|
-
note
|
|
609
|
-
.cancelScheduledValues(now)
|
|
610
|
-
.setValueAtTime(channel.detune, now);
|
|
607
|
+
this.updateDetune(channel, note);
|
|
611
608
|
}
|
|
612
609
|
});
|
|
613
610
|
}
|
|
611
|
+
updateDetune(channel, note) {
|
|
612
|
+
const now = this.audioContext.currentTime;
|
|
613
|
+
note.bufferSource.detune
|
|
614
|
+
.cancelScheduledValues(now)
|
|
615
|
+
.setValueAtTime(channel.detune, now);
|
|
616
|
+
}
|
|
614
617
|
setVolumeEnvelope(note) {
|
|
615
618
|
const now = this.audioContext.currentTime;
|
|
616
619
|
const { voiceParams, startTime } = note;
|
|
@@ -859,7 +862,7 @@ class MidyGMLite {
|
|
|
859
862
|
const next = (value - 8192) / 8192;
|
|
860
863
|
state.pitchWheel = value / 16383;
|
|
861
864
|
channel.detune += (next - prev) * state.pitchWheelSensitivity * 12800;
|
|
862
|
-
this.
|
|
865
|
+
this.updateChannelDetune(channel);
|
|
863
866
|
this.applyVoiceParams(channel, 14);
|
|
864
867
|
}
|
|
865
868
|
setModLfoToPitch(channel, note) {
|
|
@@ -963,7 +966,7 @@ class MidyGMLite {
|
|
|
963
966
|
if (key in voiceParams)
|
|
964
967
|
noteVoiceParams[key] = voiceParams[key];
|
|
965
968
|
}
|
|
966
|
-
this.setFilterEnvelope(
|
|
969
|
+
this.setFilterEnvelope(note);
|
|
967
970
|
this.setPitchEnvelope(note);
|
|
968
971
|
}
|
|
969
972
|
else if (volumeEnvelopeKeySet.has(key)) {
|
|
@@ -1003,7 +1006,7 @@ class MidyGMLite {
|
|
|
1003
1006
|
if (handler) {
|
|
1004
1007
|
handler.call(this, channelNumber, value);
|
|
1005
1008
|
const channel = this.channels[channelNumber];
|
|
1006
|
-
this.applyVoiceParams(channel,
|
|
1009
|
+
this.applyVoiceParams(channel, controllerType + 128);
|
|
1007
1010
|
}
|
|
1008
1011
|
else {
|
|
1009
1012
|
console.warn(`Unsupported Control change: controllerType=${controllerType} value=${value}`);
|
|
@@ -1121,12 +1124,14 @@ class MidyGMLite {
|
|
|
1121
1124
|
const pitchBendRange = channel.dataMSB + channel.dataLSB / 100;
|
|
1122
1125
|
this.setPitchBendRange(channelNumber, pitchBendRange);
|
|
1123
1126
|
}
|
|
1124
|
-
setPitchBendRange(channelNumber,
|
|
1127
|
+
setPitchBendRange(channelNumber, value) {
|
|
1125
1128
|
const channel = this.channels[channelNumber];
|
|
1126
1129
|
const state = channel.state;
|
|
1127
|
-
|
|
1128
|
-
const
|
|
1129
|
-
|
|
1130
|
+
const prev = state.pitchWheelSensitivity;
|
|
1131
|
+
const next = value / 128;
|
|
1132
|
+
state.pitchWheelSensitivity = next;
|
|
1133
|
+
channel.detune += (state.pitchWheel * 2 - 1) * (next - prev) * 12800;
|
|
1134
|
+
this.updateChannelDetune(channel);
|
|
1130
1135
|
this.applyVoiceParams(channel, 16);
|
|
1131
1136
|
}
|
|
1132
1137
|
allSoundOff(channelNumber) {
|
|
@@ -1143,7 +1148,7 @@ class MidyGMLite {
|
|
|
1143
1148
|
const state = channel.state;
|
|
1144
1149
|
for (let i = 0; i < stateTypes.length; i++) {
|
|
1145
1150
|
const type = stateTypes[i];
|
|
1146
|
-
state[type] = defaultControllerState[type];
|
|
1151
|
+
state[type] = defaultControllerState[type].defaultValue;
|
|
1147
1152
|
}
|
|
1148
1153
|
const settingTypes = [
|
|
1149
1154
|
"rpnMSB",
|
package/script/midy.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ export class Midy {
|
|
|
3
3
|
currentBufferSource: null;
|
|
4
4
|
detune: number;
|
|
5
5
|
scaleOctaveTuningTable: any[];
|
|
6
|
-
|
|
6
|
+
channelPressureTable: Uint8Array<ArrayBuffer>;
|
|
7
|
+
polyphonicKeyPressureTable: Uint8Array<ArrayBuffer>;
|
|
7
8
|
keyBasedInstrumentControlTable: Int8Array<ArrayBuffer>;
|
|
8
9
|
program: number;
|
|
9
10
|
bank: number;
|
|
@@ -17,14 +18,6 @@ export class Midy {
|
|
|
17
18
|
coarseTuning: number;
|
|
18
19
|
modulationDepthRange: number;
|
|
19
20
|
};
|
|
20
|
-
static controllerDestinationSettings: {
|
|
21
|
-
pitchControl: number;
|
|
22
|
-
filterCutoffControl: number;
|
|
23
|
-
amplitudeControl: number;
|
|
24
|
-
lfoPitchDepth: number;
|
|
25
|
-
lfoFilterDepth: number;
|
|
26
|
-
lfoAmplitudeDepth: number;
|
|
27
|
-
};
|
|
28
21
|
constructor(audioContext: any, options?: {
|
|
29
22
|
reverbAlgorithm: (audioContext: any) => {
|
|
30
23
|
input: any;
|
|
@@ -201,14 +194,15 @@ export class Midy {
|
|
|
201
194
|
centToHz(cent: any): number;
|
|
202
195
|
calcChannelDetune(channel: any): any;
|
|
203
196
|
calcNoteDetune(channel: any, note: any): any;
|
|
204
|
-
|
|
197
|
+
updateChannelDetune(channel: any): void;
|
|
198
|
+
updateDetune(channel: any, note: any, pressure: any): void;
|
|
205
199
|
getPortamentoTime(channel: any): number;
|
|
206
200
|
setPortamentoStartVolumeEnvelope(channel: any, note: any): void;
|
|
207
|
-
setVolumeEnvelope(channel: any, note: any): void;
|
|
201
|
+
setVolumeEnvelope(channel: any, note: any, pressure: any): void;
|
|
208
202
|
setPitchEnvelope(note: any): void;
|
|
209
203
|
clampCutoffFrequency(frequency: any): number;
|
|
210
204
|
setPortamentoStartFilterEnvelope(channel: any, note: any): void;
|
|
211
|
-
setFilterEnvelope(channel: any, note: any): void;
|
|
205
|
+
setFilterEnvelope(channel: any, note: any, pressure: any): void;
|
|
212
206
|
startModulation(channel: any, note: any, startTime: any): void;
|
|
213
207
|
startVibrato(channel: any, note: any, startTime: any): void;
|
|
214
208
|
createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any, portamento: any, isSF3: any): Promise<Note>;
|
|
@@ -226,14 +220,15 @@ export class Midy {
|
|
|
226
220
|
handleChannelPressure(channelNumber: any, value: any): void;
|
|
227
221
|
handlePitchBendMessage(channelNumber: any, lsb: any, msb: any): void;
|
|
228
222
|
setPitchBend(channelNumber: any, value: any): void;
|
|
229
|
-
setModLfoToPitch(channel: any, note: any): void;
|
|
223
|
+
setModLfoToPitch(channel: any, note: any, pressure: any): void;
|
|
230
224
|
setVibLfoToPitch(channel: any, note: any): void;
|
|
231
|
-
setModLfoToFilterFc(
|
|
232
|
-
setModLfoToVolume(
|
|
225
|
+
setModLfoToFilterFc(note: any, pressure: any): void;
|
|
226
|
+
setModLfoToVolume(note: any, pressure: any): void;
|
|
233
227
|
setReverbEffectsSend(channel: any, note: any, prevValue: any): void;
|
|
234
228
|
setChorusEffectsSend(channel: any, note: any, prevValue: any): void;
|
|
235
229
|
setDelayModLFO(note: any): void;
|
|
236
230
|
setFreqModLFO(note: any): void;
|
|
231
|
+
setFreqVibLFO(channel: any, note: any): void;
|
|
237
232
|
createVoiceParamsHandlers(): {
|
|
238
233
|
modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
|
|
239
234
|
vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
|
|
@@ -341,7 +336,7 @@ export class Midy {
|
|
|
341
336
|
handleUniversalNonRealTimeExclusiveMessage(data: any): void;
|
|
342
337
|
GM1SystemOn(): void;
|
|
343
338
|
GM2SystemOn(): void;
|
|
344
|
-
handleUniversalRealTimeExclusiveMessage(data: any):
|
|
339
|
+
handleUniversalRealTimeExclusiveMessage(data: any): any;
|
|
345
340
|
handleMasterVolumeSysEx(data: any): void;
|
|
346
341
|
setMasterVolume(volume: any): void;
|
|
347
342
|
handleMasterFineTuningSysEx(data: any): void;
|
|
@@ -369,14 +364,14 @@ export class Midy {
|
|
|
369
364
|
getChannelBitmap(data: any): any[];
|
|
370
365
|
handleScaleOctaveTuning1ByteFormatSysEx(data: any): void;
|
|
371
366
|
applyDestinationSettings(channel: any, note: any, table: any): void;
|
|
372
|
-
handleChannelPressureSysEx(data: any): void;
|
|
367
|
+
handleChannelPressureSysEx(data: any, tableName: any): void;
|
|
373
368
|
initControlTable(): Uint8Array<ArrayBuffer>;
|
|
374
369
|
applyControlTable(channel: any, controllerType: any): void;
|
|
375
370
|
handleControlChangeSysEx(data: any): void;
|
|
376
371
|
getKeyBasedInstrumentControlValue(channel: any, keyNumber: any, controllerType: any): number;
|
|
377
372
|
handleKeyBasedInstrumentControlSysEx(data: any): void;
|
|
378
373
|
handleExclusiveMessage(data: any): void;
|
|
379
|
-
handleSysEx(data: any):
|
|
374
|
+
handleSysEx(data: any): any;
|
|
380
375
|
scheduleTask(callback: any, startTime: any): Promise<any>;
|
|
381
376
|
}
|
|
382
377
|
declare class Note {
|
|
@@ -395,6 +390,7 @@ declare class Note {
|
|
|
395
390
|
reverbEffectsSend: any;
|
|
396
391
|
chorusEffectsSend: any;
|
|
397
392
|
portamento: any;
|
|
393
|
+
pressure: number;
|
|
398
394
|
noteNumber: any;
|
|
399
395
|
velocity: any;
|
|
400
396
|
startTime: any;
|
package/script/midy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"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"}
|