@marmooo/midy 0.4.3 → 0.4.5

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.
@@ -177,6 +177,16 @@ const releaseCurve = 1 / (-Math.log(cbToRatio(-600)));
177
177
  class MidyGMLite extends EventTarget {
178
178
  constructor(audioContext) {
179
179
  super();
180
+ // https://pmc.ncbi.nlm.nih.gov/articles/PMC4191557/
181
+ // https://pubmed.ncbi.nlm.nih.gov/12488797/
182
+ // Gap detection studies indicate humans detect temporal discontinuities
183
+ // around 2–3 ms. Smoothing over ~4 ms is perceived as continuous.
184
+ Object.defineProperty(this, "perceptualSmoothingTime", {
185
+ enumerable: true,
186
+ configurable: true,
187
+ writable: true,
188
+ value: 0.004
189
+ });
180
190
  Object.defineProperty(this, "mode", {
181
191
  enumerable: true,
182
192
  configurable: true,
@@ -563,8 +573,8 @@ class MidyGMLite extends EventTarget {
563
573
  this.voiceCache.clear();
564
574
  this.realtimeVoiceCache.clear();
565
575
  const channels = this.channels;
566
- for (let i = 0; i < channels.length; i++) {
567
- channels[i].scheduledNotes = [];
576
+ for (let ch = 0; ch < channels.length; ch++) {
577
+ channels[ch].scheduledNotes = [];
568
578
  this.resetChannelStates(i);
569
579
  }
570
580
  }
@@ -755,8 +765,8 @@ class MidyGMLite extends EventTarget {
755
765
  }
756
766
  stopNotes(velocity, force, scheduleTime) {
757
767
  const channels = this.channels;
758
- for (let i = 0; i < channels.length; i++) {
759
- this.stopChannelNotes(i, velocity, force, scheduleTime);
768
+ for (let ch = 0; ch < channels.length; ch++) {
769
+ this.stopChannelNotes(ch, velocity, force, scheduleTime);
760
770
  }
761
771
  const stopPromise = Promise.all(this.notePromises);
762
772
  this.notePromises = [];
@@ -797,6 +807,13 @@ class MidyGMLite extends EventTarget {
797
807
  this.isSeeking = true;
798
808
  }
799
809
  }
810
+ tempoChange(tempo) {
811
+ const timeScale = this.tempo / tempo;
812
+ this.resumeTime = this.resumeTime * timeScale;
813
+ this.tempo = tempo;
814
+ this.totalTime = this.calcTotalTime();
815
+ this.seekTo(this.currentTime() * timeScale);
816
+ }
800
817
  calcTotalTime() {
801
818
  const totalTimeEventTypes = this.totalTimeEventTypes;
802
819
  const timeline = this.timeline;
@@ -864,13 +881,11 @@ class MidyGMLite extends EventTarget {
864
881
  }
865
882
  updateChannelDetune(channel, scheduleTime) {
866
883
  this.processScheduledNotes(channel, (note) => {
867
- this.updateDetune(channel, note, scheduleTime);
884
+ this.setDetune(channel, note, scheduleTime);
868
885
  });
869
886
  }
870
- updateDetune(channel, note, scheduleTime) {
871
- note.bufferSource.detune
872
- .cancelScheduledValues(scheduleTime)
873
- .setValueAtTime(channel.detune, scheduleTime);
887
+ calcNoteDetune(channel, note) {
888
+ return channel.detune + note.voiceParams.detune;
874
889
  }
875
890
  setVolumeEnvelope(note, scheduleTime) {
876
891
  const { voiceParams, startTime } = note;
@@ -883,30 +898,38 @@ class MidyGMLite extends EventTarget {
883
898
  note.volumeEnvelopeNode.gain
884
899
  .cancelScheduledValues(scheduleTime)
885
900
  .setValueAtTime(0, startTime)
886
- .setValueAtTime(0, volDelay)
887
- .linearRampToValueAtTime(attackVolume, volAttack)
901
+ .setValueAtTime(1e-6, volDelay)
902
+ .exponentialRampToValueAtTime(attackVolume, volAttack)
888
903
  .setValueAtTime(attackVolume, volHold)
889
904
  .setTargetAtTime(sustainVolume, volHold, decayDuration * decayCurve);
890
905
  }
906
+ setDetune(channel, note, scheduleTime) {
907
+ const detune = this.calcNoteDetune(channel, note);
908
+ note.bufferSource.detune
909
+ .cancelScheduledValues(scheduleTime)
910
+ .setValueAtTime(detune, scheduleTime);
911
+ const timeConstant = this.perceptualSmoothingTime / 5; // 99.3% (5 * tau)
912
+ note.bufferSource.detune
913
+ .cancelAndHoldAtTime(scheduleTime)
914
+ .setTargetAtTime(detune, scheduleTime, timeConstant);
915
+ }
891
916
  setPitchEnvelope(note, scheduleTime) {
892
- const { voiceParams } = note;
917
+ const { bufferSource, voiceParams } = note;
893
918
  const baseRate = voiceParams.playbackRate;
894
- note.bufferSource.playbackRate
919
+ bufferSource.playbackRate
895
920
  .cancelScheduledValues(scheduleTime)
896
- .setValueAtTime(baseRate, note.startTime);
921
+ .setValueAtTime(baseRate, scheduleTime);
897
922
  const modEnvToPitch = voiceParams.modEnvToPitch;
898
923
  if (modEnvToPitch === 0)
899
924
  return;
900
- const basePitch = this.rateToCent(baseRate);
901
- const peekPitch = basePitch + modEnvToPitch;
902
- const peekRate = this.centToRate(peekPitch);
925
+ const peekRate = baseRate * this.centToRate(modEnvToPitch);
903
926
  const modDelay = note.startTime + voiceParams.modDelay;
904
927
  const modAttack = modDelay + voiceParams.modAttack;
905
928
  const modHold = modAttack + voiceParams.modHold;
906
929
  const decayDuration = voiceParams.modDecay;
907
- note.bufferSource.playbackRate
930
+ bufferSource.playbackRate
908
931
  .setValueAtTime(baseRate, modDelay)
909
- .linearRampToValueAtTime(peekRate, modAttack)
932
+ .exponentialRampToValueAtTime(peekRate, modAttack)
910
933
  .setValueAtTime(peekRate, modHold)
911
934
  .setTargetAtTime(baseRate, modHold, decayDuration * decayCurve);
912
935
  }
@@ -937,7 +960,7 @@ class MidyGMLite extends EventTarget {
937
960
  .cancelScheduledValues(scheduleTime)
938
961
  .setValueAtTime(adjustedBaseFreq, startTime)
939
962
  .setValueAtTime(adjustedBaseFreq, modDelay)
940
- .linearRampToValueAtTime(adjustedPeekFreq, modAttack)
963
+ .exponentialRampToValueAtTime(adjustedPeekFreq, modAttack)
941
964
  .setValueAtTime(adjustedPeekFreq, modHold)
942
965
  .setTargetAtTime(adjustedSustainFreq, modHold, decayDuration * decayCurve);
943
966
  }
@@ -1008,7 +1031,7 @@ class MidyGMLite extends EventTarget {
1008
1031
  this.setVolumeEnvelope(note, now);
1009
1032
  this.setFilterEnvelope(note, now);
1010
1033
  this.setPitchEnvelope(note, now);
1011
- this.updateDetune(channel, note, now);
1034
+ this.setDetune(channel, note, now);
1012
1035
  if (0 < state.modulationDepthMSB) {
1013
1036
  this.startModulation(channel, note, now);
1014
1037
  }
@@ -1105,15 +1128,14 @@ class MidyGMLite extends EventTarget {
1105
1128
  }
1106
1129
  releaseNote(channel, note, endTime) {
1107
1130
  endTime ??= this.audioContext.currentTime;
1108
- const duration = note.voiceParams.volRelease;
1109
- const volRelease = endTime + duration;
1110
- const modRelease = endTime + note.voiceParams.modRelease;
1131
+ const volDuration = note.voiceParams.volRelease;
1132
+ const volRelease = endTime + volDuration;
1111
1133
  note.filterNode.frequency
1112
1134
  .cancelScheduledValues(endTime)
1113
- .linearRampToValueAtTime(note.adjustedBaseFreq, modRelease);
1135
+ .setTargetAtTime(note.adjustedBaseFreq, endTime, note.voiceParams.modRelease * releaseCurve);
1114
1136
  note.volumeEnvelopeNode.gain
1115
1137
  .cancelScheduledValues(endTime)
1116
- .setTargetAtTime(0, endTime, duration * releaseCurve);
1138
+ .setTargetAtTime(0, endTime, volDuration * releaseCurve);
1117
1139
  return new Promise((resolve) => {
1118
1140
  this.scheduleTask(() => {
1119
1141
  const bufferSource = note.bufferSource;
@@ -1307,12 +1329,15 @@ class MidyGMLite extends EventTarget {
1307
1329
  }
1308
1330
  },
1309
1331
  freqModLFO: (_channel, note, scheduleTime) => {
1310
- if (0 < channel.state.modulationDepth) {
1332
+ if (0 < channel.state.modulationDepthMSB) {
1311
1333
  this.setFreqModLFO(note, scheduleTime);
1312
1334
  }
1313
1335
  },
1314
1336
  delayVibLFO: (_channel, _note, _scheduleTime) => { },
1315
1337
  freqVibLFO: (_channel, _note, _scheduleTime) => { },
1338
+ detune: (channel, note, scheduleTime) => {
1339
+ this.setDetune(channel, note, scheduleTime);
1340
+ },
1316
1341
  };
1317
1342
  }
1318
1343
  getControllerState(channel, noteNumber, velocity) {
@@ -1382,7 +1407,8 @@ class MidyGMLite extends EventTarget {
1382
1407
  }
1383
1408
  }
1384
1409
  updateModulation(channel, scheduleTime) {
1385
- const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1410
+ const depth = channel.state.modulationDepthMSB *
1411
+ channel.modulationDepthRange;
1386
1412
  this.processScheduledNotes(channel, (note) => {
1387
1413
  if (note.modulationDepth) {
1388
1414
  note.modulationDepth.gain.setValueAtTime(depth, scheduleTime);
@@ -1392,18 +1418,18 @@ class MidyGMLite extends EventTarget {
1392
1418
  }
1393
1419
  });
1394
1420
  }
1395
- setModulationDepth(channelNumber, modulation, scheduleTime) {
1421
+ setModulationDepth(channelNumber, value, scheduleTime) {
1396
1422
  const channel = this.channels[channelNumber];
1397
1423
  if (!(0 <= scheduleTime))
1398
1424
  scheduleTime = this.audioContext.currentTime;
1399
- channel.state.modulationDepth = modulation / 127;
1425
+ channel.state.modulationDepthMSB = value / 127;
1400
1426
  this.updateModulation(channel, scheduleTime);
1401
1427
  }
1402
- setVolume(channelNumber, volume, scheduleTime) {
1428
+ setVolume(channelNumber, value, scheduleTime) {
1403
1429
  if (!(0 <= scheduleTime))
1404
1430
  scheduleTime = this.audioContext.currentTime;
1405
1431
  const channel = this.channels[channelNumber];
1406
- channel.state.volume = volume / 127;
1432
+ channel.state.volumeMSB = value / 127;
1407
1433
  this.updateChannelVolume(channel, scheduleTime);
1408
1434
  }
1409
1435
  panToGain(pan) {
@@ -1413,18 +1439,18 @@ class MidyGMLite extends EventTarget {
1413
1439
  gainRight: Math.sin(theta),
1414
1440
  };
1415
1441
  }
1416
- setPan(channelNumber, pan, scheduleTime) {
1442
+ setPan(channelNumber, value, scheduleTime) {
1417
1443
  if (!(0 <= scheduleTime))
1418
1444
  scheduleTime = this.audioContext.currentTime;
1419
1445
  const channel = this.channels[channelNumber];
1420
- channel.state.pan = pan / 127;
1446
+ channel.state.panMSB = value / 127;
1421
1447
  this.updateChannelVolume(channel, scheduleTime);
1422
1448
  }
1423
- setExpression(channelNumber, expression, scheduleTime) {
1449
+ setExpression(channelNumber, value, scheduleTime) {
1424
1450
  if (!(0 <= scheduleTime))
1425
1451
  scheduleTime = this.audioContext.currentTime;
1426
1452
  const channel = this.channels[channelNumber];
1427
- channel.state.expression = expression / 127;
1453
+ channel.state.expressionMSB = value / 127;
1428
1454
  this.updateChannelVolume(channel, scheduleTime);
1429
1455
  }
1430
1456
  dataEntryLSB(channelNumber, value, scheduleTime) {
@@ -1433,14 +1459,14 @@ class MidyGMLite extends EventTarget {
1433
1459
  }
1434
1460
  updateChannelVolume(channel, scheduleTime) {
1435
1461
  const state = channel.state;
1436
- const volume = state.volume * state.expression;
1437
- const { gainLeft, gainRight } = this.panToGain(state.pan);
1462
+ const gain = state.volumeMSB * state.expressionMSB;
1463
+ const { gainLeft, gainRight } = this.panToGain(state.panMSB);
1438
1464
  channel.gainL.gain
1439
1465
  .cancelScheduledValues(scheduleTime)
1440
- .setValueAtTime(volume * gainLeft, scheduleTime);
1466
+ .setValueAtTime(gain * gainLeft, scheduleTime);
1441
1467
  channel.gainR.gain
1442
1468
  .cancelScheduledValues(scheduleTime)
1443
- .setValueAtTime(volume * gainRight, scheduleTime);
1469
+ .setValueAtTime(gain * gainRight, scheduleTime);
1444
1470
  }
1445
1471
  setSustainPedal(channelNumber, value, scheduleTime) {
1446
1472
  const channel = this.channels[channelNumber];
@@ -1481,6 +1507,8 @@ class MidyGMLite extends EventTarget {
1481
1507
  case 0:
1482
1508
  this.handlePitchBendRangeRPN(channelNumber, scheduleTime);
1483
1509
  break;
1510
+ case 16383: // NULL
1511
+ break;
1484
1512
  default:
1485
1513
  console.warn(`Channel ${channelNumber}: Unsupported RPN MSB=${channel.rpnMSB} LSB=${channel.rpnLSB}`);
1486
1514
  }
@@ -1593,9 +1621,9 @@ class MidyGMLite extends EventTarget {
1593
1621
  if (!(0 <= scheduleTime))
1594
1622
  scheduleTime = this.audioContext.currentTime;
1595
1623
  this.mode = "GM1";
1596
- for (let i = 0; i < channels.length; i++) {
1597
- this.allSoundOff(i, 0, scheduleTime);
1598
- const channel = channels[i];
1624
+ for (let ch = 0; ch < channels.length; ch++) {
1625
+ this.allSoundOff(ch, 0, scheduleTime);
1626
+ const channel = channels[ch];
1599
1627
  channel.isDrum = false;
1600
1628
  }
1601
1629
  channels[9].isDrum = true;
package/script/midy.d.ts CHANGED
@@ -14,8 +14,11 @@ export class Midy extends EventTarget {
14
14
  fineTuning: number;
15
15
  coarseTuning: number;
16
16
  portamentoControl: boolean;
17
+ isMPEMember: boolean;
18
+ isMPEManager: boolean;
17
19
  };
18
20
  constructor(audioContext: any);
21
+ perceptualSmoothingTime: number;
19
22
  mode: string;
20
23
  masterFineTuning: number;
21
24
  masterCoarseTuning: number;
@@ -61,6 +64,13 @@ export class Midy extends EventTarget {
61
64
  instruments: Set<any>;
62
65
  exclusiveClassNotes: any[];
63
66
  drumExclusiveClassNotes: any[];
67
+ mpeEnabled: boolean;
68
+ lowerMPEMembers: number;
69
+ upperMPEMembers: number;
70
+ mpeState: {
71
+ channelToNotes: Map<any, any>;
72
+ noteToChannel: Map<any, any>;
73
+ };
64
74
  audioContext: any;
65
75
  masterVolume: any;
66
76
  scheduler: any;
@@ -77,6 +87,7 @@ export class Midy extends EventTarget {
77
87
  freqModLFO: (_channel: any, note: any, scheduleTime: any) => void;
78
88
  delayVibLFO: (channel: any, note: any, _scheduleTime: any) => void;
79
89
  freqVibLFO: (channel: any, note: any, scheduleTime: any) => void;
90
+ detune: (channel: any, note: any, scheduleTime: any) => void;
80
91
  };
81
92
  controlChangeHandlers: any[];
82
93
  keyBasedControllerHandlers: any[];
@@ -130,10 +141,12 @@ export class Midy extends EventTarget {
130
141
  pause(): Promise<void>;
131
142
  resume(): Promise<void>;
132
143
  seekTo(second: any): void;
144
+ tempoChange(tempo: any): void;
133
145
  calcTotalTime(): number;
134
146
  currentTime(): number;
135
147
  processScheduledNotes(channel: any, callback: any): Promise<void>;
136
148
  processActiveNotes(channel: any, scheduleTime: any, callback: any): Promise<void>;
149
+ applyToMPEChannels(channelNumber: any, fn: any): void;
137
150
  createConvolutionReverbImpulse(audioContext: any, decay: any, preDecay: any): any;
138
151
  createConvolutionReverb(audioContext: any, impulse: any): {
139
152
  input: any;
@@ -164,14 +177,16 @@ export class Midy extends EventTarget {
164
177
  centToRate(cent: any): number;
165
178
  centToHz(cent: any): number;
166
179
  calcChannelDetune(channel: any): any;
167
- calcNoteDetune(channel: any, note: any): any;
168
180
  updateChannelDetune(channel: any, scheduleTime: any): void;
169
- updateDetune(channel: any, note: any, scheduleTime: any): void;
181
+ calcScaleOctaveTuning(channel: any, note: any): any;
182
+ calcNoteDetune(channel: any, note: any): any;
170
183
  getPortamentoTime(channel: any, note: any): number;
171
184
  getPitchIncrementSpeed(value: any): number;
172
185
  setPortamentoVolumeEnvelope(channel: any, note: any, scheduleTime: any): void;
173
186
  setVolumeEnvelope(channel: any, note: any, scheduleTime: any): void;
174
- setPortamentoPitchEnvelope(note: any, scheduleTime: any): void;
187
+ setPortamentoDetune(channel: any, note: any, scheduleTime: any): void;
188
+ setDetune(channel: any, note: any, scheduleTime: any): void;
189
+ setPortamentoPitchEnvelope(channel: any, note: any, scheduleTime: any): void;
175
190
  setPitchEnvelope(note: any, scheduleTime: any): void;
176
191
  clampCutoffFrequency(frequency: any): number;
177
192
  setPortamentoFilterEnvelope(channel: any, note: any, scheduleTime: any): void;
@@ -184,9 +199,11 @@ export class Midy extends EventTarget {
184
199
  handleDrumExclusiveClass(note: any, channelNumber: any, startTime: any): void;
185
200
  setNoteRouting(channelNumber: any, note: any, startTime: any): void;
186
201
  noteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
202
+ startNote(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<Note | undefined>;
187
203
  disconnectNote(note: any): void;
188
204
  releaseNote(channel: any, note: any, endTime: any): Promise<any>;
189
- noteOff(channelNumber: any, noteNumber: any, _velocity: any, endTime: any, force: any): any;
205
+ noteOff(channelNumber: any, noteNumber: any, velocity: any, endTime: any, force: any): any;
206
+ stopNote(channelNumber: any, noteNumber: any, _velocity: any, endTime: any, force: any): any;
190
207
  setNoteIndex(channel: any, index: any): void;
191
208
  findNoteOffIndex(channel: any, noteNumber: any): any;
192
209
  releaseSustainPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): any[];
@@ -195,10 +212,13 @@ export class Midy extends EventTarget {
195
212
  handleMessage(data: any, scheduleTime: any): void;
196
213
  activeSensing(): void;
197
214
  setPolyphonicKeyPressure(channelNumber: any, noteNumber: any, pressure: any, scheduleTime: any): void;
198
- setProgramChange(channelNumber: any, programNumber: any, _scheduleTime: any): void;
215
+ setProgramChange(channelNumber: any, programNumber: any, scheduleTime: any): void;
216
+ applyProgramChange(channelNumber: any, programNumber: any, _scheduleTime: any): void;
199
217
  setChannelPressure(channelNumber: any, value: any, scheduleTime: any): void;
218
+ applyChannelPressure(channelNumber: any, value: any, scheduleTime: any): void;
200
219
  handlePitchBendMessage(channelNumber: any, lsb: any, msb: any, scheduleTime: any): void;
201
220
  setPitchBend(channelNumber: any, value: any, scheduleTime: any): void;
221
+ applyPitchBend(channelNumber: any, value: any, scheduleTime: any): void;
202
222
  setModLfoToPitch(channel: any, note: any, scheduleTime: any): void;
203
223
  setVibLfoToPitch(channel: any, note: any, scheduleTime: any): void;
204
224
  setModLfoToFilterFc(channel: any, note: any, scheduleTime: any): void;
@@ -207,8 +227,8 @@ export class Midy extends EventTarget {
207
227
  setChorusSend(channel: any, note: any, scheduleTime: any): void;
208
228
  setDelayModLFO(note: any): void;
209
229
  setFreqModLFO(note: any, scheduleTime: any): void;
210
- setFreqVibLFO(channel: any, note: any, scheduleTime: any): void;
211
230
  setDelayVibLFO(channel: any, note: any): void;
231
+ setFreqVibLFO(channel: any, note: any, scheduleTime: any): void;
212
232
  createVoiceParamsHandlers(): {
213
233
  modLfoToPitch: (channel: any, note: any, scheduleTime: any) => void;
214
234
  vibLfoToPitch: (channel: any, note: any, scheduleTime: any) => void;
@@ -220,11 +240,13 @@ export class Midy extends EventTarget {
220
240
  freqModLFO: (_channel: any, note: any, scheduleTime: any) => void;
221
241
  delayVibLFO: (channel: any, note: any, _scheduleTime: any) => void;
222
242
  freqVibLFO: (channel: any, note: any, scheduleTime: any) => void;
243
+ detune: (channel: any, note: any, scheduleTime: any) => void;
223
244
  };
224
245
  getControllerState(channel: any, noteNumber: any, velocity: any, polyphonicKeyPressure: any): Float32Array<any>;
225
246
  applyVoiceParams(channel: any, controllerType: any, scheduleTime: any): void;
226
247
  createControlChangeHandlers(): any[];
227
248
  setControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
249
+ applyControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
228
250
  setBankMSB(channelNumber: any, msb: any): void;
229
251
  updateModulation(channel: any, scheduleTime: any): void;
230
252
  setModulationDepth(channelNumber: any, value: any, scheduleTime: any): void;
@@ -275,8 +297,11 @@ export class Midy extends EventTarget {
275
297
  setCoarseTuning(channelNumber: any, value: any, scheduleTime: any): void;
276
298
  handleModulationDepthRangeRPN(channelNumber: any, scheduleTime: any): void;
277
299
  setModulationDepthRange(channelNumber: any, value: any, scheduleTime: any): void;
300
+ handleMIDIPolyphonicExpressionRPN(channelNumber: any, _scheduleTime: any): void;
301
+ setMIDIPolyphonicExpression(channelNumber: any, value: any): void;
278
302
  setRPGMakerLoop(_channelNumber: any, _value: any, scheduleTime: any): void;
279
- allSoundOff(channelNumber: any, _value: any, scheduleTime: any): Promise<any[]>;
303
+ allSoundOff(channelNumber: any, value: any, scheduleTime: any): void;
304
+ applyAllSoundOff(channelNumber: any, _value: any, scheduleTime: any): Promise<any[]> | undefined;
280
305
  resetChannelStates(channelNumber: any): void;
281
306
  resetAllControllers(channelNumber: any, _value: any, scheduleTime: any): void;
282
307
  allNotesOff(channelNumber: any, _value: any, scheduleTime: any): Promise<any[]>;
@@ -332,4 +357,31 @@ export class Midy extends EventTarget {
332
357
  handleSysEx(data: any, scheduleTime: any): void;
333
358
  scheduleTask(callback: any, scheduleTime: any): Promise<any>;
334
359
  }
360
+ declare class Note {
361
+ constructor(noteNumber: any, velocity: any, startTime: any);
362
+ voice: any;
363
+ voiceParams: any;
364
+ adjustedBaseFreq: number;
365
+ index: number;
366
+ ending: boolean;
367
+ bufferSource: any;
368
+ filterNode: any;
369
+ filterDepth: any;
370
+ volumeEnvelopeNode: any;
371
+ volumeDepth: any;
372
+ modulationLFO: any;
373
+ modulationDepth: any;
374
+ vibratoLFO: any;
375
+ vibratoDepth: any;
376
+ reverbSend: any;
377
+ chorusSend: any;
378
+ portamentoNoteNumber: number;
379
+ pressure: number;
380
+ noteNumber: any;
381
+ velocity: any;
382
+ startTime: any;
383
+ ready: Promise<any>;
384
+ resolveReady: (value: any) => void;
385
+ }
386
+ export {};
335
387
  //# sourceMappingURL=midy.d.ts.map
@@ -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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"}