@marmooo/midy 0.2.1 → 0.2.3

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.
@@ -29,12 +29,12 @@ export class MidyGMLite {
29
29
  notePromises: any[];
30
30
  exclusiveClassMap: Map<any, any>;
31
31
  audioContext: any;
32
- masterGain: any;
32
+ masterVolume: any;
33
33
  voiceParamsHandlers: {
34
34
  modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
35
35
  vibLfoToPitch: (_channel: any, _note: any, _prevValue: any) => void;
36
36
  modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
37
- modLfoToVolume: (channel: any, note: any) => void;
37
+ modLfoToVolume: (channel: any, note: any, _prevValue: any) => void;
38
38
  chorusEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
39
39
  reverbEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
40
40
  delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
@@ -120,7 +120,7 @@ export class MidyGMLite {
120
120
  modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
121
121
  vibLfoToPitch: (_channel: any, _note: any, _prevValue: any) => void;
122
122
  modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
123
- modLfoToVolume: (channel: any, note: any) => void;
123
+ modLfoToVolume: (channel: any, note: any, _prevValue: any) => void;
124
124
  chorusEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
125
125
  reverbEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
126
126
  delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
@@ -128,7 +128,7 @@ export class MidyGMLite {
128
128
  delayVibLFO: (_channel: any, _note: any, _prevValue: any) => void;
129
129
  freqVibLFO: (_channel: any, _note: any, _prevValue: any) => void;
130
130
  };
131
- getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array;
131
+ getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array<any>;
132
132
  applyVoiceParams(channel: any, controllerType: any): void;
133
133
  createControlChangeHandlers(): {
134
134
  1: (channelNumber: any, modulation: any) => void;
@@ -180,7 +180,7 @@ declare class Note {
180
180
  constructor(noteNumber: any, velocity: any, startTime: any, voice: any, voiceParams: any);
181
181
  bufferSource: any;
182
182
  filterNode: any;
183
- volumeNode: any;
183
+ volumeEnvelopeNode: any;
184
184
  volumeDepth: any;
185
185
  modulationLFO: any;
186
186
  modulationDepth: any;
@@ -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,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,wCAIC;IAED,iCAWC;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,+EAMC;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,oCAYC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,kDAKC;IAED,wEAOC;IAED,+CAEC;IAED,8CAqBC;IAED,+CAEC;IAED,4DAgBC;IAED,oBAMC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AArtCD;IAQE,0FAMC;IAbD,kBAAa;IACb,gBAAW;IACX,gBAAW;IACX,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAGd,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}
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,iCAWC;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,wEAOC;IAED,+CAEC;IAED,8CAqBC;IAED,+CAEC;IAED,4DAgBC;IAED,oBAMC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AAptCD;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"}
@@ -17,7 +17,7 @@ class Note {
17
17
  writable: true,
18
18
  value: void 0
19
19
  });
20
- Object.defineProperty(this, "volumeNode", {
20
+ Object.defineProperty(this, "volumeEnvelopeNode", {
21
21
  enumerable: true,
22
22
  configurable: true,
23
23
  writable: true,
@@ -224,11 +224,11 @@ class MidyGMLite {
224
224
  value: new Map()
225
225
  });
226
226
  this.audioContext = audioContext;
227
- this.masterGain = new GainNode(audioContext);
227
+ this.masterVolume = new GainNode(audioContext);
228
228
  this.voiceParamsHandlers = this.createVoiceParamsHandlers();
229
229
  this.controlChangeHandlers = this.createControlChangeHandlers();
230
230
  this.channels = this.createChannels(audioContext);
231
- this.masterGain.connect(audioContext.destination);
231
+ this.masterVolume.connect(audioContext.destination);
232
232
  this.GM1SystemOn();
233
233
  }
234
234
  initSoundFontTable() {
@@ -274,7 +274,7 @@ class MidyGMLite {
274
274
  const merger = new ChannelMergerNode(audioContext, { numberOfInputs: 2 });
275
275
  gainL.connect(merger, 0, 0);
276
276
  gainR.connect(merger, 0, 1);
277
- merger.connect(this.masterGain);
277
+ merger.connect(this.masterVolume);
278
278
  return {
279
279
  gainL,
280
280
  gainR,
@@ -620,7 +620,7 @@ class MidyGMLite {
620
620
  const volAttack = volDelay + voiceParams.volAttack;
621
621
  const volHold = volAttack + voiceParams.volHold;
622
622
  const volDecay = volHold + voiceParams.volDecay;
623
- note.volumeNode.gain
623
+ note.volumeEnvelopeNode.gain
624
624
  .cancelScheduledValues(now)
625
625
  .setValueAtTime(0, startTime)
626
626
  .setValueAtTime(1e-6, volDelay) // exponentialRampToValueAtTime() requires a non-zero value
@@ -696,14 +696,14 @@ class MidyGMLite {
696
696
  note.modulationLFO.connect(note.modulationDepth);
697
697
  note.modulationDepth.connect(note.bufferSource.detune);
698
698
  note.modulationLFO.connect(note.volumeDepth);
699
- note.volumeDepth.connect(note.volumeNode.gain);
699
+ note.volumeDepth.connect(note.volumeEnvelopeNode.gain);
700
700
  }
701
701
  async createNote(channel, voice, noteNumber, velocity, startTime, isSF3) {
702
702
  const state = channel.state;
703
703
  const voiceParams = voice.getAllParams(state.array);
704
704
  const note = new Note(noteNumber, velocity, startTime, voice, voiceParams);
705
705
  note.bufferSource = await this.createNoteBufferNode(voiceParams, isSF3);
706
- note.volumeNode = new GainNode(this.audioContext);
706
+ note.volumeEnvelopeNode = new GainNode(this.audioContext);
707
707
  note.filterNode = new BiquadFilterNode(this.audioContext, {
708
708
  type: "lowpass",
709
709
  Q: voiceParams.initialFilterQ / 10, // dB
@@ -715,7 +715,7 @@ class MidyGMLite {
715
715
  this.startModulation(channel, note, startTime);
716
716
  }
717
717
  note.bufferSource.connect(note.filterNode);
718
- note.filterNode.connect(note.volumeNode);
718
+ note.filterNode.connect(note.volumeEnvelopeNode);
719
719
  note.bufferSource.start(startTime);
720
720
  return note;
721
721
  }
@@ -731,8 +731,8 @@ class MidyGMLite {
731
731
  if (!voice)
732
732
  return;
733
733
  const note = await this.createNote(channel, voice, noteNumber, velocity, startTime, isSF3);
734
- note.volumeNode.connect(channel.gainL);
735
- note.volumeNode.connect(channel.gainR);
734
+ note.volumeEnvelopeNode.connect(channel.gainL);
735
+ note.volumeEnvelopeNode.connect(channel.gainR);
736
736
  const exclusiveClass = note.voiceParams.exclusiveClass;
737
737
  if (exclusiveClass !== 0) {
738
738
  if (this.exclusiveClassMap.has(exclusiveClass)) {
@@ -760,7 +760,7 @@ class MidyGMLite {
760
760
  }
761
761
  stopNote(endTime, stopTime, scheduledNotes, index) {
762
762
  const note = scheduledNotes[index];
763
- note.volumeNode.gain
763
+ note.volumeEnvelopeNode.gain
764
764
  .cancelScheduledValues(endTime)
765
765
  .linearRampToValueAtTime(0, stopTime);
766
766
  note.ending = true;
@@ -771,8 +771,8 @@ class MidyGMLite {
771
771
  note.bufferSource.onended = () => {
772
772
  scheduledNotes[index] = null;
773
773
  note.bufferSource.disconnect();
774
- note.volumeNode.disconnect();
775
774
  note.filterNode.disconnect();
775
+ note.volumeEnvelopeNode.disconnect();
776
776
  if (note.modulationDepth) {
777
777
  note.volumeDepth.disconnect();
778
778
  note.modulationDepth.disconnect();
@@ -865,12 +865,12 @@ class MidyGMLite {
865
865
  setModLfoToPitch(channel, note) {
866
866
  const now = this.audioContext.currentTime;
867
867
  const modLfoToPitch = note.voiceParams.modLfoToPitch;
868
- const modulationDepth = Math.abs(modLfoToPitch) +
868
+ const baseDepth = Math.abs(modLfoToPitch) +
869
869
  channel.state.modulationDepth;
870
- const modulationDepthSign = (0 < modLfoToPitch) ? 1 : -1;
870
+ const modulationDepth = baseDepth * Math.sign(modLfoToPitch);
871
871
  note.modulationDepth.gain
872
872
  .cancelScheduledValues(now)
873
- .setValueAtTime(modulationDepth * modulationDepthSign, now);
873
+ .setValueAtTime(modulationDepth, now);
874
874
  }
875
875
  setModLfoToFilterFc(note) {
876
876
  const now = this.audioContext.currentTime;
@@ -882,11 +882,11 @@ class MidyGMLite {
882
882
  setModLfoToVolume(note) {
883
883
  const now = this.audioContext.currentTime;
884
884
  const modLfoToVolume = note.voiceParams.modLfoToVolume;
885
- const volumeDepth = this.cbToRatio(Math.abs(modLfoToVolume)) - 1;
886
- const volumeDepthSign = (0 < modLfoToVolume) ? 1 : -1;
885
+ const baseDepth = this.cbToRatio(Math.abs(modLfoToVolume)) - 1;
886
+ const volumeDepth = baseDepth * Math.sign(modLfoToVolume);
887
887
  note.volumeDepth.gain
888
888
  .cancelScheduledValues(now)
889
- .setValueAtTime(volumeDepth * volumeDepthSign, now);
889
+ .setValueAtTime(volumeDepth, now);
890
890
  }
891
891
  setDelayModLFO(note) {
892
892
  const now = this.audioContext.currentTime;
@@ -916,7 +916,7 @@ class MidyGMLite {
916
916
  if (0 < channel.state.modulationDepth)
917
917
  this.setModLfoToFilterFc(note);
918
918
  },
919
- modLfoToVolume: (channel, note) => {
919
+ modLfoToVolume: (channel, note, _prevValue) => {
920
920
  if (0 < channel.state.modulationDepth)
921
921
  this.setModLfoToVolume(note);
922
922
  },
@@ -1002,6 +1002,8 @@ class MidyGMLite {
1002
1002
  const handler = this.controlChangeHandlers[controllerType];
1003
1003
  if (handler) {
1004
1004
  handler.call(this, channelNumber, value);
1005
+ const channel = this.channels[channelNumber];
1006
+ this.applyVoiceParams(channel, controller + 128);
1005
1007
  }
1006
1008
  else {
1007
1009
  console.warn(`Unsupported Control change: controllerType=${controllerType} value=${value}`);
@@ -1009,13 +1011,14 @@ class MidyGMLite {
1009
1011
  }
1010
1012
  updateModulation(channel) {
1011
1013
  const now = this.audioContext.currentTime;
1014
+ const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1012
1015
  channel.scheduledNotes.forEach((noteList) => {
1013
1016
  for (let i = 0; i < noteList.length; i++) {
1014
1017
  const note = noteList[i];
1015
1018
  if (!note)
1016
1019
  continue;
1017
1020
  if (note.modulationDepth) {
1018
- note.modulationDepth.gain.setValueAtTime(channel.state.modulationDepth, now);
1021
+ note.modulationDepth.gain.setValueAtTime(depth, now);
1019
1022
  }
1020
1023
  else {
1021
1024
  this.setPitchEnvelope(note);
@@ -1026,8 +1029,7 @@ class MidyGMLite {
1026
1029
  }
1027
1030
  setModulationDepth(channelNumber, modulation) {
1028
1031
  const channel = this.channels[channelNumber];
1029
- channel.state.modulationDepth = (modulation / 127) *
1030
- channel.modulationDepthRange;
1032
+ channel.state.modulationDepth = modulation / 127;
1031
1033
  this.updateModulation(channel);
1032
1034
  }
1033
1035
  setVolume(channelNumber, volume) {
@@ -1203,8 +1205,8 @@ class MidyGMLite {
1203
1205
  }
1204
1206
  else {
1205
1207
  const now = this.audioContext.currentTime;
1206
- this.masterGain.gain.cancelScheduledValues(now);
1207
- this.masterGain.gain.setValueAtTime(volume * volume, now);
1208
+ this.masterVolume.gain.cancelScheduledValues(now);
1209
+ this.masterVolume.gain.setValueAtTime(volume * volume, now);
1208
1210
  }
1209
1211
  }
1210
1212
  handleExclusiveMessage(data) {
package/script/midy.d.ts CHANGED
@@ -3,6 +3,8 @@ export class Midy {
3
3
  currentBufferSource: null;
4
4
  detune: number;
5
5
  scaleOctaveTuningTable: any[];
6
+ pressureTable: Uint8Array<ArrayBuffer>;
7
+ keyBasedInstrumentControlTable: Int8Array<ArrayBuffer>;
6
8
  program: number;
7
9
  bank: number;
8
10
  bankMSB: number;
@@ -75,14 +77,14 @@ export class Midy {
75
77
  output: any;
76
78
  };
77
79
  };
78
- masterGain: any;
80
+ masterVolume: any;
79
81
  voiceParamsHandlers: {
80
82
  modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
81
83
  vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
82
84
  modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
83
- modLfoToVolume: (channel: any, note: any) => void;
84
- chorusEffectsSend: (_channel: any, note: any, prevValue: any) => void;
85
- reverbEffectsSend: (_channel: any, note: any, prevValue: any) => void;
85
+ modLfoToVolume: (channel: any, note: any, _prevValue: any) => void;
86
+ chorusEffectsSend: (channel: any, note: any, prevValue: any) => void;
87
+ reverbEffectsSend: (channel: any, note: any, prevValue: any) => void;
86
88
  delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
87
89
  freqModLFO: (_channel: any, note: any, _prevValue: any) => void;
88
90
  delayVibLFO: (channel: any, note: any, prevValue: any) => void;
@@ -200,6 +202,7 @@ export class Midy {
200
202
  calcChannelDetune(channel: any): any;
201
203
  calcNoteDetune(channel: any, note: any): any;
202
204
  updateDetune(channel: any): void;
205
+ getPortamentoTime(channel: any): number;
203
206
  setPortamentoStartVolumeEnvelope(channel: any, note: any): void;
204
207
  setVolumeEnvelope(channel: any, note: any): void;
205
208
  setPitchEnvelope(note: any): void;
@@ -220,30 +223,30 @@ export class Midy {
220
223
  handleMIDIMessage(statusByte: any, data1: any, data2: any): void | Promise<any>;
221
224
  handlePolyphonicKeyPressure(channelNumber: any, noteNumber: any, pressure: any): void;
222
225
  handleProgramChange(channelNumber: any, program: any): void;
223
- handleChannelPressure(channelNumber: any, pressure: any): void;
226
+ handleChannelPressure(channelNumber: any, value: any): void;
224
227
  handlePitchBendMessage(channelNumber: any, lsb: any, msb: any): void;
225
228
  setPitchBend(channelNumber: any, value: any): void;
226
229
  setModLfoToPitch(channel: any, note: any): void;
227
230
  setVibLfoToPitch(channel: any, note: any): void;
228
- setModLfoToFilterFc(note: any): void;
229
- setModLfoToVolume(note: any): void;
230
- setChorusEffectsSend(note: any, prevValue: any): void;
231
- setReverbEffectsSend(note: any, prevValue: any): void;
231
+ setModLfoToFilterFc(channel: any, note: any): void;
232
+ setModLfoToVolume(channel: any, note: any): void;
233
+ setReverbEffectsSend(channel: any, note: any, prevValue: any): void;
234
+ setChorusEffectsSend(channel: any, note: any, prevValue: any): void;
232
235
  setDelayModLFO(note: any): void;
233
236
  setFreqModLFO(note: any): void;
234
237
  createVoiceParamsHandlers(): {
235
238
  modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
236
239
  vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
237
240
  modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
238
- modLfoToVolume: (channel: any, note: any) => void;
239
- chorusEffectsSend: (_channel: any, note: any, prevValue: any) => void;
240
- reverbEffectsSend: (_channel: any, note: any, prevValue: any) => void;
241
+ modLfoToVolume: (channel: any, note: any, _prevValue: any) => void;
242
+ chorusEffectsSend: (channel: any, note: any, prevValue: any) => void;
243
+ reverbEffectsSend: (channel: any, note: any, prevValue: any) => void;
241
244
  delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
242
245
  freqModLFO: (_channel: any, note: any, _prevValue: any) => void;
243
246
  delayVibLFO: (channel: any, note: any, prevValue: any) => void;
244
247
  freqVibLFO: (channel: any, note: any, _prevValue: any) => void;
245
248
  };
246
- getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array;
249
+ getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array<any>;
247
250
  applyVoiceParams(channel: any, controllerType: any): void;
248
251
  createControlChangeHandlers(): {
249
252
  0: (channelNumber: any, msb: any) => void;
@@ -286,11 +289,13 @@ export class Midy {
286
289
  updateModulation(channel: any): void;
287
290
  setModulationDepth(channelNumber: any, modulation: any): void;
288
291
  setPortamentoTime(channelNumber: any, portamentoTime: any): void;
292
+ setKeyBasedVolume(channel: any): void;
289
293
  setVolume(channelNumber: any, volume: any): void;
290
294
  panToGain(pan: any): {
291
295
  gainLeft: number;
292
296
  gainRight: number;
293
297
  };
298
+ setKeyBasedPan(channel: any): void;
294
299
  setPan(channelNumber: any, pan: any): void;
295
300
  setExpression(channelNumber: any, expression: any): void;
296
301
  setBankLSB(channelNumber: any, lsb: any): void;
@@ -343,8 +348,6 @@ export class Midy {
343
348
  setMasterFineTuning(value: any): void;
344
349
  handleMasterCoarseTuningSysEx(data: any): void;
345
350
  setMasterCoarseTuning(value: any): void;
346
- getChannelBitmap(data: any): any[];
347
- handleScaleOctaveTuning1ByteFormat(data: any): void;
348
351
  handleGlobalParameterControlSysEx(data: any): void;
349
352
  handleReverbParameterSysEx(data: any): void;
350
353
  setReverbType(type: any): void;
@@ -363,6 +366,15 @@ export class Midy {
363
366
  getChorusFeedback(value: any): number;
364
367
  setChorusSendToReverb(value: any): void;
365
368
  getChorusSendToReverb(value: any): number;
369
+ getChannelBitmap(data: any): any[];
370
+ handleScaleOctaveTuning1ByteFormatSysEx(data: any): void;
371
+ applyDestinationSettings(channel: any, note: any, table: any): void;
372
+ handleChannelPressureSysEx(data: any): void;
373
+ initControlTable(): Uint8Array<ArrayBuffer>;
374
+ applyControlTable(channel: any, controllerType: any): void;
375
+ handleControlChangeSysEx(data: any): void;
376
+ getKeyBasedInstrumentControlValue(channel: any, keyNumber: any, controllerType: any): number;
377
+ handleKeyBasedInstrumentControlSysEx(data: any): void;
366
378
  handleExclusiveMessage(data: any): void;
367
379
  handleSysEx(data: any): void;
368
380
  scheduleTask(callback: any, startTime: any): Promise<any>;
@@ -371,7 +383,10 @@ declare class Note {
371
383
  constructor(noteNumber: any, velocity: any, startTime: any, voice: any, voiceParams: any);
372
384
  bufferSource: any;
373
385
  filterNode: any;
386
+ volumeEnvelopeNode: any;
374
387
  volumeNode: any;
388
+ gainL: any;
389
+ gainR: any;
375
390
  volumeDepth: any;
376
391
  modulationLFO: any;
377
392
  modulationDepth: any;
@@ -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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"}