@marmooo/midy 0.3.3 → 0.3.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.3.3",
3
+ "version": "0.3.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",
@@ -56,7 +56,7 @@ export class MidyGM1 {
56
56
  addSoundFont(soundFont: any): void;
57
57
  loadSoundFont(input: any): Promise<void>;
58
58
  loadMIDI(input: any): Promise<void>;
59
- setChannelAudioNodes(audioContext: any): {
59
+ createChannelAudioNodes(audioContext: any): {
60
60
  gainL: any;
61
61
  gainR: any;
62
62
  merger: any;
@@ -84,7 +84,7 @@ export class MidyGM1 {
84
84
  seekTo(second: any): void;
85
85
  calcTotalTime(): number;
86
86
  currentTime(): number;
87
- processScheduledNotes(channel: any, callback: any): void;
87
+ processScheduledNotes(channel: any, scheduleTime: any, callback: any): void;
88
88
  processActiveNotes(channel: any, scheduleTime: any, callback: any): void;
89
89
  cbToRatio(cb: any): number;
90
90
  rateToCent(rate: any): number;
@@ -101,7 +101,7 @@ export class MidyGM1 {
101
101
  getAudioBuffer(programNumber: any, noteNumber: any, velocity: any, voiceParams: any, isSF3: any): Promise<any>;
102
102
  createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
103
103
  handleExclusiveClass(note: any, channelNumber: any, startTime: any): void;
104
- scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any, noteOffEvent: any): Promise<void>;
104
+ scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
105
105
  noteOn(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): Promise<void>;
106
106
  disconnectNote(note: any): void;
107
107
  releaseNote(channel: any, note: any, endTime: any): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAsFA;IAwBE;;;;;;;;;;;MAWE;IAEF,+BAcC;IAlDD,aAAa;IACb,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,kCAA+B;IAC/B,gCAA6B;IAC7B,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,2BAAqC;IAgBnC,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,gBAAiD;IAMnD,4BAMC;IAED,mCAWC;IAED,yCAcC;IAED,oCAiBC;IAED;;;;MAeC;IAED,yCAaC;IAED,6DA2BC;IAED,4DASC;IAED,+EAkDC;IAED,mCAOC;IAED,0BA8DC;IAED,uDAEC;IAED,wDAEC;IAED,6EAEC;IAED;;;MA6EC;IAED,kGAeC;IAED,mGAgBC;IAED,wEAMC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,yDAQC;IAED,yEASC;IAED,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,2DAIC;IAED,+DAIC;IAED,sDAeC;IAED,qDAoBC;IAED,6CAIC;IAED,sDAsBC;IAED,kEAoBC;IAED,+GA0BC;IAED,gHAyCC;IAED,0EAiBC;IAED,qHAwCC;IAED,6FASC;IAED,gCASC;IAED,iEAoBC;IAED,qGAaC;IAED,sDASC;IAED,qFASC;IAED,sFAeC;IAED,oGA2BC;IAED,sFAGC;IAED,wFAGC;IAED,sEAUC;IAED,mEAQC;IAED,wDAKC;IAED,sDAOC;IAED,mDAMC;IAED,kDAKC;IAED;;;;;;;;;;;MA2BC;IAED,oFAMC;IAED,6EA2CC;IAED,qCAcC;IAED,kGAWC;IAED,wDAUC;IAED,iFAKC;IAED,oEAKC;IAED;;;MAMC;IAED,8DAKC;IAED,4EAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,2DAMC;IAED,uDAkBC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,iEAKC;IAED,uEAQC;IAED,mEAKC;IAED,yEAQC;IAED,gFAGC;IAED,yCAqBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAWC;IAED,4EAaC;IAED,4DAGC;IAED,sDASC;IAED,gDAYC;IAGD,6DAgBC;CACF;AA79CD;IAWE,0FAMC;IAhBD,cAAW;IACX,gBAAe;IACf,kBAAa;IACb,gBAAW;IACX,iBAAY;IACZ,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAGd,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":"AA4FA;IAwBE;;;;;;;;;;;MAWE;IAEF,+BAcC;IAlDD,aAAa;IACb,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,kCAA+B;IAC/B,gCAA6B;IAC7B,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,2BAAqC;IAgBnC,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,gBAAiD;IAMnD,4BAMC;IAED,mCAWC;IAED,yCAcC;IAED,oCAiBC;IAED;;;;MAeC;IAED,yCAaC;IAED,6DA2BC;IAED,4DASC;IAED,+EAkDC;IAED,mCAOC;IAED,0BA8DC;IAED,uDAEC;IAED,wDAEC;IAED,6EAEC;IAED;;;MA6EC;IAED,kGAeC;IAED,mGAgBC;IAED,wEAMC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,4EASC;IAED,yEASC;IAED,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,2DAIC;IAED,+DAIC;IAED,sDAeC;IAED,qDAoBC;IAED,6CAIC;IAED,sDAsBC;IAED,kEAoBC;IAED,+GA0BC;IAED,gHAyCC;IAED,0EAiBC;IAED,kGAsCC;IAED,6FASC;IAED,gCASC;IAED,iEAoBC;IAED,qGAaC;IAED,sDASC;IAED,qFASC;IAED,sFAeC;IAED,oGA2BC;IAED,sFAGC;IAED,wFAGC;IAED,sEAUC;IAED,mEAQC;IAED,wDAKC;IAED,sDAOC;IAED,mDAMC;IAED,kDAKC;IAED;;;;;;;;;;;MA2BC;IAED,oFAMC;IAED,6EAgCC;IAED,qCAcC;IAED,kGAWC;IAED,wDAUC;IAED,iFAKC;IAED,oEAKC;IAED;;;MAMC;IAED,8DAKC;IAED,4EAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,2DAMC;IAED,uDAkBC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,iEAKC;IAED,uEAQC;IAED,mEAKC;IAED,yEAQC;IAED,gFAGC;IAED,yCAqBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAWC;IAED,4EAaC;IAED,4DAGC;IAED,sDASC;IAED,gDAYC;IAGD,6DAgBC;CACF;AAv9CD;IAWE,0FAMC;IAhBD,cAAW;IACX,gBAAe;IACf,kBAAa;IACb,gBAAW;IACX,iBAAY;IACZ,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAGd,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}
@@ -73,13 +73,11 @@ const defaultControllerState = {
73
73
  pitchWheel: { type: 14, defaultValue: 8192 / 16383 },
74
74
  pitchWheelSensitivity: { type: 16, defaultValue: 2 / 128 },
75
75
  link: { type: 127, defaultValue: 0 },
76
- // bankMSB: { type: 128 + 0, defaultValue: 121, },
77
76
  modulationDepth: { type: 128 + 1, defaultValue: 0 },
78
77
  // dataMSB: { type: 128 + 6, defaultValue: 0, },
79
78
  volume: { type: 128 + 7, defaultValue: 100 / 127 },
80
79
  pan: { type: 128 + 10, defaultValue: 64 / 127 },
81
80
  expression: { type: 128 + 11, defaultValue: 1 },
82
- // bankLSB: { type: 128 + 32, defaultValue: 0, },
83
81
  // dataLSB: { type: 128 + 38, defaultValue: 0, },
84
82
  sustainPedal: { type: 128 + 64, defaultValue: 0 },
85
83
  // rpnLSB: { type: 128 + 100, defaultValue: 127 },
@@ -108,6 +106,16 @@ class ControllerState {
108
106
  }
109
107
  }
110
108
  }
109
+ const volumeEnvelopeKeys = [
110
+ "volDelay",
111
+ "volAttack",
112
+ "volHold",
113
+ "volDecay",
114
+ "volSustain",
115
+ "volRelease",
116
+ "initialAttenuation",
117
+ ];
118
+ const volumeEnvelopeKeySet = new Set(volumeEnvelopeKeys);
111
119
  const filterEnvelopeKeys = [
112
120
  "modEnvToPitch",
113
121
  "initialFilterFc",
@@ -117,20 +125,18 @@ const filterEnvelopeKeys = [
117
125
  "modHold",
118
126
  "modDecay",
119
127
  "modSustain",
120
- "modRelease",
121
- "playbackRate",
122
128
  ];
123
129
  const filterEnvelopeKeySet = new Set(filterEnvelopeKeys);
124
- const volumeEnvelopeKeys = [
125
- "volDelay",
126
- "volAttack",
127
- "volHold",
128
- "volDecay",
129
- "volSustain",
130
- "volRelease",
131
- "initialAttenuation",
130
+ const pitchEnvelopeKeys = [
131
+ "modEnvToPitch",
132
+ "modDelay",
133
+ "modAttack",
134
+ "modHold",
135
+ "modDecay",
136
+ "modSustain",
137
+ "playbackRate",
132
138
  ];
133
- const volumeEnvelopeKeySet = new Set(volumeEnvelopeKeys);
139
+ const pitchEnvelopeKeySet = new Set(pitchEnvelopeKeys);
134
140
  class MidyGM1 {
135
141
  constructor(audioContext) {
136
142
  Object.defineProperty(this, "mode", {
@@ -335,7 +341,7 @@ class MidyGM1 {
335
341
  this.timeline = midiData.timeline;
336
342
  this.totalTime = this.calcTotalTime();
337
343
  }
338
- setChannelAudioNodes(audioContext) {
344
+ createChannelAudioNodes(audioContext) {
339
345
  const { gainLeft, gainRight } = this.panToGain(defaultControllerState.pan.defaultValue);
340
346
  const gainL = new GainNode(audioContext, { gain: gainLeft });
341
347
  const gainR = new GainNode(audioContext, { gain: gainRight });
@@ -356,7 +362,7 @@ class MidyGM1 {
356
362
  isDrum: false,
357
363
  state: new ControllerState(),
358
364
  ...this.constructor.channelSettings,
359
- ...this.setChannelAudioNodes(audioContext),
365
+ ...this.createChannelAudioNodes(audioContext),
360
366
  scheduledNotes: [],
361
367
  sustainNotes: [],
362
368
  };
@@ -594,7 +600,7 @@ class MidyGM1 {
594
600
  stopChannelNotes(channelNumber, velocity, force, scheduleTime) {
595
601
  const channel = this.channels[channelNumber];
596
602
  const promises = [];
597
- this.processScheduledNotes(channel, (note) => {
603
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
598
604
  const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force);
599
605
  this.notePromises.push(promise);
600
606
  promises.push(promise);
@@ -653,7 +659,7 @@ class MidyGM1 {
653
659
  const now = this.audioContext.currentTime;
654
660
  return this.resumeTime + now - this.startTime - this.startDelay;
655
661
  }
656
- processScheduledNotes(channel, callback) {
662
+ processScheduledNotes(channel, scheduleTime, callback) {
657
663
  const scheduledNotes = channel.scheduledNotes;
658
664
  for (let i = 0; i < scheduledNotes.length; i++) {
659
665
  const note = scheduledNotes[i];
@@ -661,6 +667,8 @@ class MidyGM1 {
661
667
  continue;
662
668
  if (note.ending)
663
669
  continue;
670
+ if (note.startTime < scheduleTime)
671
+ continue;
664
672
  callback(note);
665
673
  }
666
674
  }
@@ -673,7 +681,7 @@ class MidyGM1 {
673
681
  if (note.ending)
674
682
  continue;
675
683
  if (scheduleTime < note.startTime)
676
- continue;
684
+ break;
677
685
  callback(note);
678
686
  }
679
687
  }
@@ -697,7 +705,7 @@ class MidyGM1 {
697
705
  return tuning + pitch;
698
706
  }
699
707
  updateChannelDetune(channel, scheduleTime) {
700
- this.processScheduledNotes(channel, (note) => {
708
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
701
709
  this.updateDetune(channel, note, scheduleTime);
702
710
  });
703
711
  }
@@ -847,7 +855,7 @@ class MidyGM1 {
847
855
  }
848
856
  this.exclusiveClassNotes[exclusiveClass] = [note, channelNumber];
849
857
  }
850
- async scheduleNoteOn(channelNumber, noteNumber, velocity, startTime, noteOffEvent) {
858
+ async scheduleNoteOn(channelNumber, noteNumber, velocity, startTime) {
851
859
  const channel = this.channels[channelNumber];
852
860
  const bankNumber = channel.bank;
853
861
  const soundFontIndex = this.soundFontTable[channel.programNumber].get(bankNumber);
@@ -859,7 +867,6 @@ class MidyGM1 {
859
867
  return;
860
868
  const isSF3 = soundFont.parsed.info.version.major === 3;
861
869
  const note = await this.createNote(channel, voice, noteNumber, velocity, startTime, isSF3);
862
- note.noteOffEvent = noteOffEvent;
863
870
  note.volumeEnvelopeNode.connect(channel.gainL);
864
871
  note.volumeEnvelopeNode.connect(channel.gainR);
865
872
  if (0.5 <= channel.state.sustainPedal) {
@@ -1051,11 +1058,12 @@ class MidyGM1 {
1051
1058
  return state;
1052
1059
  }
1053
1060
  applyVoiceParams(channel, controllerType, scheduleTime) {
1054
- this.processScheduledNotes(channel, (note) => {
1061
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
1055
1062
  const controllerState = this.getControllerState(channel, note.noteNumber, note.velocity);
1056
1063
  const voiceParams = note.voice.getParams(controllerType, controllerState);
1057
- let appliedFilterEnvelope = false;
1058
- let appliedVolumeEnvelope = false;
1064
+ let applyVolumeEnvelope = false;
1065
+ let applyFilterEnvelope = false;
1066
+ let applyPitchEnvelope = false;
1059
1067
  for (const [key, value] of Object.entries(voiceParams)) {
1060
1068
  const prevValue = note.voiceParams[key];
1061
1069
  if (value === prevValue)
@@ -1064,32 +1072,21 @@ class MidyGM1 {
1064
1072
  if (key in this.voiceParamsHandlers) {
1065
1073
  this.voiceParamsHandlers[key](channel, note, prevValue, scheduleTime);
1066
1074
  }
1067
- else if (filterEnvelopeKeySet.has(key)) {
1068
- if (appliedFilterEnvelope)
1069
- continue;
1070
- appliedFilterEnvelope = true;
1071
- const noteVoiceParams = note.voiceParams;
1072
- for (let i = 0; i < filterEnvelopeKeys.length; i++) {
1073
- const key = filterEnvelopeKeys[i];
1074
- if (key in voiceParams)
1075
- noteVoiceParams[key] = voiceParams[key];
1076
- }
1077
- this.setFilterEnvelope(note, scheduleTime);
1078
- this.setPitchEnvelope(note, scheduleTime);
1079
- }
1080
- else if (volumeEnvelopeKeySet.has(key)) {
1081
- if (appliedVolumeEnvelope)
1082
- continue;
1083
- appliedVolumeEnvelope = true;
1084
- const noteVoiceParams = note.voiceParams;
1085
- for (let i = 0; i < volumeEnvelopeKeys.length; i++) {
1086
- const key = volumeEnvelopeKeys[i];
1087
- if (key in voiceParams)
1088
- noteVoiceParams[key] = voiceParams[key];
1089
- }
1090
- this.setVolumeEnvelope(note, scheduleTime);
1075
+ else {
1076
+ if (volumeEnvelopeKeySet.has(key))
1077
+ applyVolumeEnvelope = true;
1078
+ if (filterEnvelopeKeySet.has(key))
1079
+ applyFilterEnvelope = true;
1080
+ if (pitchEnvelopeKeySet.has(key))
1081
+ applyPitchEnvelope = true;
1091
1082
  }
1092
1083
  }
1084
+ if (applyVolumeEnvelope)
1085
+ this.setVolumeEnvelope(note, scheduleTime);
1086
+ if (applyFilterEnvelope)
1087
+ this.setFilterEnvelope(note, scheduleTime);
1088
+ if (applyPitchEnvelope)
1089
+ this.setPitchEnvelope(note, scheduleTime);
1093
1090
  });
1094
1091
  }
1095
1092
  createControlChangeHandlers() {
@@ -1120,7 +1117,7 @@ class MidyGM1 {
1120
1117
  }
1121
1118
  updateModulation(channel, scheduleTime) {
1122
1119
  const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1123
- this.processScheduledNotes(channel, (note) => {
1120
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
1124
1121
  if (note.modulationDepth) {
1125
1122
  note.modulationDepth.gain.setValueAtTime(depth, scheduleTime);
1126
1123
  }
@@ -1181,7 +1178,7 @@ class MidyGM1 {
1181
1178
  scheduleTime ??= this.audioContext.currentTime;
1182
1179
  channel.state.sustainPedal = value / 127;
1183
1180
  if (64 <= value) {
1184
- this.processScheduledNotes(channel, (note) => {
1181
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
1185
1182
  channel.sustainNotes.push(note);
1186
1183
  });
1187
1184
  }
@@ -14,16 +14,12 @@ export class MidyGM2 {
14
14
  fineTuning: number;
15
15
  coarseTuning: number;
16
16
  };
17
- constructor(audioContext: any, options?: {
18
- reverbAlgorithm: (audioContext: any) => {
19
- input: any;
20
- output: any;
21
- };
22
- });
17
+ constructor(audioContext: any);
23
18
  mode: string;
24
19
  masterFineTuning: number;
25
20
  masterCoarseTuning: number;
26
21
  reverb: {
22
+ algorithm: string;
27
23
  time: number;
28
24
  feedback: number;
29
25
  };
@@ -56,19 +52,7 @@ export class MidyGM2 {
56
52
  notePromises: any[];
57
53
  exclusiveClassNotes: any[];
58
54
  drumExclusiveClassNotes: any[];
59
- defaultOptions: {
60
- reverbAlgorithm: (audioContext: any) => {
61
- input: any;
62
- output: any;
63
- };
64
- };
65
55
  audioContext: any;
66
- options: {
67
- reverbAlgorithm: (audioContext: any) => {
68
- input: any;
69
- output: any;
70
- };
71
- };
72
56
  masterVolume: any;
73
57
  scheduler: any;
74
58
  schedulerBuffer: any;
@@ -89,7 +73,7 @@ export class MidyGM2 {
89
73
  reverbEffect: {
90
74
  input: any;
91
75
  output: any;
92
- };
76
+ } | undefined;
93
77
  chorusEffect: {
94
78
  input: any;
95
79
  output: any;
@@ -103,7 +87,7 @@ export class MidyGM2 {
103
87
  addSoundFont(soundFont: any): void;
104
88
  loadSoundFont(input: any): Promise<void>;
105
89
  loadMIDI(input: any): Promise<void>;
106
- setChannelAudioNodes(audioContext: any): {
90
+ createChannelAudioNodes(audioContext: any): {
107
91
  gainL: any;
108
92
  gainR: any;
109
93
  merger: any;
@@ -133,7 +117,7 @@ export class MidyGM2 {
133
117
  seekTo(second: any): void;
134
118
  calcTotalTime(): number;
135
119
  currentTime(): number;
136
- processScheduledNotes(channel: any, callback: any): void;
120
+ processScheduledNotes(channel: any, scheduleTime: any, callback: any): void;
137
121
  processActiveNotes(channel: any, scheduleTime: any, callback: any): void;
138
122
  createConvolutionReverbImpulse(audioContext: any, decay: any, preDecay: any): any;
139
123
  createConvolutionReverb(audioContext: any, impulse: any): {
@@ -148,6 +132,10 @@ export class MidyGM2 {
148
132
  input: any;
149
133
  output: any;
150
134
  };
135
+ createReverbEffect(audioContext: any): {
136
+ input: any;
137
+ output: any;
138
+ } | undefined;
151
139
  createChorusEffect(audioContext: any): {
152
140
  input: any;
153
141
  output: any;
@@ -181,8 +169,7 @@ export class MidyGM2 {
181
169
  calcBank(channel: any): any;
182
170
  handleExclusiveClass(note: any, channelNumber: any, startTime: any): void;
183
171
  handleDrumExclusiveClass(note: any, channelNumber: any, startTime: any): void;
184
- isDrumNoteOffException(channel: any, noteNumber: any): boolean;
185
- scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any, noteOffEvent: any): Promise<void>;
172
+ scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
186
173
  noteOn(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): Promise<void>;
187
174
  disconnectNote(note: any): void;
188
175
  releaseNote(channel: any, note: any, endTime: any): Promise<any>;
@@ -226,18 +213,17 @@ export class MidyGM2 {
226
213
  setModulationDepth(channelNumber: any, modulation: any, scheduleTime: any): void;
227
214
  updatePortamento(channel: any, scheduleTime: any): void;
228
215
  setPortamentoTime(channelNumber: any, portamentoTime: any, scheduleTime: any): void;
229
- setKeyBasedVolume(channel: any, scheduleTime: any): void;
230
216
  setVolume(channelNumber: any, volume: any, scheduleTime: any): void;
231
217
  panToGain(pan: any): {
232
218
  gainLeft: number;
233
219
  gainRight: number;
234
220
  };
235
- setKeyBasedPan(channel: any, scheduleTime: any): void;
236
221
  setPan(channelNumber: any, pan: any, scheduleTime: any): void;
237
222
  setExpression(channelNumber: any, expression: any, scheduleTime: any): void;
238
223
  setBankLSB(channelNumber: any, lsb: any): void;
239
224
  dataEntryLSB(channelNumber: any, value: any, scheduleTime: any): void;
240
225
  updateChannelVolume(channel: any, scheduleTime: any): void;
226
+ updateKeyBasedVolume(channel: any, scheduleTime: any): void;
241
227
  setSustainPedal(channelNumber: any, value: any, scheduleTime: any): void;
242
228
  setPortamento(channelNumber: any, value: any, scheduleTime: any): void;
243
229
  setSostenutoPedal(channelNumber: any, value: any, scheduleTime: any): void;
@@ -304,9 +290,8 @@ export class MidyGM2 {
304
290
  getLFOAmplitudeDepth(channel: any): number;
305
291
  setControllerParameters(channel: any, note: any, table: any): void;
306
292
  handlePressureSysEx(data: any, tableName: any): void;
307
- initControlTable(): any;
308
- resetControlTable(table: any): any;
309
- applyControlTable(channel: any, controllerType: any): void;
293
+ initControlTable(): Int8Array<ArrayBuffer>;
294
+ applyControlTable(channel: any, controllerType: any, scheduleTime: any): void;
310
295
  handleControlChangeSysEx(data: any): void;
311
296
  getKeyBasedInstrumentControlValue(channel: any, keyNumber: any, controllerType: any): any;
312
297
  handleKeyBasedInstrumentControlSysEx(data: any, scheduleTime: any): void;
@@ -322,9 +307,6 @@ declare class Note {
322
307
  filterDepth: any;
323
308
  volumeEnvelopeNode: any;
324
309
  volumeDepth: any;
325
- volumeNode: any;
326
- gainL: any;
327
- gainR: any;
328
310
  modulationLFO: any;
329
311
  modulationDepth: any;
330
312
  vibratoLFO: any;
@@ -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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"}