@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"}
@@ -14,7 +14,7 @@ class Note {
14
14
  writable: true,
15
15
  value: void 0
16
16
  });
17
- Object.defineProperty(this, "volumeNode", {
17
+ Object.defineProperty(this, "volumeEnvelopeNode", {
18
18
  enumerable: true,
19
19
  configurable: true,
20
20
  writable: true,
@@ -221,11 +221,11 @@ export class MidyGMLite {
221
221
  value: new Map()
222
222
  });
223
223
  this.audioContext = audioContext;
224
- this.masterGain = new GainNode(audioContext);
224
+ this.masterVolume = new GainNode(audioContext);
225
225
  this.voiceParamsHandlers = this.createVoiceParamsHandlers();
226
226
  this.controlChangeHandlers = this.createControlChangeHandlers();
227
227
  this.channels = this.createChannels(audioContext);
228
- this.masterGain.connect(audioContext.destination);
228
+ this.masterVolume.connect(audioContext.destination);
229
229
  this.GM1SystemOn();
230
230
  }
231
231
  initSoundFontTable() {
@@ -271,7 +271,7 @@ export class MidyGMLite {
271
271
  const merger = new ChannelMergerNode(audioContext, { numberOfInputs: 2 });
272
272
  gainL.connect(merger, 0, 0);
273
273
  gainR.connect(merger, 0, 1);
274
- merger.connect(this.masterGain);
274
+ merger.connect(this.masterVolume);
275
275
  return {
276
276
  gainL,
277
277
  gainR,
@@ -617,7 +617,7 @@ export class MidyGMLite {
617
617
  const volAttack = volDelay + voiceParams.volAttack;
618
618
  const volHold = volAttack + voiceParams.volHold;
619
619
  const volDecay = volHold + voiceParams.volDecay;
620
- note.volumeNode.gain
620
+ note.volumeEnvelopeNode.gain
621
621
  .cancelScheduledValues(now)
622
622
  .setValueAtTime(0, startTime)
623
623
  .setValueAtTime(1e-6, volDelay) // exponentialRampToValueAtTime() requires a non-zero value
@@ -693,14 +693,14 @@ export class MidyGMLite {
693
693
  note.modulationLFO.connect(note.modulationDepth);
694
694
  note.modulationDepth.connect(note.bufferSource.detune);
695
695
  note.modulationLFO.connect(note.volumeDepth);
696
- note.volumeDepth.connect(note.volumeNode.gain);
696
+ note.volumeDepth.connect(note.volumeEnvelopeNode.gain);
697
697
  }
698
698
  async createNote(channel, voice, noteNumber, velocity, startTime, isSF3) {
699
699
  const state = channel.state;
700
700
  const voiceParams = voice.getAllParams(state.array);
701
701
  const note = new Note(noteNumber, velocity, startTime, voice, voiceParams);
702
702
  note.bufferSource = await this.createNoteBufferNode(voiceParams, isSF3);
703
- note.volumeNode = new GainNode(this.audioContext);
703
+ note.volumeEnvelopeNode = new GainNode(this.audioContext);
704
704
  note.filterNode = new BiquadFilterNode(this.audioContext, {
705
705
  type: "lowpass",
706
706
  Q: voiceParams.initialFilterQ / 10, // dB
@@ -712,7 +712,7 @@ export class MidyGMLite {
712
712
  this.startModulation(channel, note, startTime);
713
713
  }
714
714
  note.bufferSource.connect(note.filterNode);
715
- note.filterNode.connect(note.volumeNode);
715
+ note.filterNode.connect(note.volumeEnvelopeNode);
716
716
  note.bufferSource.start(startTime);
717
717
  return note;
718
718
  }
@@ -728,8 +728,8 @@ export class MidyGMLite {
728
728
  if (!voice)
729
729
  return;
730
730
  const note = await this.createNote(channel, voice, noteNumber, velocity, startTime, isSF3);
731
- note.volumeNode.connect(channel.gainL);
732
- note.volumeNode.connect(channel.gainR);
731
+ note.volumeEnvelopeNode.connect(channel.gainL);
732
+ note.volumeEnvelopeNode.connect(channel.gainR);
733
733
  const exclusiveClass = note.voiceParams.exclusiveClass;
734
734
  if (exclusiveClass !== 0) {
735
735
  if (this.exclusiveClassMap.has(exclusiveClass)) {
@@ -757,7 +757,7 @@ export class MidyGMLite {
757
757
  }
758
758
  stopNote(endTime, stopTime, scheduledNotes, index) {
759
759
  const note = scheduledNotes[index];
760
- note.volumeNode.gain
760
+ note.volumeEnvelopeNode.gain
761
761
  .cancelScheduledValues(endTime)
762
762
  .linearRampToValueAtTime(0, stopTime);
763
763
  note.ending = true;
@@ -768,8 +768,8 @@ export class MidyGMLite {
768
768
  note.bufferSource.onended = () => {
769
769
  scheduledNotes[index] = null;
770
770
  note.bufferSource.disconnect();
771
- note.volumeNode.disconnect();
772
771
  note.filterNode.disconnect();
772
+ note.volumeEnvelopeNode.disconnect();
773
773
  if (note.modulationDepth) {
774
774
  note.volumeDepth.disconnect();
775
775
  note.modulationDepth.disconnect();
@@ -862,12 +862,12 @@ export class MidyGMLite {
862
862
  setModLfoToPitch(channel, note) {
863
863
  const now = this.audioContext.currentTime;
864
864
  const modLfoToPitch = note.voiceParams.modLfoToPitch;
865
- const modulationDepth = Math.abs(modLfoToPitch) +
865
+ const baseDepth = Math.abs(modLfoToPitch) +
866
866
  channel.state.modulationDepth;
867
- const modulationDepthSign = (0 < modLfoToPitch) ? 1 : -1;
867
+ const modulationDepth = baseDepth * Math.sign(modLfoToPitch);
868
868
  note.modulationDepth.gain
869
869
  .cancelScheduledValues(now)
870
- .setValueAtTime(modulationDepth * modulationDepthSign, now);
870
+ .setValueAtTime(modulationDepth, now);
871
871
  }
872
872
  setModLfoToFilterFc(note) {
873
873
  const now = this.audioContext.currentTime;
@@ -879,11 +879,11 @@ export class MidyGMLite {
879
879
  setModLfoToVolume(note) {
880
880
  const now = this.audioContext.currentTime;
881
881
  const modLfoToVolume = note.voiceParams.modLfoToVolume;
882
- const volumeDepth = this.cbToRatio(Math.abs(modLfoToVolume)) - 1;
883
- const volumeDepthSign = (0 < modLfoToVolume) ? 1 : -1;
882
+ const baseDepth = this.cbToRatio(Math.abs(modLfoToVolume)) - 1;
883
+ const volumeDepth = baseDepth * Math.sign(modLfoToVolume);
884
884
  note.volumeDepth.gain
885
885
  .cancelScheduledValues(now)
886
- .setValueAtTime(volumeDepth * volumeDepthSign, now);
886
+ .setValueAtTime(volumeDepth, now);
887
887
  }
888
888
  setDelayModLFO(note) {
889
889
  const now = this.audioContext.currentTime;
@@ -913,7 +913,7 @@ export class MidyGMLite {
913
913
  if (0 < channel.state.modulationDepth)
914
914
  this.setModLfoToFilterFc(note);
915
915
  },
916
- modLfoToVolume: (channel, note) => {
916
+ modLfoToVolume: (channel, note, _prevValue) => {
917
917
  if (0 < channel.state.modulationDepth)
918
918
  this.setModLfoToVolume(note);
919
919
  },
@@ -999,6 +999,8 @@ export class MidyGMLite {
999
999
  const handler = this.controlChangeHandlers[controllerType];
1000
1000
  if (handler) {
1001
1001
  handler.call(this, channelNumber, value);
1002
+ const channel = this.channels[channelNumber];
1003
+ this.applyVoiceParams(channel, controller + 128);
1002
1004
  }
1003
1005
  else {
1004
1006
  console.warn(`Unsupported Control change: controllerType=${controllerType} value=${value}`);
@@ -1006,13 +1008,14 @@ export class MidyGMLite {
1006
1008
  }
1007
1009
  updateModulation(channel) {
1008
1010
  const now = this.audioContext.currentTime;
1011
+ const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1009
1012
  channel.scheduledNotes.forEach((noteList) => {
1010
1013
  for (let i = 0; i < noteList.length; i++) {
1011
1014
  const note = noteList[i];
1012
1015
  if (!note)
1013
1016
  continue;
1014
1017
  if (note.modulationDepth) {
1015
- note.modulationDepth.gain.setValueAtTime(channel.state.modulationDepth, now);
1018
+ note.modulationDepth.gain.setValueAtTime(depth, now);
1016
1019
  }
1017
1020
  else {
1018
1021
  this.setPitchEnvelope(note);
@@ -1023,8 +1026,7 @@ export class MidyGMLite {
1023
1026
  }
1024
1027
  setModulationDepth(channelNumber, modulation) {
1025
1028
  const channel = this.channels[channelNumber];
1026
- channel.state.modulationDepth = (modulation / 127) *
1027
- channel.modulationDepthRange;
1029
+ channel.state.modulationDepth = modulation / 127;
1028
1030
  this.updateModulation(channel);
1029
1031
  }
1030
1032
  setVolume(channelNumber, volume) {
@@ -1200,8 +1202,8 @@ export class MidyGMLite {
1200
1202
  }
1201
1203
  else {
1202
1204
  const now = this.audioContext.currentTime;
1203
- this.masterGain.gain.cancelScheduledValues(now);
1204
- this.masterGain.gain.setValueAtTime(volume * volume, now);
1205
+ this.masterVolume.gain.cancelScheduledValues(now);
1206
+ this.masterVolume.gain.setValueAtTime(volume * volume, now);
1205
1207
  }
1206
1208
  }
1207
1209
  handleExclusiveMessage(data) {
package/esm/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;
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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"}