@marmooo/midy 0.2.2 → 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marmooo/midy",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "A MIDI player/synthesizer written in JavaScript that supports GM-Lite/GM1 and SF2/SF3.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -32,12 +32,12 @@ export class MidyGM1 {
32
32
  notePromises: any[];
33
33
  exclusiveClassMap: Map<any, any>;
34
34
  audioContext: any;
35
- masterGain: any;
35
+ masterVolume: any;
36
36
  voiceParamsHandlers: {
37
37
  modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
38
38
  vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
39
39
  modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
40
- modLfoToVolume: (channel: any, note: any) => void;
40
+ modLfoToVolume: (channel: any, note: any, _prevValue: any) => void;
41
41
  chorusEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
42
42
  reverbEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
43
43
  delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
@@ -97,7 +97,8 @@ export class MidyGM1 {
97
97
  centToRate(cent: any): number;
98
98
  centToHz(cent: any): number;
99
99
  calcChannelDetune(channel: any): any;
100
- updateDetune(channel: any): void;
100
+ updateChannelDetune(channel: any): void;
101
+ updateDetune(channel: any, note: any): void;
101
102
  setVolumeEnvelope(note: any): void;
102
103
  setPitchEnvelope(note: any): void;
103
104
  clampCutoffFrequency(frequency: any): number;
@@ -124,7 +125,7 @@ export class MidyGM1 {
124
125
  modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
125
126
  vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
126
127
  modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
127
- modLfoToVolume: (channel: any, note: any) => void;
128
+ modLfoToVolume: (channel: any, note: any, _prevValue: any) => void;
128
129
  chorusEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
129
130
  reverbEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
130
131
  delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAqFA;IAoBE;;;;;;;;;;;;MAYE;IAEF,+BAQC;IAzCD,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;IAiB5B,kBAAgC;IAChC,gBAA4C;IAC5C;;;;;;;;;;;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,qCAMC;IAED,iCAWC;IAED,mCAgBC;IAED,kCAqBC;IAED,6CAIC;IAED,mCAuBC;IAED,+DAoBC;IAED,gHA2BC;IAED,kGAgDC;IAED,0EAGC;IAED,qFA4BC;IAED,6HAuBC;IAED,0FAGC;IAED,kEAeC;IAED,gFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,mDASC;IAED,gDASC;IAED,gDASC;IAED,qCAMC;IAED,mCAQC;IAED,gCAOC;IAED,+BAMC;IAED;;;;;;;;;;;MA2CC;IAED,oFAMC;IAED,0DA6CC;IAED;;;;;;;;;;;;;MAeC;IAED,+EASC;IAED,qCAiBC;IAED,8DAKC;IACD,iDAIC;IAED;;;MAMC;IAED,2CAIC;IAED,yDAIC;IAED,mDAGC;IAED,wCAWC;IAED,sDAKC;IAED,kFAeC;IAED,2DAMC;IAED,oCAkBC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,kDAKC;IAED,wDASC;IAED,8CAKC;IAED,oDAOC;IAED,gDAKC;IAED,sDAOC;IAED,+CAEC;IAED,8CAqBC;IAED,+CAEC;IAED,4DAgBC;IAED,oBAMC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AAjzCD;IAUE,0FAMC;IAfD,kBAAa;IACb,gBAAW;IACX,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAChB,gBAAW;IACX,kBAAa;IAGX,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}
1
+ {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAqFA;IAoBE;;;;;;;;;;;;MAYE;IAEF,+BAQC;IAzCD,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;IAiB5B,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,qCAMC;IAED,wCAQC;IAED,4CAKC;IAED,mCAgBC;IAED,kCAqBC;IAED,6CAIC;IAED,mCAuBC;IAED,+DAoBC;IAED,gHA2BC;IAED,kGAgDC;IAED,0EAGC;IAED,qFA4BC;IAED,6HAuBC;IAED,0FAGC;IAED,kEAeC;IAED,gFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,mDASC;IAED,gDASC;IAED,gDASC;IAED,qCAMC;IAED,mCAQC;IAED,gCAOC;IAED,+BAMC;IAED;;;;;;;;;;;MA4CC;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,2DAMC;IAED,oCAkBC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,kDAKC;IAED,wDASC;IAED,8CAKC;IAED,oDAOC;IAED,gDAKC;IAED,sDAOC;IAED,+CAEC;IAED,8CAqBC;IAED,+CAEC;IAED,4DAgBC;IAED,oBAMC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AArzCD;IAUE,0FAMC;IAfD,kBAAa;IACb,gBAAW;IACX,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAChB,gBAAW;IACX,kBAAa;IAGX,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}
@@ -236,11 +236,11 @@ class MidyGM1 {
236
236
  value: new Map()
237
237
  });
238
238
  this.audioContext = audioContext;
239
- this.masterGain = new GainNode(audioContext);
239
+ this.masterVolume = new GainNode(audioContext);
240
240
  this.voiceParamsHandlers = this.createVoiceParamsHandlers();
241
241
  this.controlChangeHandlers = this.createControlChangeHandlers();
242
242
  this.channels = this.createChannels(audioContext);
243
- this.masterGain.connect(audioContext.destination);
243
+ this.masterVolume.connect(audioContext.destination);
244
244
  this.GM1SystemOn();
245
245
  }
246
246
  initSoundFontTable() {
@@ -286,7 +286,7 @@ class MidyGM1 {
286
286
  const merger = new ChannelMergerNode(audioContext, { numberOfInputs: 2 });
287
287
  gainL.connect(merger, 0, 0);
288
288
  gainR.connect(merger, 0, 1);
289
- merger.connect(this.masterGain);
289
+ merger.connect(this.masterVolume);
290
290
  return {
291
291
  gainL,
292
292
  gainR,
@@ -612,19 +612,22 @@ class MidyGM1 {
612
612
  const pitch = pitchWheel * pitchWheelSensitivity;
613
613
  return tuning + pitch;
614
614
  }
615
- updateDetune(channel) {
616
- const now = this.audioContext.currentTime;
615
+ updateChannelDetune(channel) {
617
616
  channel.scheduledNotes.forEach((noteList) => {
618
617
  for (let i = 0; i < noteList.length; i++) {
619
618
  const note = noteList[i];
620
619
  if (!note)
621
620
  continue;
622
- note.bufferSource.detune
623
- .cancelScheduledValues(now)
624
- .setValueAtTime(channel.detune, now);
621
+ this.updateDetune(channel, note);
625
622
  }
626
623
  });
627
624
  }
625
+ updateDetune(channel, note) {
626
+ const now = this.audioContext.currentTime;
627
+ note.bufferSource.detune
628
+ .cancelScheduledValues(now)
629
+ .setValueAtTime(channel.detune, now);
630
+ }
628
631
  setVolumeEnvelope(note) {
629
632
  const now = this.audioContext.currentTime;
630
633
  const { voiceParams, startTime } = note;
@@ -877,7 +880,7 @@ class MidyGM1 {
877
880
  const next = (value - 8192) / 8192;
878
881
  state.pitchWheel = value / 16383;
879
882
  channel.detune += (next - prev) * state.pitchWheelSensitivity * 12800;
880
- this.updateDetune(channel);
883
+ this.updateChannelDetune(channel);
881
884
  this.applyVoiceParams(channel, 14);
882
885
  }
883
886
  setModLfoToPitch(channel, note) {
@@ -948,7 +951,7 @@ class MidyGM1 {
948
951
  if (0 < channel.state.modulationDepth)
949
952
  this.setModLfoToFilterFc(note);
950
953
  },
951
- modLfoToVolume: (channel, note) => {
954
+ modLfoToVolume: (channel, note, _prevValue) => {
952
955
  if (0 < channel.state.modulationDepth)
953
956
  this.setModLfoToVolume(note);
954
957
  },
@@ -959,12 +962,12 @@ class MidyGM1 {
959
962
  delayVibLFO: (channel, note, prevValue) => {
960
963
  if (0 < channel.state.vibratoDepth) {
961
964
  const now = this.audioContext.currentTime;
962
- const prevStartTime = note.startTime +
963
- prevValue * channel.state.vibratoDelay * 2;
965
+ const vibratoDelay = channel.state.vibratoDelay * 2;
966
+ const prevStartTime = note.startTime + prevValue * vibratoDelay;
964
967
  if (now < prevStartTime)
965
968
  return;
966
- const startTime = note.startTime +
967
- value * channel.state.vibratoDelay * 2;
969
+ const value = note.voiceParams.delayVibLFO;
970
+ const startTime = note.startTime + value * vibratoDelay;
968
971
  note.vibratoLFO.stop(now);
969
972
  note.vibratoLFO.start(startTime);
970
973
  }
@@ -972,9 +975,10 @@ class MidyGM1 {
972
975
  freqVibLFO: (channel, note, _prevValue) => {
973
976
  if (0 < channel.state.vibratoDepth) {
974
977
  const now = this.audioContext.currentTime;
978
+ const freqVibLFO = note.voiceParams.freqVibLFO;
975
979
  note.vibratoLFO.frequency
976
980
  .cancelScheduledValues(now)
977
- .setValueAtTime(value * sate.vibratoRate, now);
981
+ .setValueAtTime(freqVibLFO * channel.state.vibratoRate * 2, now);
978
982
  }
979
983
  },
980
984
  };
@@ -1014,7 +1018,7 @@ class MidyGM1 {
1014
1018
  if (key in voiceParams)
1015
1019
  noteVoiceParams[key] = voiceParams[key];
1016
1020
  }
1017
- this.setFilterEnvelope(channel, note);
1021
+ this.setFilterEnvelope(note);
1018
1022
  this.setPitchEnvelope(note);
1019
1023
  }
1020
1024
  else if (volumeEnvelopeKeySet.has(key)) {
@@ -1053,6 +1057,8 @@ class MidyGM1 {
1053
1057
  const handler = this.controlChangeHandlers[controllerType];
1054
1058
  if (handler) {
1055
1059
  handler.call(this, channelNumber, value);
1060
+ const channel = this.channels[channelNumber];
1061
+ this.applyVoiceParams(channel, controllerType + 128);
1056
1062
  }
1057
1063
  else {
1058
1064
  console.warn(`Unsupported Control change: controllerType=${controllerType} value=${value}`);
@@ -1060,13 +1066,14 @@ class MidyGM1 {
1060
1066
  }
1061
1067
  updateModulation(channel) {
1062
1068
  const now = this.audioContext.currentTime;
1069
+ const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1063
1070
  channel.scheduledNotes.forEach((noteList) => {
1064
1071
  for (let i = 0; i < noteList.length; i++) {
1065
1072
  const note = noteList[i];
1066
1073
  if (!note)
1067
1074
  continue;
1068
1075
  if (note.modulationDepth) {
1069
- note.modulationDepth.gain.setValueAtTime(channel.state.modulationDepth, now);
1076
+ note.modulationDepth.gain.setValueAtTime(depth, now);
1070
1077
  }
1071
1078
  else {
1072
1079
  this.setPitchEnvelope(note);
@@ -1077,8 +1084,7 @@ class MidyGM1 {
1077
1084
  }
1078
1085
  setModulationDepth(channelNumber, modulation) {
1079
1086
  const channel = this.channels[channelNumber];
1080
- channel.state.modulationDepth = (modulation / 127) *
1081
- channel.modulationDepthRange;
1087
+ channel.state.modulationDepth = modulation / 127;
1082
1088
  this.updateModulation(channel);
1083
1089
  }
1084
1090
  setVolume(channelNumber, volume) {
@@ -1191,7 +1197,7 @@ class MidyGM1 {
1191
1197
  const next = value / 128;
1192
1198
  state.pitchWheelSensitivity = next;
1193
1199
  channel.detune += (state.pitchWheel * 2 - 1) * (next - prev) * 12800;
1194
- this.updateDetune(channel);
1200
+ this.updateChannelDetune(channel);
1195
1201
  this.applyVoiceParams(channel, 16);
1196
1202
  }
1197
1203
  handleFineTuningRPN(channelNumber) {
@@ -1206,7 +1212,7 @@ class MidyGM1 {
1206
1212
  const next = (value - 8192) / 8.192; // cent
1207
1213
  channel.fineTuning = next;
1208
1214
  channel.detune += next - prev;
1209
- this.updateDetune(channel);
1215
+ this.updateChannelDetune(channel);
1210
1216
  }
1211
1217
  handleCoarseTuningRPN(channelNumber) {
1212
1218
  const channel = this.channels[channelNumber];
@@ -1220,7 +1226,7 @@ class MidyGM1 {
1220
1226
  const next = (value - 64) * 100; // cent
1221
1227
  channel.coarseTuning = next;
1222
1228
  channel.detune += next - prev;
1223
- this.updateDetune(channel);
1229
+ this.updateChannelDetune(channel);
1224
1230
  }
1225
1231
  allSoundOff(channelNumber) {
1226
1232
  return this.stopChannelNotes(channelNumber, 0, true);
@@ -1236,7 +1242,7 @@ class MidyGM1 {
1236
1242
  const state = channel.state;
1237
1243
  for (let i = 0; i < stateTypes.length; i++) {
1238
1244
  const type = stateTypes[i];
1239
- state[type] = defaultControllerState[type];
1245
+ state[type] = defaultControllerState[type].defaultValue;
1240
1246
  }
1241
1247
  const settingTypes = [
1242
1248
  "rpnMSB",
@@ -1298,8 +1304,8 @@ class MidyGM1 {
1298
1304
  }
1299
1305
  else {
1300
1306
  const now = this.audioContext.currentTime;
1301
- this.masterGain.gain.cancelScheduledValues(now);
1302
- this.masterGain.gain.setValueAtTime(volume * volume, now);
1307
+ this.masterVolume.gain.cancelScheduledValues(now);
1308
+ this.masterVolume.gain.setValueAtTime(volume * volume, now);
1303
1309
  }
1304
1310
  }
1305
1311
  handleExclusiveMessage(data) {
@@ -3,7 +3,7 @@ export class MidyGM2 {
3
3
  currentBufferSource: null;
4
4
  detune: number;
5
5
  scaleOctaveTuningTable: any[];
6
- pressureTable: Uint8Array<ArrayBuffer>;
6
+ channelPressureTable: Uint8Array<ArrayBuffer>;
7
7
  keyBasedInstrumentControlTable: Int8Array<ArrayBuffer>;
8
8
  program: number;
9
9
  bank: number;
@@ -17,14 +17,6 @@ export class MidyGM2 {
17
17
  coarseTuning: number;
18
18
  modulationDepthRange: number;
19
19
  };
20
- static controllerDestinationSettings: {
21
- pitchControl: number;
22
- filterCutoffControl: number;
23
- amplitudeControl: number;
24
- lfoPitchDepth: number;
25
- lfoFilterDepth: number;
26
- lfoAmplitudeDepth: number;
27
- };
28
20
  constructor(audioContext: any, options?: {
29
21
  reverbAlgorithm: (audioContext: any) => {
30
22
  input: any;
@@ -77,12 +69,12 @@ export class MidyGM2 {
77
69
  output: any;
78
70
  };
79
71
  };
80
- masterGain: any;
72
+ masterVolume: any;
81
73
  voiceParamsHandlers: {
82
74
  modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
83
75
  vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
84
76
  modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
85
- modLfoToVolume: (channel: any, note: any) => void;
77
+ modLfoToVolume: (channel: any, note: any, _prevValue: any) => void;
86
78
  chorusEffectsSend: (channel: any, note: any, prevValue: any) => void;
87
79
  reverbEffectsSend: (channel: any, note: any, prevValue: any) => void;
88
80
  delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
@@ -191,14 +183,15 @@ export class MidyGM2 {
191
183
  centToHz(cent: any): number;
192
184
  calcChannelDetune(channel: any): any;
193
185
  calcNoteDetune(channel: any, note: any): any;
194
- updateDetune(channel: any): void;
186
+ updateChannelDetune(channel: any): void;
187
+ updateDetune(channel: any, note: any, pressure: any): void;
195
188
  getPortamentoTime(channel: any): number;
196
189
  setPortamentoStartVolumeEnvelope(channel: any, note: any): void;
197
- setVolumeEnvelope(channel: any, note: any): void;
190
+ setVolumeEnvelope(note: any, pressure: any): void;
198
191
  setPitchEnvelope(note: any): void;
199
192
  clampCutoffFrequency(frequency: any): number;
200
193
  setPortamentoStartFilterEnvelope(channel: any, note: any): void;
201
- setFilterEnvelope(channel: any, note: any): void;
194
+ setFilterEnvelope(channel: any, note: any, pressure: any): void;
202
195
  startModulation(channel: any, note: any, startTime: any): void;
203
196
  startVibrato(channel: any, note: any, startTime: any): void;
204
197
  createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any, portamento: any, isSF3: any): Promise<Note>;
@@ -213,22 +206,22 @@ export class MidyGM2 {
213
206
  handleMIDIMessage(statusByte: any, data1: any, data2: any): void | Promise<any>;
214
207
  handleProgramChange(channelNumber: any, program: any): void;
215
208
  handleChannelPressure(channelNumber: any, value: any): void;
216
- setChannelPressure(channel: any, note: any): void;
217
209
  handlePitchBendMessage(channelNumber: any, lsb: any, msb: any): void;
218
210
  setPitchBend(channelNumber: any, value: any): void;
219
- setModLfoToPitch(channel: any, note: any): void;
211
+ setModLfoToPitch(channel: any, note: any, pressure: any): void;
220
212
  setVibLfoToPitch(channel: any, note: any): void;
221
- setModLfoToFilterFc(channel: any, note: any): void;
222
- setModLfoToVolume(channel: any, note: any): void;
213
+ setModLfoToFilterFc(note: any, pressure: any): void;
214
+ setModLfoToVolume(note: any, pressure: any): void;
223
215
  setReverbEffectsSend(channel: any, note: any, prevValue: any): void;
224
216
  setChorusEffectsSend(channel: any, note: any, prevValue: any): void;
225
217
  setDelayModLFO(note: any): void;
226
218
  setFreqModLFO(note: any): void;
219
+ setFreqVibLFO(channel: any, note: any): void;
227
220
  createVoiceParamsHandlers(): {
228
221
  modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
229
222
  vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
230
223
  modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
231
- modLfoToVolume: (channel: any, note: any) => void;
224
+ modLfoToVolume: (channel: any, note: any, _prevValue: any) => void;
232
225
  chorusEffectsSend: (channel: any, note: any, prevValue: any) => void;
233
226
  reverbEffectsSend: (channel: any, note: any, prevValue: any) => void;
234
227
  delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
@@ -311,7 +304,7 @@ export class MidyGM2 {
311
304
  handleUniversalNonRealTimeExclusiveMessage(data: any): void;
312
305
  GM1SystemOn(): void;
313
306
  GM2SystemOn(): void;
314
- handleUniversalRealTimeExclusiveMessage(data: any): void;
307
+ handleUniversalRealTimeExclusiveMessage(data: any): any;
315
308
  handleMasterVolumeSysEx(data: any): void;
316
309
  setMasterVolume(volume: any): void;
317
310
  handleMasterFineTuningSysEx(data: any): void;
@@ -338,11 +331,15 @@ export class MidyGM2 {
338
331
  getChorusSendToReverb(value: any): number;
339
332
  getChannelBitmap(data: any): any[];
340
333
  handleScaleOctaveTuning1ByteFormatSysEx(data: any): void;
341
- handleChannelPressureSysEx(data: any): void;
334
+ applyDestinationSettings(channel: any, note: any, table: any): void;
335
+ handleChannelPressureSysEx(data: any, tableName: any): void;
336
+ initControlTable(): Uint8Array<ArrayBuffer>;
337
+ applyControlTable(channel: any, controllerType: any): void;
338
+ handleControlChangeSysEx(data: any): void;
342
339
  getKeyBasedInstrumentControlValue(channel: any, keyNumber: any, controllerType: any): number;
343
340
  handleKeyBasedInstrumentControlSysEx(data: any): void;
344
341
  handleExclusiveMessage(data: any): void;
345
- handleSysEx(data: any): void;
342
+ handleSysEx(data: any): any;
346
343
  scheduleTask(callback: any, startTime: any): Promise<any>;
347
344
  }
348
345
  declare class Note {
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"midy-GM2.d.ts","sourceRoot":"","sources":["../src/midy-GM2.js"],"names":[],"mappings":"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"}