@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.
@@ -174,6 +174,16 @@ const releaseCurve = 1 / (-Math.log(cbToRatio(-600)));
174
174
  export class MidyGMLite extends EventTarget {
175
175
  constructor(audioContext) {
176
176
  super();
177
+ // https://pmc.ncbi.nlm.nih.gov/articles/PMC4191557/
178
+ // https://pubmed.ncbi.nlm.nih.gov/12488797/
179
+ // Gap detection studies indicate humans detect temporal discontinuities
180
+ // around 2–3 ms. Smoothing over ~4 ms is perceived as continuous.
181
+ Object.defineProperty(this, "perceptualSmoothingTime", {
182
+ enumerable: true,
183
+ configurable: true,
184
+ writable: true,
185
+ value: 0.004
186
+ });
177
187
  Object.defineProperty(this, "mode", {
178
188
  enumerable: true,
179
189
  configurable: true,
@@ -560,8 +570,8 @@ export class MidyGMLite extends EventTarget {
560
570
  this.voiceCache.clear();
561
571
  this.realtimeVoiceCache.clear();
562
572
  const channels = this.channels;
563
- for (let i = 0; i < channels.length; i++) {
564
- channels[i].scheduledNotes = [];
573
+ for (let ch = 0; ch < channels.length; ch++) {
574
+ channels[ch].scheduledNotes = [];
565
575
  this.resetChannelStates(i);
566
576
  }
567
577
  }
@@ -752,8 +762,8 @@ export class MidyGMLite extends EventTarget {
752
762
  }
753
763
  stopNotes(velocity, force, scheduleTime) {
754
764
  const channels = this.channels;
755
- for (let i = 0; i < channels.length; i++) {
756
- this.stopChannelNotes(i, velocity, force, scheduleTime);
765
+ for (let ch = 0; ch < channels.length; ch++) {
766
+ this.stopChannelNotes(ch, velocity, force, scheduleTime);
757
767
  }
758
768
  const stopPromise = Promise.all(this.notePromises);
759
769
  this.notePromises = [];
@@ -794,6 +804,13 @@ export class MidyGMLite extends EventTarget {
794
804
  this.isSeeking = true;
795
805
  }
796
806
  }
807
+ tempoChange(tempo) {
808
+ const timeScale = this.tempo / tempo;
809
+ this.resumeTime = this.resumeTime * timeScale;
810
+ this.tempo = tempo;
811
+ this.totalTime = this.calcTotalTime();
812
+ this.seekTo(this.currentTime() * timeScale);
813
+ }
797
814
  calcTotalTime() {
798
815
  const totalTimeEventTypes = this.totalTimeEventTypes;
799
816
  const timeline = this.timeline;
@@ -861,13 +878,11 @@ export class MidyGMLite extends EventTarget {
861
878
  }
862
879
  updateChannelDetune(channel, scheduleTime) {
863
880
  this.processScheduledNotes(channel, (note) => {
864
- this.updateDetune(channel, note, scheduleTime);
881
+ this.setDetune(channel, note, scheduleTime);
865
882
  });
866
883
  }
867
- updateDetune(channel, note, scheduleTime) {
868
- note.bufferSource.detune
869
- .cancelScheduledValues(scheduleTime)
870
- .setValueAtTime(channel.detune, scheduleTime);
884
+ calcNoteDetune(channel, note) {
885
+ return channel.detune + note.voiceParams.detune;
871
886
  }
872
887
  setVolumeEnvelope(note, scheduleTime) {
873
888
  const { voiceParams, startTime } = note;
@@ -880,30 +895,38 @@ export class MidyGMLite extends EventTarget {
880
895
  note.volumeEnvelopeNode.gain
881
896
  .cancelScheduledValues(scheduleTime)
882
897
  .setValueAtTime(0, startTime)
883
- .setValueAtTime(0, volDelay)
884
- .linearRampToValueAtTime(attackVolume, volAttack)
898
+ .setValueAtTime(1e-6, volDelay)
899
+ .exponentialRampToValueAtTime(attackVolume, volAttack)
885
900
  .setValueAtTime(attackVolume, volHold)
886
901
  .setTargetAtTime(sustainVolume, volHold, decayDuration * decayCurve);
887
902
  }
903
+ setDetune(channel, note, scheduleTime) {
904
+ const detune = this.calcNoteDetune(channel, note);
905
+ note.bufferSource.detune
906
+ .cancelScheduledValues(scheduleTime)
907
+ .setValueAtTime(detune, scheduleTime);
908
+ const timeConstant = this.perceptualSmoothingTime / 5; // 99.3% (5 * tau)
909
+ note.bufferSource.detune
910
+ .cancelAndHoldAtTime(scheduleTime)
911
+ .setTargetAtTime(detune, scheduleTime, timeConstant);
912
+ }
888
913
  setPitchEnvelope(note, scheduleTime) {
889
- const { voiceParams } = note;
914
+ const { bufferSource, voiceParams } = note;
890
915
  const baseRate = voiceParams.playbackRate;
891
- note.bufferSource.playbackRate
916
+ bufferSource.playbackRate
892
917
  .cancelScheduledValues(scheduleTime)
893
- .setValueAtTime(baseRate, note.startTime);
918
+ .setValueAtTime(baseRate, scheduleTime);
894
919
  const modEnvToPitch = voiceParams.modEnvToPitch;
895
920
  if (modEnvToPitch === 0)
896
921
  return;
897
- const basePitch = this.rateToCent(baseRate);
898
- const peekPitch = basePitch + modEnvToPitch;
899
- const peekRate = this.centToRate(peekPitch);
922
+ const peekRate = baseRate * this.centToRate(modEnvToPitch);
900
923
  const modDelay = note.startTime + voiceParams.modDelay;
901
924
  const modAttack = modDelay + voiceParams.modAttack;
902
925
  const modHold = modAttack + voiceParams.modHold;
903
926
  const decayDuration = voiceParams.modDecay;
904
- note.bufferSource.playbackRate
927
+ bufferSource.playbackRate
905
928
  .setValueAtTime(baseRate, modDelay)
906
- .linearRampToValueAtTime(peekRate, modAttack)
929
+ .exponentialRampToValueAtTime(peekRate, modAttack)
907
930
  .setValueAtTime(peekRate, modHold)
908
931
  .setTargetAtTime(baseRate, modHold, decayDuration * decayCurve);
909
932
  }
@@ -934,7 +957,7 @@ export class MidyGMLite extends EventTarget {
934
957
  .cancelScheduledValues(scheduleTime)
935
958
  .setValueAtTime(adjustedBaseFreq, startTime)
936
959
  .setValueAtTime(adjustedBaseFreq, modDelay)
937
- .linearRampToValueAtTime(adjustedPeekFreq, modAttack)
960
+ .exponentialRampToValueAtTime(adjustedPeekFreq, modAttack)
938
961
  .setValueAtTime(adjustedPeekFreq, modHold)
939
962
  .setTargetAtTime(adjustedSustainFreq, modHold, decayDuration * decayCurve);
940
963
  }
@@ -1005,7 +1028,7 @@ export class MidyGMLite extends EventTarget {
1005
1028
  this.setVolumeEnvelope(note, now);
1006
1029
  this.setFilterEnvelope(note, now);
1007
1030
  this.setPitchEnvelope(note, now);
1008
- this.updateDetune(channel, note, now);
1031
+ this.setDetune(channel, note, now);
1009
1032
  if (0 < state.modulationDepthMSB) {
1010
1033
  this.startModulation(channel, note, now);
1011
1034
  }
@@ -1102,15 +1125,14 @@ export class MidyGMLite extends EventTarget {
1102
1125
  }
1103
1126
  releaseNote(channel, note, endTime) {
1104
1127
  endTime ??= this.audioContext.currentTime;
1105
- const duration = note.voiceParams.volRelease;
1106
- const volRelease = endTime + duration;
1107
- const modRelease = endTime + note.voiceParams.modRelease;
1128
+ const volDuration = note.voiceParams.volRelease;
1129
+ const volRelease = endTime + volDuration;
1108
1130
  note.filterNode.frequency
1109
1131
  .cancelScheduledValues(endTime)
1110
- .linearRampToValueAtTime(note.adjustedBaseFreq, modRelease);
1132
+ .setTargetAtTime(note.adjustedBaseFreq, endTime, note.voiceParams.modRelease * releaseCurve);
1111
1133
  note.volumeEnvelopeNode.gain
1112
1134
  .cancelScheduledValues(endTime)
1113
- .setTargetAtTime(0, endTime, duration * releaseCurve);
1135
+ .setTargetAtTime(0, endTime, volDuration * releaseCurve);
1114
1136
  return new Promise((resolve) => {
1115
1137
  this.scheduleTask(() => {
1116
1138
  const bufferSource = note.bufferSource;
@@ -1304,12 +1326,15 @@ export class MidyGMLite extends EventTarget {
1304
1326
  }
1305
1327
  },
1306
1328
  freqModLFO: (_channel, note, scheduleTime) => {
1307
- if (0 < channel.state.modulationDepth) {
1329
+ if (0 < channel.state.modulationDepthMSB) {
1308
1330
  this.setFreqModLFO(note, scheduleTime);
1309
1331
  }
1310
1332
  },
1311
1333
  delayVibLFO: (_channel, _note, _scheduleTime) => { },
1312
1334
  freqVibLFO: (_channel, _note, _scheduleTime) => { },
1335
+ detune: (channel, note, scheduleTime) => {
1336
+ this.setDetune(channel, note, scheduleTime);
1337
+ },
1313
1338
  };
1314
1339
  }
1315
1340
  getControllerState(channel, noteNumber, velocity) {
@@ -1379,7 +1404,8 @@ export class MidyGMLite extends EventTarget {
1379
1404
  }
1380
1405
  }
1381
1406
  updateModulation(channel, scheduleTime) {
1382
- const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1407
+ const depth = channel.state.modulationDepthMSB *
1408
+ channel.modulationDepthRange;
1383
1409
  this.processScheduledNotes(channel, (note) => {
1384
1410
  if (note.modulationDepth) {
1385
1411
  note.modulationDepth.gain.setValueAtTime(depth, scheduleTime);
@@ -1389,18 +1415,18 @@ export class MidyGMLite extends EventTarget {
1389
1415
  }
1390
1416
  });
1391
1417
  }
1392
- setModulationDepth(channelNumber, modulation, scheduleTime) {
1418
+ setModulationDepth(channelNumber, value, scheduleTime) {
1393
1419
  const channel = this.channels[channelNumber];
1394
1420
  if (!(0 <= scheduleTime))
1395
1421
  scheduleTime = this.audioContext.currentTime;
1396
- channel.state.modulationDepth = modulation / 127;
1422
+ channel.state.modulationDepthMSB = value / 127;
1397
1423
  this.updateModulation(channel, scheduleTime);
1398
1424
  }
1399
- setVolume(channelNumber, volume, scheduleTime) {
1425
+ setVolume(channelNumber, value, scheduleTime) {
1400
1426
  if (!(0 <= scheduleTime))
1401
1427
  scheduleTime = this.audioContext.currentTime;
1402
1428
  const channel = this.channels[channelNumber];
1403
- channel.state.volume = volume / 127;
1429
+ channel.state.volumeMSB = value / 127;
1404
1430
  this.updateChannelVolume(channel, scheduleTime);
1405
1431
  }
1406
1432
  panToGain(pan) {
@@ -1410,18 +1436,18 @@ export class MidyGMLite extends EventTarget {
1410
1436
  gainRight: Math.sin(theta),
1411
1437
  };
1412
1438
  }
1413
- setPan(channelNumber, pan, scheduleTime) {
1439
+ setPan(channelNumber, value, scheduleTime) {
1414
1440
  if (!(0 <= scheduleTime))
1415
1441
  scheduleTime = this.audioContext.currentTime;
1416
1442
  const channel = this.channels[channelNumber];
1417
- channel.state.pan = pan / 127;
1443
+ channel.state.panMSB = value / 127;
1418
1444
  this.updateChannelVolume(channel, scheduleTime);
1419
1445
  }
1420
- setExpression(channelNumber, expression, scheduleTime) {
1446
+ setExpression(channelNumber, value, scheduleTime) {
1421
1447
  if (!(0 <= scheduleTime))
1422
1448
  scheduleTime = this.audioContext.currentTime;
1423
1449
  const channel = this.channels[channelNumber];
1424
- channel.state.expression = expression / 127;
1450
+ channel.state.expressionMSB = value / 127;
1425
1451
  this.updateChannelVolume(channel, scheduleTime);
1426
1452
  }
1427
1453
  dataEntryLSB(channelNumber, value, scheduleTime) {
@@ -1430,14 +1456,14 @@ export class MidyGMLite extends EventTarget {
1430
1456
  }
1431
1457
  updateChannelVolume(channel, scheduleTime) {
1432
1458
  const state = channel.state;
1433
- const volume = state.volume * state.expression;
1434
- const { gainLeft, gainRight } = this.panToGain(state.pan);
1459
+ const gain = state.volumeMSB * state.expressionMSB;
1460
+ const { gainLeft, gainRight } = this.panToGain(state.panMSB);
1435
1461
  channel.gainL.gain
1436
1462
  .cancelScheduledValues(scheduleTime)
1437
- .setValueAtTime(volume * gainLeft, scheduleTime);
1463
+ .setValueAtTime(gain * gainLeft, scheduleTime);
1438
1464
  channel.gainR.gain
1439
1465
  .cancelScheduledValues(scheduleTime)
1440
- .setValueAtTime(volume * gainRight, scheduleTime);
1466
+ .setValueAtTime(gain * gainRight, scheduleTime);
1441
1467
  }
1442
1468
  setSustainPedal(channelNumber, value, scheduleTime) {
1443
1469
  const channel = this.channels[channelNumber];
@@ -1478,6 +1504,8 @@ export class MidyGMLite extends EventTarget {
1478
1504
  case 0:
1479
1505
  this.handlePitchBendRangeRPN(channelNumber, scheduleTime);
1480
1506
  break;
1507
+ case 16383: // NULL
1508
+ break;
1481
1509
  default:
1482
1510
  console.warn(`Channel ${channelNumber}: Unsupported RPN MSB=${channel.rpnMSB} LSB=${channel.rpnLSB}`);
1483
1511
  }
@@ -1590,9 +1618,9 @@ export class MidyGMLite extends EventTarget {
1590
1618
  if (!(0 <= scheduleTime))
1591
1619
  scheduleTime = this.audioContext.currentTime;
1592
1620
  this.mode = "GM1";
1593
- for (let i = 0; i < channels.length; i++) {
1594
- this.allSoundOff(i, 0, scheduleTime);
1595
- const channel = channels[i];
1621
+ for (let ch = 0; ch < channels.length; ch++) {
1622
+ this.allSoundOff(ch, 0, scheduleTime);
1623
+ const channel = channels[ch];
1596
1624
  channel.isDrum = false;
1597
1625
  }
1598
1626
  channels[9].isDrum = true;
package/esm/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
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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"}