@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.
@@ -55,7 +55,7 @@ export class MidyGMLite {
55
55
  addSoundFont(soundFont: any): void;
56
56
  loadSoundFont(input: any): Promise<void>;
57
57
  loadMIDI(input: any): Promise<void>;
58
- setChannelAudioNodes(audioContext: any): {
58
+ createChannelAudioNodes(audioContext: any): {
59
59
  gainL: any;
60
60
  gainR: any;
61
61
  merger: any;
@@ -83,7 +83,7 @@ export class MidyGMLite {
83
83
  seekTo(second: any): void;
84
84
  calcTotalTime(): number;
85
85
  currentTime(): number;
86
- processScheduledNotes(channel: any, callback: any): void;
86
+ processScheduledNotes(channel: any, scheduleTime: any, callback: any): void;
87
87
  processActiveNotes(channel: any, scheduleTime: any, callback: any): void;
88
88
  cbToRatio(cb: any): number;
89
89
  rateToCent(rate: any): number;
@@ -101,7 +101,7 @@ export class MidyGMLite {
101
101
  createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
102
102
  handleExclusiveClass(note: any, channelNumber: any, startTime: any): void;
103
103
  handleDrumExclusiveClass(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-GMLite.d.ts","sourceRoot":"","sources":["../src/midy-GMLite.js"],"names":[],"mappings":"AAoGA;IA2BE;;;;;;;;;MASE;IAEF,+BAcC;IAnDD,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;IACrC,+BAEE;IAcA,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,0EAUC;IAED,+EAkDC;IAED,mCAOC;IAED,0BAiEC;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,wCAIC;IAED,2DAIC;IAED,+DAIC;IAED,sDAeC;IAED,qDAoBC;IAED,6CAIC;IAED,sDAsBC;IAED,kEAoBC;IAED,+GA0BC;IAED,gHA6CC;IAED,0EAiBC;IAED,8EAiBC;IAED,qHAyCC;IAED,6FASC;IAED,gCASC;IAED,iEAoBC;IAED,qGAgBC;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,qCAeC;IAED,kGAWC;IAED,wDAUC;IAED,iFAKC;IAED,oEAKC;IAED;;;MAMC;IAED,8DAKC;IAED,4EAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,uDAYC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,gFAGC;IAED,yCAqBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAWC;IAED,4EAaC;IAED,4DAGC;IAED,sDASC;IAED,gDAYC;IAGD,6DAgBC;CACF;AA19CD;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-GMLite.d.ts","sourceRoot":"","sources":["../src/midy-GMLite.js"],"names":[],"mappings":"AA0GA;IA2BE;;;;;;;;;MASE;IAEF,+BAcC;IAnDD,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;IACrC,+BAEE;IAcA,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,0EAUC;IAED,+EAkDC;IAED,mCAOC;IAED,0BAiEC;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,wCAIC;IAED,2DAIC;IAED,+DAIC;IAED,sDAeC;IAED,qDAoBC;IAED,6CAIC;IAED,sDAsBC;IAED,kEAoBC;IAED,+GA0BC;IAED,gHA6CC;IAED,0EAiBC;IAED,8EAiBC;IAED,kGAuCC;IAED,6FASC;IAED,gCASC;IAED,iEAoBC;IAED,qGAgBC;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,qCAeC;IAED,kGAWC;IAED,wDAUC;IAED,iFAKC;IAED,oEAKC;IAED;;;MAMC;IAED,8DAKC;IAED,4EAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,uDAYC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,gFAGC;IAED,yCAqBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAWC;IAED,4EAaC;IAED,4DAGC;IAED,sDASC;IAED,gDAYC;IAGD,6DAgBC;CACF;AAp9CD;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"}
@@ -86,13 +86,11 @@ const defaultControllerState = {
86
86
  pitchWheel: { type: 14, defaultValue: 8192 / 16383 },
87
87
  pitchWheelSensitivity: { type: 16, defaultValue: 2 / 128 },
88
88
  link: { type: 127, defaultValue: 0 },
89
- // bankMSB: { type: 128 + 0, defaultValue: 121, },
90
89
  modulationDepth: { type: 128 + 1, defaultValue: 0 },
91
90
  // dataMSB: { type: 128 + 6, defaultValue: 0, },
92
91
  volume: { type: 128 + 7, defaultValue: 100 / 127 },
93
92
  pan: { type: 128 + 10, defaultValue: 64 / 127 },
94
93
  expression: { type: 128 + 11, defaultValue: 1 },
95
- // bankLSB: { type: 128 + 32, defaultValue: 0, },
96
94
  // dataLSB: { type: 128 + 38, defaultValue: 0, },
97
95
  sustainPedal: { type: 128 + 64, defaultValue: 0 },
98
96
  // rpnLSB: { type: 128 + 100, defaultValue: 127 },
@@ -121,6 +119,16 @@ class ControllerState {
121
119
  }
122
120
  }
123
121
  }
122
+ const volumeEnvelopeKeys = [
123
+ "volDelay",
124
+ "volAttack",
125
+ "volHold",
126
+ "volDecay",
127
+ "volSustain",
128
+ "volRelease",
129
+ "initialAttenuation",
130
+ ];
131
+ const volumeEnvelopeKeySet = new Set(volumeEnvelopeKeys);
124
132
  const filterEnvelopeKeys = [
125
133
  "modEnvToPitch",
126
134
  "initialFilterFc",
@@ -130,20 +138,18 @@ const filterEnvelopeKeys = [
130
138
  "modHold",
131
139
  "modDecay",
132
140
  "modSustain",
133
- "modRelease",
134
- "playbackRate",
135
141
  ];
136
142
  const filterEnvelopeKeySet = new Set(filterEnvelopeKeys);
137
- const volumeEnvelopeKeys = [
138
- "volDelay",
139
- "volAttack",
140
- "volHold",
141
- "volDecay",
142
- "volSustain",
143
- "volRelease",
144
- "initialAttenuation",
143
+ const pitchEnvelopeKeys = [
144
+ "modEnvToPitch",
145
+ "modDelay",
146
+ "modAttack",
147
+ "modHold",
148
+ "modDecay",
149
+ "modSustain",
150
+ "playbackRate",
145
151
  ];
146
- const volumeEnvelopeKeySet = new Set(volumeEnvelopeKeys);
152
+ const pitchEnvelopeKeySet = new Set(pitchEnvelopeKeys);
147
153
  class MidyGMLite {
148
154
  constructor(audioContext) {
149
155
  Object.defineProperty(this, "mode", {
@@ -354,7 +360,7 @@ class MidyGMLite {
354
360
  this.timeline = midiData.timeline;
355
361
  this.totalTime = this.calcTotalTime();
356
362
  }
357
- setChannelAudioNodes(audioContext) {
363
+ createChannelAudioNodes(audioContext) {
358
364
  const { gainLeft, gainRight } = this.panToGain(defaultControllerState.pan.defaultValue);
359
365
  const gainL = new GainNode(audioContext, { gain: gainLeft });
360
366
  const gainR = new GainNode(audioContext, { gain: gainRight });
@@ -375,7 +381,7 @@ class MidyGMLite {
375
381
  isDrum: false,
376
382
  state: new ControllerState(),
377
383
  ...this.constructor.channelSettings,
378
- ...this.setChannelAudioNodes(audioContext),
384
+ ...this.createChannelAudioNodes(audioContext),
379
385
  scheduledNotes: [],
380
386
  sustainNotes: [],
381
387
  };
@@ -618,7 +624,7 @@ class MidyGMLite {
618
624
  stopChannelNotes(channelNumber, velocity, force, scheduleTime) {
619
625
  const channel = this.channels[channelNumber];
620
626
  const promises = [];
621
- this.processScheduledNotes(channel, (note) => {
627
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
622
628
  const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force);
623
629
  this.notePromises.push(promise);
624
630
  promises.push(promise);
@@ -677,7 +683,7 @@ class MidyGMLite {
677
683
  const now = this.audioContext.currentTime;
678
684
  return this.resumeTime + now - this.startTime - this.startDelay;
679
685
  }
680
- processScheduledNotes(channel, callback) {
686
+ processScheduledNotes(channel, scheduleTime, callback) {
681
687
  const scheduledNotes = channel.scheduledNotes;
682
688
  for (let i = 0; i < scheduledNotes.length; i++) {
683
689
  const note = scheduledNotes[i];
@@ -685,6 +691,8 @@ class MidyGMLite {
685
691
  continue;
686
692
  if (note.ending)
687
693
  continue;
694
+ if (note.startTime < scheduleTime)
695
+ continue;
688
696
  callback(note);
689
697
  }
690
698
  }
@@ -697,7 +705,7 @@ class MidyGMLite {
697
705
  if (note.ending)
698
706
  continue;
699
707
  if (scheduleTime < note.startTime)
700
- continue;
708
+ break;
701
709
  callback(note);
702
710
  }
703
711
  }
@@ -719,7 +727,7 @@ class MidyGMLite {
719
727
  return pitchWheel * pitchWheelSensitivity;
720
728
  }
721
729
  updateChannelDetune(channel, scheduleTime) {
722
- this.processScheduledNotes(channel, (note) => {
730
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
723
731
  this.updateDetune(channel, note, scheduleTime);
724
732
  });
725
733
  }
@@ -884,7 +892,7 @@ class MidyGMLite {
884
892
  }
885
893
  this.drumExclusiveClassNotes[index] = note;
886
894
  }
887
- async scheduleNoteOn(channelNumber, noteNumber, velocity, startTime, noteOffEvent) {
895
+ async scheduleNoteOn(channelNumber, noteNumber, velocity, startTime) {
888
896
  const channel = this.channels[channelNumber];
889
897
  const bankNumber = channel.bank;
890
898
  const soundFontIndex = this.soundFontTable[channel.programNumber].get(bankNumber);
@@ -896,7 +904,6 @@ class MidyGMLite {
896
904
  return;
897
905
  const isSF3 = soundFont.parsed.info.version.major === 3;
898
906
  const note = await this.createNote(channel, voice, noteNumber, velocity, startTime, isSF3);
899
- note.noteOffEvent = noteOffEvent;
900
907
  note.volumeEnvelopeNode.connect(channel.gainL);
901
908
  note.volumeEnvelopeNode.connect(channel.gainR);
902
909
  if (0.5 <= channel.state.sustainPedal) {
@@ -1093,11 +1100,12 @@ class MidyGMLite {
1093
1100
  return state;
1094
1101
  }
1095
1102
  applyVoiceParams(channel, controllerType, scheduleTime) {
1096
- this.processScheduledNotes(channel, (note) => {
1103
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
1097
1104
  const controllerState = this.getControllerState(channel, note.noteNumber, note.velocity);
1098
1105
  const voiceParams = note.voice.getParams(controllerType, controllerState);
1099
- let appliedFilterEnvelope = false;
1100
- let appliedVolumeEnvelope = false;
1106
+ let applyVolumeEnvelope = false;
1107
+ let applyFilterEnvelope = false;
1108
+ let applyPitchEnvelope = false;
1101
1109
  for (const [key, value] of Object.entries(voiceParams)) {
1102
1110
  const prevValue = note.voiceParams[key];
1103
1111
  if (value === prevValue)
@@ -1106,32 +1114,21 @@ class MidyGMLite {
1106
1114
  if (key in this.voiceParamsHandlers) {
1107
1115
  this.voiceParamsHandlers[key](channel, note, prevValue, scheduleTime);
1108
1116
  }
1109
- else if (filterEnvelopeKeySet.has(key)) {
1110
- if (appliedFilterEnvelope)
1111
- continue;
1112
- appliedFilterEnvelope = true;
1113
- const noteVoiceParams = note.voiceParams;
1114
- for (let i = 0; i < filterEnvelopeKeys.length; i++) {
1115
- const key = filterEnvelopeKeys[i];
1116
- if (key in voiceParams)
1117
- noteVoiceParams[key] = voiceParams[key];
1118
- }
1119
- this.setFilterEnvelope(note, scheduleTime);
1120
- this.setPitchEnvelope(note, scheduleTime);
1121
- }
1122
- else if (volumeEnvelopeKeySet.has(key)) {
1123
- if (appliedVolumeEnvelope)
1124
- continue;
1125
- appliedVolumeEnvelope = true;
1126
- const noteVoiceParams = note.voiceParams;
1127
- for (let i = 0; i < volumeEnvelopeKeys.length; i++) {
1128
- const key = volumeEnvelopeKeys[i];
1129
- if (key in voiceParams)
1130
- noteVoiceParams[key] = voiceParams[key];
1131
- }
1132
- this.setVolumeEnvelope(note, scheduleTime);
1117
+ else {
1118
+ if (volumeEnvelopeKeySet.has(key))
1119
+ applyVolumeEnvelope = true;
1120
+ if (filterEnvelopeKeySet.has(key))
1121
+ applyFilterEnvelope = true;
1122
+ if (pitchEnvelopeKeySet.has(key))
1123
+ applyPitchEnvelope = true;
1133
1124
  }
1134
1125
  }
1126
+ if (applyVolumeEnvelope)
1127
+ this.setVolumeEnvelope(note, scheduleTime);
1128
+ if (applyFilterEnvelope)
1129
+ this.setFilterEnvelope(note, scheduleTime);
1130
+ if (applyPitchEnvelope)
1131
+ this.setPitchEnvelope(note, scheduleTime);
1135
1132
  });
1136
1133
  }
1137
1134
  createControlChangeHandlers() {
@@ -1163,7 +1160,7 @@ class MidyGMLite {
1163
1160
  }
1164
1161
  updateModulation(channel, scheduleTime) {
1165
1162
  const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1166
- this.processScheduledNotes(channel, (note) => {
1163
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
1167
1164
  if (note.modulationDepth) {
1168
1165
  note.modulationDepth.gain.setValueAtTime(depth, scheduleTime);
1169
1166
  }
@@ -1224,7 +1221,7 @@ class MidyGMLite {
1224
1221
  scheduleTime ??= this.audioContext.currentTime;
1225
1222
  channel.state.sustainPedal = value / 127;
1226
1223
  if (64 <= value) {
1227
- this.processScheduledNotes(channel, (note) => {
1224
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
1228
1225
  channel.sustainNotes.push(note);
1229
1226
  });
1230
1227
  }
package/script/midy.d.ts CHANGED
@@ -14,16 +14,12 @@ export class Midy {
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 Midy {
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 Midy {
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 Midy {
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 Midy {
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 Midy {
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,7 +169,7 @@ export class Midy {
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
- 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>;
185
173
  noteOn(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): Promise<void>;
186
174
  disconnectNote(note: any): void;
187
175
  releaseNote(channel: any, note: any, endTime: any): Promise<any>;
@@ -217,7 +205,7 @@ export class Midy {
217
205
  delayVibLFO: (channel: any, note: any, prevValue: any, scheduleTime: any) => void;
218
206
  freqVibLFO: (channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
219
207
  };
220
- getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array<any>;
208
+ getControllerState(channel: any, noteNumber: any, velocity: any, polyphonicKeyPressure: any): Float32Array<any>;
221
209
  applyVoiceParams(channel: any, controllerType: any, scheduleTime: any): void;
222
210
  createControlChangeHandlers(): any[];
223
211
  handleControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
@@ -226,18 +214,17 @@ export class Midy {
226
214
  setModulationDepth(channelNumber: any, modulation: any, scheduleTime: any): void;
227
215
  updatePortamento(channel: any, scheduleTime: any): void;
228
216
  setPortamentoTime(channelNumber: any, portamentoTime: any, scheduleTime: any): void;
229
- setKeyBasedVolume(channel: any, scheduleTime: any): void;
230
217
  setVolume(channelNumber: any, volume: any, scheduleTime: any): void;
231
218
  panToGain(pan: any): {
232
219
  gainLeft: number;
233
220
  gainRight: number;
234
221
  };
235
- setKeyBasedPan(channel: any, scheduleTime: any): void;
236
222
  setPan(channelNumber: any, pan: any, scheduleTime: any): void;
237
223
  setExpression(channelNumber: any, expression: any, scheduleTime: any): void;
238
224
  setBankLSB(channelNumber: any, lsb: any): void;
239
225
  dataEntryLSB(channelNumber: any, value: any, scheduleTime: any): void;
240
226
  updateChannelVolume(channel: any, scheduleTime: any): void;
227
+ updateKeyBasedVolume(channel: any, scheduleTime: any): void;
241
228
  setSustainPedal(channelNumber: any, value: any, scheduleTime: any): void;
242
229
  setPortamento(channelNumber: any, value: any, scheduleTime: any): void;
243
230
  setSostenutoPedal(channelNumber: any, value: any, scheduleTime: any): void;
@@ -316,9 +303,8 @@ export class Midy {
316
303
  getLFOAmplitudeDepth(channel: any, note: any): number;
317
304
  setControllerParameters(channel: any, note: any, table: any): void;
318
305
  handlePressureSysEx(data: any, tableName: any): void;
319
- initControlTable(): any;
320
- resetControlTable(table: any): any;
321
- applyControlTable(channel: any, controllerType: any): void;
306
+ initControlTable(): Int8Array<ArrayBuffer>;
307
+ applyControlTable(channel: any, controllerType: any, scheduleTime: any): void;
322
308
  handleControlChangeSysEx(data: any): void;
323
309
  getKeyBasedInstrumentControlValue(channel: any, keyNumber: any, controllerType: any): any;
324
310
  handleKeyBasedInstrumentControlSysEx(data: any, scheduleTime: any): void;
@@ -334,9 +320,6 @@ declare class Note {
334
320
  filterDepth: any;
335
321
  volumeEnvelopeNode: any;
336
322
  volumeDepth: any;
337
- volumeNode: any;
338
- gainL: any;
339
- gainR: any;
340
323
  modulationLFO: any;
341
324
  modulationDepth: any;
342
325
  vibratoLFO: 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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"}