@marmooo/midy 0.1.5 → 0.1.6

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/esm/midy-GM1.d.ts CHANGED
@@ -66,7 +66,6 @@ export class MidyGM1 {
66
66
  createChannels(audioContext: any): any[];
67
67
  createNoteBuffer(instrumentKey: any, isSF3: any): Promise<any>;
68
68
  createNoteBufferNode(instrumentKey: any, isSF3: any): Promise<any>;
69
- convertToFloat32Array(uint8Array: any): Float32Array;
70
69
  scheduleTimelineEvents(t: any, offset: any, queueIndex: any): Promise<any>;
71
70
  getQueueIndex(second: any): number;
72
71
  playNotes(): Promise<any>;
@@ -76,8 +75,8 @@ export class MidyGM1 {
76
75
  instruments: Set<any>;
77
76
  timeline: any[];
78
77
  };
79
- stopChannelNotes(channelNumber: any, velocity: any, stopPedal: any): Promise<void>;
80
- stopNotes(velocity: any, stopPedal: any): Promise<any[]>;
78
+ stopChannelNotes(channelNumber: any, velocity: any, force: any): Promise<void>;
79
+ stopNotes(velocity: any, force: any): Promise<any[]>;
81
80
  start(): Promise<void>;
82
81
  stop(): void;
83
82
  pause(): void;
@@ -99,10 +98,11 @@ export class MidyGM1 {
99
98
  createNote(channel: any, instrumentKey: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
100
99
  scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
101
100
  noteOn(channelNumber: any, noteNumber: any, velocity: any): Promise<void>;
102
- scheduleNoteRelease(channelNumber: any, noteNumber: any, _velocity: any, stopTime: any, stopPedal?: boolean): Promise<any> | undefined;
103
- releaseNote(channelNumber: any, noteNumber: any, velocity: any): Promise<any> | undefined;
101
+ stopNote(stopTime: any, endTime: any, scheduledNotes: any, index: any): Promise<any>;
102
+ scheduleNoteRelease(channelNumber: any, noteNumber: any, _velocity: any, stopTime: any, force: any): void;
103
+ releaseNote(channelNumber: any, noteNumber: any, velocity: any): void;
104
104
  releaseSustainPedal(channelNumber: any, halfVelocity: any): any[];
105
- handleMIDIMessage(statusByte: any, data1: any, data2: any): void | Promise<any>;
105
+ handleMIDIMessage(statusByte: any, data1: any, data2: any): void | Promise<void>;
106
106
  handleProgramChange(channelNumber: any, program: any): void;
107
107
  handlePitchBendMessage(channelNumber: any, lsb: any, msb: any): void;
108
108
  setPitchBend(channelNumber: any, pitchBend: any): void;
@@ -131,7 +131,7 @@ export class MidyGM1 {
131
131
  setPan(channelNumber: any, pan: any): void;
132
132
  setExpression(channelNumber: any, expression: any): void;
133
133
  dataEntryLSB(channelNumber: any, value: any): void;
134
- updateChannelGain(channel: any): void;
134
+ updateChannelVolume(channel: any): void;
135
135
  setSustainPedal(channelNumber: any, value: any): void;
136
136
  limitData(channel: any, minMSB: any, maxMSB: any, minLSB: any, maxLSB: any): void;
137
137
  limitDataMSB(channel: any, minMSB: any, maxMSB: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAwBA;IAmBE;;;;;;;;;;;MAWE;IAEF;;;;;;;MAOE;IAEF,+BAOC;IA/CD,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;IAyBhB,kBAAgC;IAChC,gBAA4C;IAC5C;;;;;;;;;;;;;MAA+D;IAC/D,gBAAiD;IAKnD,4BAMC;IAED,mCASC;IAED,gDAMC;IAED,sCASC;IAED;;;;MAeC;IAED,yCAUC;IAED,+DAyBC;IAED,mEAWC;IAED,qDAOC;IAED,2EA+CC;IAED,mCAOC;IAED,0BA+CC;IAED,uDAEC;IAED,wDAEC;IAED;;;MA8DC;IAED,mFAmBC;IAED,yDAKC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,uDASC;IAED,6CAQC;IAED,2BAEC;IAED,4BAEC;IAED,sCAGC;IAED,mFAGC;IAED,mCAeC;IAED,+CAwBC;IAED,6CAIC;IAED,mCAsBC;IAED,+DA0BC;IAED,wHAmCC;IAED,kGA8BC;IAED,0EAGC;IAED,uIA2CC;IAED,0FAGC;IAED,kEAeC;IAED,gFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,uDAOC;IAED;;;;;;;;;;;;;MAeC;IAED,2EASC;IAED,qCAkBC;IAED,8DAIC;IACD,iDAIC;IAED;;;MAMC;IAED,2CAIC;IAED,yDAIC;IAED,mDAGC;IAED,sCAUC;IAED,sDAMC;IAED,kFAeC;IAED,2DAMC;IAED,oCAkBC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,oDAaC;IAED,kDAKC;IAED,iEAOC;IAED,8CAKC;IAED,yDAMC;IAED,gDAKC;IAED,6DAMC;IAED,+CAEC;IAED,8CAEC;IAED,+CAEC;IAED,4DAgBC;IAED,oBAQC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AAnjCD;IAUE,gFAKC;IAdD,kBAAa;IACb,gBAAW;IACX,gBAAW;IACX,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAChB,gBAAW;IACX,kBAAa;IAGX,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,mBAAkC;CAErC"}
1
+ {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAwBA;IAmBE;;;;;;;;;;;MAWE;IAEF;;;;;;;MAOE;IAEF,+BAOC;IA/CD,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;IAyBhB,kBAAgC;IAChC,gBAA4C;IAC5C;;;;;;;;;;;;;MAA+D;IAC/D,gBAAiD;IAKnD,4BAMC;IAED,mCAWC;IAED,gDAMC;IAED,sCASC;IAED;;;;MAeC;IAED,yCAUC;IAED,+DAuBC;IAED,mEAWC;IAED,2EA+CC;IAED,mCAOC;IAED,0BA+CC;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,4BAEC;IAED,sCAGC;IAED,mFAGC;IAED,mCAeC;IAED,+CAwBC;IAED,6CAIC;IAED,mCAsBC;IAED,+DA0BC;IAED,wHAgCC;IAED,kGA8BC;IAED,0EAGC;IAED,qFA4BC;IAED,0GAsBC;IAED,sEAGC;IAED,kEAeC;IAED,iFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,uDAOC;IAED;;;;;;;;;;;;;MAeC;IAED,2EASC;IAED,qCAkBC;IAED,8DAIC;IACD,iDAIC;IAED;;;MAMC;IAED,2CAIC;IAED,yDAIC;IAED,mDAGC;IAED,wCAUC;IAED,sDAMC;IAED,kFAeC;IAED,2DAMC;IAED,oCAkBC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,oDAaC;IAED,kDAKC;IAED,iEAOC;IAED,8CAKC;IAED,yDAMC;IAED,gDAKC;IAED,6DAMC;IAED,+CAEC;IAED,8CAEC;IAED,+CAEC;IAED,4DAgBC;IAED,oBASC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AAnjCD;IAUE,gFAKC;IAdD,kBAAa;IACb,gBAAW;IACX,gBAAW;IACX,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAChB,gBAAW;IACX,kBAAa;IAGX,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,mBAAkC;CAErC"}
package/esm/midy-GM1.js CHANGED
@@ -177,12 +177,14 @@ export class MidyGM1 {
177
177
  addSoundFont(soundFont) {
178
178
  const index = this.soundFonts.length;
179
179
  this.soundFonts.push(soundFont);
180
- soundFont.parsed.presetHeaders.forEach((presetHeader) => {
180
+ const presetHeaders = soundFont.parsed.presetHeaders;
181
+ for (let i = 0; i < presetHeaders.length; i++) {
182
+ const presetHeader = presetHeaders[i];
181
183
  if (!presetHeader.presetName.startsWith("\u0000")) { // TODO: Only SF3 generated by PolyPone?
182
184
  const banks = this.soundFontTable[presetHeader.preset];
183
185
  banks.set(presetHeader.bank, index);
184
186
  }
185
- });
187
+ }
186
188
  }
187
189
  async loadSoundFont(soundFontUrl) {
188
190
  const response = await fetch(soundFontUrl);
@@ -227,27 +229,25 @@ export class MidyGM1 {
227
229
  return channels;
228
230
  }
229
231
  async createNoteBuffer(instrumentKey, isSF3) {
232
+ const sampleStart = instrumentKey.start;
230
233
  const sampleEnd = instrumentKey.sample.length + instrumentKey.end;
231
234
  if (isSF3) {
232
- const sample = new Uint8Array(instrumentKey.sample.length);
233
- sample.set(instrumentKey.sample);
235
+ const sample = instrumentKey.sample.slice(sampleStart, sampleEnd);
234
236
  const audioBuffer = await this.audioContext.decodeAudioData(sample.buffer);
235
- for (let channel = 0; channel < audioBuffer.numberOfChannels; channel++) {
236
- const channelData = audioBuffer.getChannelData(channel);
237
- channelData.set(channelData.subarray(0, sampleEnd));
238
- }
239
237
  return audioBuffer;
240
238
  }
241
239
  else {
242
- const sample = instrumentKey.sample.subarray(0, sampleEnd);
243
- const floatSample = this.convertToFloat32Array(sample);
240
+ const sample = instrumentKey.sample.subarray(sampleStart, sampleEnd);
244
241
  const audioBuffer = new AudioBuffer({
245
242
  numberOfChannels: 1,
246
243
  length: sample.length,
247
244
  sampleRate: instrumentKey.sampleRate,
248
245
  });
249
246
  const channelData = audioBuffer.getChannelData(0);
250
- channelData.set(floatSample);
247
+ const int16Array = new Int16Array(sample.buffer);
248
+ for (let i = 0; i < int16Array.length; i++) {
249
+ channelData[i] = int16Array[i] / 32768;
250
+ }
251
251
  return audioBuffer;
252
252
  }
253
253
  }
@@ -263,14 +263,6 @@ export class MidyGM1 {
263
263
  }
264
264
  return bufferSource;
265
265
  }
266
- convertToFloat32Array(uint8Array) {
267
- const int16Array = new Int16Array(uint8Array.buffer);
268
- const float32Array = new Float32Array(int16Array.length);
269
- for (let i = 0; i < int16Array.length; i++) {
270
- float32Array[i] = int16Array[i] / 32768;
271
- }
272
- return float32Array;
273
- }
274
266
  async scheduleTimelineEvents(t, offset, queueIndex) {
275
267
  while (queueIndex < this.timeline.length) {
276
268
  const event = this.timeline[queueIndex];
@@ -381,9 +373,11 @@ export class MidyGM1 {
381
373
  bank: this.channels[i].bank,
382
374
  };
383
375
  }
384
- midi.tracks.forEach((track) => {
376
+ for (let i = 0; i < midi.tracks.length; i++) {
377
+ const track = midi.tracks[i];
385
378
  let currentTicks = 0;
386
- track.forEach((event) => {
379
+ for (let j = 0; j < track.length; j++) {
380
+ const event = track[j];
387
381
  currentTicks += event.deltaTime;
388
382
  event.ticks = currentTicks;
389
383
  switch (event.type) {
@@ -403,8 +397,8 @@ export class MidyGM1 {
403
397
  }
404
398
  delete event.deltaTime;
405
399
  timeline.push(event);
406
- });
407
- });
400
+ }
401
+ }
408
402
  const priority = {
409
403
  controller: 0,
410
404
  sysEx: 1,
@@ -429,7 +423,7 @@ export class MidyGM1 {
429
423
  }
430
424
  return { instruments, timeline };
431
425
  }
432
- async stopChannelNotes(channelNumber, velocity, stopPedal) {
426
+ async stopChannelNotes(channelNumber, velocity, force) {
433
427
  const now = this.audioContext.currentTime;
434
428
  const channel = this.channels[channelNumber];
435
429
  channel.scheduledNotes.forEach((noteList) => {
@@ -437,16 +431,16 @@ export class MidyGM1 {
437
431
  const note = noteList[i];
438
432
  if (!note)
439
433
  continue;
440
- const promise = this.scheduleNoteRelease(channelNumber, note.noteNumber, velocity, now, stopPedal);
434
+ const promise = this.scheduleNoteRelease(channelNumber, note.noteNumber, velocity, now, force);
441
435
  this.notePromises.push(promise);
442
436
  }
443
437
  });
444
438
  channel.scheduledNotes.clear();
445
439
  await Promise.all(this.notePromises);
446
440
  }
447
- stopNotes(velocity, stopPedal) {
441
+ stopNotes(velocity, force) {
448
442
  for (let i = 0; i < this.channels.length; i++) {
449
- this.stopChannelNotes(i, velocity, stopPedal);
443
+ this.stopChannelNotes(i, velocity, force);
450
444
  }
451
445
  return Promise.all(this.notePromises);
452
446
  }
@@ -623,7 +617,7 @@ export class MidyGM1 {
623
617
  note.volumeNode = new GainNode(this.audioContext);
624
618
  note.filterNode = new BiquadFilterNode(this.audioContext, {
625
619
  type: "lowpass",
626
- Q: instrumentKey.initialFilterQ / 10 * channel.filterResonance, // dB
620
+ Q: instrumentKey.initialFilterQ / 10, // dB
627
621
  });
628
622
  this.setVolumeEnvelope(note);
629
623
  this.setFilterEnvelope(note);
@@ -636,7 +630,7 @@ export class MidyGM1 {
636
630
  }
637
631
  note.bufferSource.connect(note.filterNode);
638
632
  note.filterNode.connect(note.volumeNode);
639
- note.bufferSource.start(startTime, instrumentKey.start / instrumentKey.sampleRate);
633
+ note.bufferSource.start(startTime);
640
634
  return note;
641
635
  }
642
636
  async scheduleNoteOn(channelNumber, noteNumber, velocity, startTime) {
@@ -665,9 +659,38 @@ export class MidyGM1 {
665
659
  const now = this.audioContext.currentTime;
666
660
  return this.scheduleNoteOn(channelNumber, noteNumber, velocity, now);
667
661
  }
668
- scheduleNoteRelease(channelNumber, noteNumber, _velocity, stopTime, stopPedal = false) {
662
+ stopNote(stopTime, endTime, scheduledNotes, index) {
663
+ const note = scheduledNotes[index];
664
+ note.volumeNode.gain
665
+ .cancelScheduledValues(stopTime)
666
+ .linearRampToValueAtTime(0, endTime);
667
+ note.ending = true;
668
+ this.scheduleTask(() => {
669
+ note.bufferSource.loop = false;
670
+ }, endTime);
671
+ return new Promise((resolve) => {
672
+ note.bufferSource.onended = () => {
673
+ scheduledNotes[index] = null;
674
+ note.bufferSource.disconnect();
675
+ note.volumeNode.disconnect();
676
+ note.filterNode.disconnect();
677
+ if (note.modulationDepth) {
678
+ note.volumeDepth.disconnect();
679
+ note.modulationDepth.disconnect();
680
+ note.modulationLFO.stop();
681
+ }
682
+ if (note.vibratoDepth) {
683
+ note.vibratoDepth.disconnect();
684
+ note.vibratoLFO.stop();
685
+ }
686
+ resolve();
687
+ };
688
+ note.bufferSource.stop(endTime);
689
+ });
690
+ }
691
+ scheduleNoteRelease(channelNumber, noteNumber, _velocity, stopTime, force) {
669
692
  const channel = this.channels[channelNumber];
670
- if (stopPedal && channel.sustainPedal)
693
+ if (!force && channel.sustainPedal)
671
694
  return;
672
695
  if (!channel.scheduledNotes.has(noteNumber))
673
696
  return;
@@ -679,32 +702,11 @@ export class MidyGM1 {
679
702
  if (note.ending)
680
703
  continue;
681
704
  const volEndTime = stopTime + note.instrumentKey.volRelease;
682
- note.volumeNode.gain
683
- .cancelScheduledValues(stopTime)
684
- .linearRampToValueAtTime(0, volEndTime);
685
705
  const modRelease = stopTime + note.instrumentKey.modRelease;
686
706
  note.filterNode.frequency
687
707
  .cancelScheduledValues(stopTime)
688
708
  .linearRampToValueAtTime(0, modRelease);
689
- note.ending = true;
690
- this.scheduleTask(() => {
691
- note.bufferSource.loop = false;
692
- }, stopTime);
693
- return new Promise((resolve) => {
694
- note.bufferSource.onended = () => {
695
- scheduledNotes[i] = null;
696
- note.bufferSource.disconnect();
697
- note.volumeNode.disconnect();
698
- note.filterNode.disconnect();
699
- if (note.modulationDepth) {
700
- note.volumeDepth.disconnect();
701
- note.modulationDepth.disconnect();
702
- note.modulationLFO.stop();
703
- }
704
- resolve();
705
- };
706
- note.bufferSource.stop(volEndTime);
707
- });
709
+ this.stopNote(stopTime, volEndTime, scheduledNotes, i);
708
710
  }
709
711
  }
710
712
  releaseNote(channelNumber, noteNumber, velocity) {
@@ -813,7 +815,7 @@ export class MidyGM1 {
813
815
  setVolume(channelNumber, volume) {
814
816
  const channel = this.channels[channelNumber];
815
817
  channel.volume = volume / 127;
816
- this.updateChannelGain(channel);
818
+ this.updateChannelVolume(channel);
817
819
  }
818
820
  panToGain(pan) {
819
821
  const theta = Math.PI / 2 * Math.max(0, pan - 1) / 126;
@@ -825,18 +827,18 @@ export class MidyGM1 {
825
827
  setPan(channelNumber, pan) {
826
828
  const channel = this.channels[channelNumber];
827
829
  channel.pan = pan;
828
- this.updateChannelGain(channel);
830
+ this.updateChannelVolume(channel);
829
831
  }
830
832
  setExpression(channelNumber, expression) {
831
833
  const channel = this.channels[channelNumber];
832
834
  channel.expression = expression / 127;
833
- this.updateChannelGain(channel);
835
+ this.updateChannelVolume(channel);
834
836
  }
835
837
  dataEntryLSB(channelNumber, value) {
836
838
  this.channels[channelNumber].dataLSB = value;
837
839
  this.handleRPN(channelNumber, 0);
838
840
  }
839
- updateChannelGain(channel) {
841
+ updateChannelVolume(channel) {
840
842
  const now = this.audioContext.currentTime;
841
843
  const volume = channel.volume * channel.expression;
842
844
  const { gainLeft, gainRight } = this.panToGain(channel.pan);
@@ -989,11 +991,12 @@ export class MidyGM1 {
989
991
  }
990
992
  }
991
993
  GM1SystemOn() {
992
- this.channels.forEach((channel) => {
994
+ for (let i = 0; i < this.channels.length; i++) {
995
+ const channel = this.channels[i];
993
996
  channel.bankMSB = 0;
994
997
  channel.bankLSB = 0;
995
998
  channel.bank = 0;
996
- });
999
+ }
997
1000
  this.channels[9].bankMSB = 1;
998
1001
  this.channels[9].bank = 128;
999
1002
  }
package/esm/midy-GM2.d.ts CHANGED
@@ -144,7 +144,7 @@ export class MidyGM2 {
144
144
  createChannels(audioContext: any): any[];
145
145
  createNoteBuffer(instrumentKey: any, isSF3: any): Promise<any>;
146
146
  createNoteBufferNode(instrumentKey: any, isSF3: any): Promise<any>;
147
- convertToFloat32Array(uint8Array: any): Float32Array;
147
+ findPortamentoTarget(queueIndex: any): any;
148
148
  scheduleTimelineEvents(t: any, offset: any, queueIndex: any): Promise<any>;
149
149
  getQueueIndex(second: any): number;
150
150
  playNotes(): Promise<any>;
@@ -154,8 +154,8 @@ export class MidyGM2 {
154
154
  instruments: Set<any>;
155
155
  timeline: any[];
156
156
  };
157
- stopChannelNotes(channelNumber: any, velocity: any, stopPedal: any): Promise<void>;
158
- stopNotes(velocity: any, stopPedal: any): Promise<any[]>;
157
+ stopChannelNotes(channelNumber: any, velocity: any, force: any): Promise<void>;
158
+ stopNotes(velocity: any, force: any): Promise<any[]>;
159
159
  start(): Promise<void>;
160
160
  stop(): void;
161
161
  pause(): void;
@@ -191,18 +191,21 @@ export class MidyGM2 {
191
191
  centToHz(cent: any): number;
192
192
  calcSemitoneOffset(channel: any): any;
193
193
  calcPlaybackRate(instrumentKey: any, noteNumber: any, semitoneOffset: any): number;
194
+ setPortamentoStartVolumeEnvelope(channel: any, note: any): void;
194
195
  setVolumeEnvelope(note: any): void;
195
196
  setPitch(note: any, semitoneOffset: any): void;
196
197
  clampCutoffFrequency(frequency: any): number;
198
+ setPortamentoStartFilterEnvelope(channel: any, note: any): void;
197
199
  setFilterEnvelope(channel: any, note: any): void;
198
200
  startModulation(channel: any, note: any, startTime: any): void;
199
201
  startVibrato(channel: any, note: any, startTime: any): void;
200
- createNote(channel: any, instrumentKey: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
202
+ createNote(channel: any, instrumentKey: any, noteNumber: any, velocity: any, startTime: any, portamento: any, isSF3: any): Promise<Note>;
201
203
  calcBank(channel: any, channelNumber: any): any;
202
- scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
203
- noteOn(channelNumber: any, noteNumber: any, velocity: any): Promise<void>;
204
- scheduleNoteRelease(channelNumber: any, noteNumber: any, _velocity: any, stopTime: any, stopPedal?: boolean): Promise<any> | undefined;
205
- releaseNote(channelNumber: any, noteNumber: any, velocity: any): Promise<any> | undefined;
204
+ scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any, portamento: any): Promise<void>;
205
+ noteOn(channelNumber: any, noteNumber: any, velocity: any, portamento: any): Promise<void>;
206
+ stopNote(stopTime: any, endTime: any, scheduledNotes: any, index: any): Promise<any>;
207
+ scheduleNoteRelease(channelNumber: any, noteNumber: any, _velocity: any, stopTime: any, portamentoNoteNumber: any, force: any): Promise<any> | undefined;
208
+ releaseNote(channelNumber: any, noteNumber: any, velocity: any, portamentoNoteNumber: any): Promise<any> | undefined;
206
209
  releaseSustainPedal(channelNumber: any, halfVelocity: any): any[];
207
210
  releaseSostenutoPedal(channelNumber: any, halfVelocity: any): any[];
208
211
  handleMIDIMessage(statusByte: any, data1: any, data2: any): void | Promise<any>;
@@ -250,7 +253,7 @@ export class MidyGM2 {
250
253
  setExpression(channelNumber: any, expression: any): void;
251
254
  setBankLSB(channelNumber: any, lsb: any): void;
252
255
  dataEntryLSB(channelNumber: any, value: any): void;
253
- updateChannelGain(channel: any): void;
256
+ updateChannelVolume(channel: any): void;
254
257
  setSustainPedal(channelNumber: any, value: any): void;
255
258
  setPortamento(channelNumber: any, value: any): void;
256
259
  setReverbSendLevel(channelNumber: any, reverbSendLevel: any): void;
@@ -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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"}