@marmooo/midy 0.2.5 → 0.2.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.
@@ -66,6 +66,12 @@ class Note {
66
66
  writable: true,
67
67
  value: void 0
68
68
  });
69
+ Object.defineProperty(this, "filterDepth", {
70
+ enumerable: true,
71
+ configurable: true,
72
+ writable: true,
73
+ value: void 0
74
+ });
69
75
  Object.defineProperty(this, "volumeEnvelopeNode", {
70
76
  enumerable: true,
71
77
  configurable: true,
@@ -397,31 +403,32 @@ export class MidyGMLite {
397
403
  const event = this.timeline[queueIndex];
398
404
  if (event.startTime > t + this.lookAhead)
399
405
  break;
406
+ const startTime = event.startTime + this.startDelay - offset;
400
407
  switch (event.type) {
401
408
  case "noteOn":
402
409
  if (event.velocity !== 0) {
403
- await this.scheduleNoteOn(event.channel, event.noteNumber, event.velocity, event.startTime + this.startDelay - offset);
410
+ await this.scheduleNoteOn(event.channel, event.noteNumber, event.velocity, startTime);
404
411
  break;
405
412
  }
406
413
  /* falls through */
407
414
  case "noteOff": {
408
- const notePromise = this.scheduleNoteRelease(event.channel, event.noteNumber, event.velocity, event.startTime + this.startDelay - offset);
415
+ const notePromise = this.scheduleNoteRelease(event.channel, event.noteNumber, event.velocity, startTime);
409
416
  if (notePromise) {
410
417
  this.notePromises.push(notePromise);
411
418
  }
412
419
  break;
413
420
  }
414
421
  case "controller":
415
- this.handleControlChange(event.channel, event.controllerType, event.value);
422
+ this.handleControlChange(event.channel, event.controllerType, event.value, startTime);
416
423
  break;
417
424
  case "programChange":
418
- this.handleProgramChange(event.channel, event.programNumber);
425
+ this.handleProgramChange(event.channel, event.programNumber, startTime);
419
426
  break;
420
427
  case "pitchBend":
421
- this.setPitchBend(event.channel, event.value + 8192);
428
+ this.setPitchBend(event.channel, event.value + 8192, startTime);
422
429
  break;
423
430
  case "sysEx":
424
- this.handleSysEx(event.data);
431
+ this.handleSysEx(event.data, startTime);
425
432
  }
426
433
  queueIndex++;
427
434
  }
@@ -631,6 +638,18 @@ export class MidyGMLite {
631
638
  const now = this.audioContext.currentTime;
632
639
  return this.resumeTime + now - this.startTime - this.startDelay;
633
640
  }
641
+ processScheduledNotes(channel, scheduleTime, callback) {
642
+ channel.scheduledNotes.forEach((noteList) => {
643
+ for (let i = 0; i < noteList.length; i++) {
644
+ const note = noteList[i];
645
+ if (!note)
646
+ continue;
647
+ if (scheduleTime < note.startTime)
648
+ continue;
649
+ callback(note);
650
+ }
651
+ });
652
+ }
634
653
  getActiveNotes(channel, time) {
635
654
  const activeNotes = new SparseMap(128);
636
655
  channel.scheduledNotes.forEach((noteList) => {
@@ -702,20 +721,20 @@ export class MidyGMLite {
702
721
  .setValueAtTime(attackVolume, volHold)
703
722
  .linearRampToValueAtTime(sustainVolume, volDecay);
704
723
  }
705
- setPitchEnvelope(note) {
706
- const now = this.audioContext.currentTime;
724
+ setPitchEnvelope(note, scheduleTime) {
725
+ scheduleTime ??= this.audioContext.currentTime;
707
726
  const { voiceParams } = note;
708
727
  const baseRate = voiceParams.playbackRate;
709
728
  note.bufferSource.playbackRate
710
- .cancelScheduledValues(now)
711
- .setValueAtTime(baseRate, now);
729
+ .cancelScheduledValues(scheduleTime)
730
+ .setValueAtTime(baseRate, scheduleTime);
712
731
  const modEnvToPitch = voiceParams.modEnvToPitch;
713
732
  if (modEnvToPitch === 0)
714
733
  return;
715
734
  const basePitch = this.rateToCent(baseRate);
716
735
  const peekPitch = basePitch + modEnvToPitch;
717
736
  const peekRate = this.centToRate(peekPitch);
718
- const modDelay = startTime + voiceParams.modDelay;
737
+ const modDelay = note.startTime + voiceParams.modDelay;
719
738
  const modAttack = modDelay + voiceParams.modAttack;
720
739
  const modHold = modAttack + voiceParams.modHold;
721
740
  const modDecay = modHold + voiceParams.modDecay;
@@ -1092,10 +1111,10 @@ export class MidyGMLite {
1092
1111
  123: this.allNotesOff,
1093
1112
  };
1094
1113
  }
1095
- handleControlChange(channelNumber, controllerType, value) {
1114
+ handleControlChange(channelNumber, controllerType, value, startTime) {
1096
1115
  const handler = this.controlChangeHandlers[controllerType];
1097
1116
  if (handler) {
1098
- handler.call(this, channelNumber, value);
1117
+ handler.call(this, channelNumber, value, startTime);
1099
1118
  const channel = this.channels[channelNumber];
1100
1119
  this.applyVoiceParams(channel, controllerType + 128);
1101
1120
  }
@@ -1103,33 +1122,28 @@ export class MidyGMLite {
1103
1122
  console.warn(`Unsupported Control change: controllerType=${controllerType} value=${value}`);
1104
1123
  }
1105
1124
  }
1106
- updateModulation(channel) {
1107
- const now = this.audioContext.currentTime;
1125
+ updateModulation(channel, scheduleTime) {
1126
+ scheduleTime ??= this.audioContext.currentTime;
1108
1127
  const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1109
- channel.scheduledNotes.forEach((noteList) => {
1110
- for (let i = 0; i < noteList.length; i++) {
1111
- const note = noteList[i];
1112
- if (!note)
1113
- continue;
1114
- if (note.modulationDepth) {
1115
- note.modulationDepth.gain.setValueAtTime(depth, now);
1116
- }
1117
- else {
1118
- this.setPitchEnvelope(note);
1119
- this.startModulation(channel, note, now);
1120
- }
1128
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
1129
+ if (note.modulationDepth) {
1130
+ note.modulationDepth.gain.setValueAtTime(depth, scheduleTime);
1131
+ }
1132
+ else {
1133
+ this.setPitchEnvelope(note, scheduleTime);
1134
+ this.startModulation(channel, note, scheduleTime);
1121
1135
  }
1122
1136
  });
1123
1137
  }
1124
- setModulationDepth(channelNumber, modulation) {
1138
+ setModulationDepth(channelNumber, modulation, scheduleTime) {
1125
1139
  const channel = this.channels[channelNumber];
1126
1140
  channel.state.modulationDepth = modulation / 127;
1127
- this.updateModulation(channel);
1141
+ this.updateModulation(channel, scheduleTime);
1128
1142
  }
1129
- setVolume(channelNumber, volume) {
1143
+ setVolume(channelNumber, volume, scheduleTime) {
1130
1144
  const channel = this.channels[channelNumber];
1131
1145
  channel.state.volume = volume / 127;
1132
- this.updateChannelVolume(channel);
1146
+ this.updateChannelVolume(channel, scheduleTime);
1133
1147
  }
1134
1148
  panToGain(pan) {
1135
1149
  const theta = Math.PI / 2 * Math.max(0, pan * 127 - 1) / 126;
@@ -1138,31 +1152,31 @@ export class MidyGMLite {
1138
1152
  gainRight: Math.sin(theta),
1139
1153
  };
1140
1154
  }
1141
- setPan(channelNumber, pan) {
1155
+ setPan(channelNumber, pan, scheduleTime) {
1142
1156
  const channel = this.channels[channelNumber];
1143
1157
  channel.state.pan = pan / 127;
1144
- this.updateChannelVolume(channel);
1158
+ this.updateChannelVolume(channel, scheduleTime);
1145
1159
  }
1146
- setExpression(channelNumber, expression) {
1160
+ setExpression(channelNumber, expression, scheduleTime) {
1147
1161
  const channel = this.channels[channelNumber];
1148
1162
  channel.state.expression = expression / 127;
1149
- this.updateChannelVolume(channel);
1163
+ this.updateChannelVolume(channel, scheduleTime);
1150
1164
  }
1151
1165
  dataEntryLSB(channelNumber, value) {
1152
1166
  this.channels[channelNumber].dataLSB = value;
1153
1167
  this.handleRPN(channelNumber);
1154
1168
  }
1155
- updateChannelVolume(channel) {
1156
- const now = this.audioContext.currentTime;
1169
+ updateChannelVolume(channel, scheduleTime) {
1170
+ scheduleTime ??= this.audioContext.currentTime;
1157
1171
  const state = channel.state;
1158
1172
  const volume = state.volume * state.expression;
1159
1173
  const { gainLeft, gainRight } = this.panToGain(state.pan);
1160
1174
  channel.gainL.gain
1161
1175
  .cancelScheduledValues(now)
1162
- .setValueAtTime(volume * gainLeft, now);
1176
+ .setValueAtTime(volume * gainLeft, scheduleTime);
1163
1177
  channel.gainR.gain
1164
1178
  .cancelScheduledValues(now)
1165
- .setValueAtTime(volume * gainRight, now);
1179
+ .setValueAtTime(volume * gainRight, scheduleTime);
1166
1180
  }
1167
1181
  setSustainPedal(channelNumber, value) {
1168
1182
  this.channels[channelNumber].state.sustainPedal = value / 127;
package/esm/midy.d.ts CHANGED
@@ -2,10 +2,6 @@ export class Midy {
2
2
  static channelSettings: {
3
3
  currentBufferSource: null;
4
4
  detune: number;
5
- scaleOctaveTuningTable: Float32Array<ArrayBuffer>;
6
- channelPressureTable: Uint8Array<ArrayBuffer>;
7
- polyphonicKeyPressureTable: Uint8Array<ArrayBuffer>;
8
- keyBasedInstrumentControlTable: Int8Array<ArrayBuffer>;
9
5
  program: number;
10
6
  bank: number;
11
7
  bankMSB: number;
@@ -87,12 +83,12 @@ export class Midy {
87
83
  };
88
84
  controlChangeHandlers: {
89
85
  0: (channelNumber: any, msb: any) => void;
90
- 1: (channelNumber: any, modulation: any) => void;
86
+ 1: (channelNumber: any, modulation: any, scheduleTime: any) => void;
91
87
  5: (channelNumber: any, portamentoTime: any) => void;
92
88
  6: (channelNumber: any, value: any) => void;
93
- 7: (channelNumber: any, volume: any) => void;
94
- 10: (channelNumber: any, pan: any) => void;
95
- 11: (channelNumber: any, expression: any) => void;
89
+ 7: (channelNumber: any, volume: any, scheduleTime: any) => void;
90
+ 10: (channelNumber: any, pan: any, scheduleTime: any) => void;
91
+ 11: (channelNumber: any, expression: any, scheduleTime: any) => void;
96
92
  32: (channelNumber: any, lsb: any) => void;
97
93
  38: (channelNumber: any, value: any) => void;
98
94
  64: (channelNumber: any, value: any) => void;
@@ -167,6 +163,7 @@ export class Midy {
167
163
  seekTo(second: any): void;
168
164
  calcTotalTime(): number;
169
165
  currentTime(): number;
166
+ processScheduledNotes(channel: any, scheduleTime: any, callback: any): void;
170
167
  getActiveNotes(channel: any, time: any): SparseMap;
171
168
  getActiveNote(noteList: any, time: any): any;
172
169
  createConvolutionReverbImpulse(audioContext: any, decay: any, preDecay: any): any;
@@ -198,14 +195,14 @@ export class Midy {
198
195
  calcChannelDetune(channel: any): any;
199
196
  calcNoteDetune(channel: any, note: any): any;
200
197
  updateChannelDetune(channel: any): void;
201
- updateDetune(channel: any, note: any, pressure: any): void;
198
+ updateDetune(channel: any, note: any): void;
202
199
  getPortamentoTime(channel: any): number;
203
200
  setPortamentoStartVolumeEnvelope(channel: any, note: any): void;
204
- setVolumeEnvelope(channel: any, note: any, pressure: any): void;
205
- setPitchEnvelope(note: any): void;
201
+ setVolumeEnvelope(channel: any, note: any): void;
202
+ setPitchEnvelope(note: any, scheduleTime: any): void;
206
203
  clampCutoffFrequency(frequency: any): number;
207
204
  setPortamentoStartFilterEnvelope(channel: any, note: any): void;
208
- setFilterEnvelope(channel: any, note: any, pressure: any): void;
205
+ setFilterEnvelope(channel: any, note: any): void;
209
206
  startModulation(channel: any, note: any, startTime: any): void;
210
207
  startVibrato(channel: any, note: any, startTime: any): void;
211
208
  getAudioBuffer(program: any, noteNumber: any, velocity: any, voiceParams: any, isSF3: any): Promise<any>;
@@ -219,15 +216,15 @@ export class Midy {
219
216
  releaseSustainPedal(channelNumber: any, halfVelocity: any): any[];
220
217
  releaseSostenutoPedal(channelNumber: any, halfVelocity: any): any[];
221
218
  handleMIDIMessage(statusByte: any, data1: any, data2: any): void | Promise<any>;
222
- handlePolyphonicKeyPressure(channelNumber: any, noteNumber: any, pressure: any): void;
219
+ handlePolyphonicKeyPressure(channelNumber: any, noteNumber: any, pressure: any, startTime: any): void;
223
220
  handleProgramChange(channelNumber: any, program: any): void;
224
- handleChannelPressure(channelNumber: any, value: any): void;
221
+ handleChannelPressure(channelNumber: any, value: any, startTime: any): void;
225
222
  handlePitchBendMessage(channelNumber: any, lsb: any, msb: any): void;
226
223
  setPitchBend(channelNumber: any, value: any): void;
227
- setModLfoToPitch(channel: any, note: any, pressure: any): void;
224
+ setModLfoToPitch(channel: any, note: any): void;
228
225
  setVibLfoToPitch(channel: any, note: any): void;
229
- setModLfoToFilterFc(note: any, pressure: any): void;
230
- setModLfoToVolume(note: any, pressure: any): void;
226
+ setModLfoToFilterFc(channel: any, note: any): void;
227
+ setModLfoToVolume(channel: any, note: any): void;
231
228
  setReverbEffectsSend(channel: any, note: any, prevValue: any): void;
232
229
  setChorusEffectsSend(channel: any, note: any, prevValue: any): void;
233
230
  setDelayModLFO(note: any): void;
@@ -249,12 +246,12 @@ export class Midy {
249
246
  applyVoiceParams(channel: any, controllerType: any): void;
250
247
  createControlChangeHandlers(): {
251
248
  0: (channelNumber: any, msb: any) => void;
252
- 1: (channelNumber: any, modulation: any) => void;
249
+ 1: (channelNumber: any, modulation: any, scheduleTime: any) => void;
253
250
  5: (channelNumber: any, portamentoTime: any) => void;
254
251
  6: (channelNumber: any, value: any) => void;
255
- 7: (channelNumber: any, volume: any) => void;
256
- 10: (channelNumber: any, pan: any) => void;
257
- 11: (channelNumber: any, expression: any) => void;
252
+ 7: (channelNumber: any, volume: any, scheduleTime: any) => void;
253
+ 10: (channelNumber: any, pan: any, scheduleTime: any) => void;
254
+ 11: (channelNumber: any, expression: any, scheduleTime: any) => void;
258
255
  32: (channelNumber: any, lsb: any) => void;
259
256
  38: (channelNumber: any, value: any) => void;
260
257
  64: (channelNumber: any, value: any) => void;
@@ -283,20 +280,20 @@ export class Midy {
283
280
  126: () => void;
284
281
  127: () => void;
285
282
  };
286
- handleControlChange(channelNumber: any, controllerType: any, value: any): void;
283
+ handleControlChange(channelNumber: any, controllerType: any, value: any, startTime: any): void;
287
284
  setBankMSB(channelNumber: any, msb: any): void;
288
- updateModulation(channel: any): void;
289
- setModulationDepth(channelNumber: any, modulation: any): void;
285
+ updateModulation(channel: any, scheduleTime: any): void;
286
+ setModulationDepth(channelNumber: any, modulation: any, scheduleTime: any): void;
290
287
  setPortamentoTime(channelNumber: any, portamentoTime: any): void;
291
- setKeyBasedVolume(channel: any): void;
292
- setVolume(channelNumber: any, volume: any): void;
288
+ setKeyBasedVolume(channel: any, scheduleTime: any): void;
289
+ setVolume(channelNumber: any, volume: any, scheduleTime: any): void;
293
290
  panToGain(pan: any): {
294
291
  gainLeft: number;
295
292
  gainRight: number;
296
293
  };
297
- setKeyBasedPan(channel: any): void;
298
- setPan(channelNumber: any, pan: any): void;
299
- setExpression(channelNumber: any, expression: any): void;
294
+ setKeyBasedPan(channel: any, scheduleTime: any): void;
295
+ setPan(channelNumber: any, pan: any, scheduleTime: any): void;
296
+ setExpression(channelNumber: any, expression: any, scheduleTime: any): void;
300
297
  setBankLSB(channelNumber: any, lsb: any): void;
301
298
  dataEntryLSB(channelNumber: any, value: any): void;
302
299
  updateChannelVolume(channel: any): void;
@@ -368,7 +365,13 @@ export class Midy {
368
365
  getChannelBitmap(data: any): any[];
369
366
  handleScaleOctaveTuning1ByteFormatSysEx(data: any, realtime: any): void;
370
367
  handleScaleOctaveTuning2ByteFormatSysEx(data: any, realtime: any): void;
371
- applyDestinationSettings(channel: any, note: any, table: any): void;
368
+ getPitchControl(channel: any, note: any): number;
369
+ getFilterCutoffControl(channel: any, note: any): number;
370
+ getAmplitudeControl(channel: any, note: any): number;
371
+ getLFOPitchDepth(channel: any, note: any): number;
372
+ getLFOFilterDepth(channel: any, note: any): number;
373
+ getLFOAmplitudeDepth(channel: any, note: any): number;
374
+ setControllerParameters(channel: any, note: any, table: any): void;
372
375
  handleChannelPressureSysEx(data: any, tableName: any): void;
373
376
  initControlTable(): Uint8Array<ArrayBuffer>;
374
377
  applyControlTable(channel: any, controllerType: any): void;
@@ -396,11 +399,12 @@ declare class Note {
396
399
  constructor(noteNumber: any, velocity: any, startTime: any, voice: any, voiceParams: any);
397
400
  bufferSource: any;
398
401
  filterNode: any;
402
+ filterDepth: any;
399
403
  volumeEnvelopeNode: any;
404
+ volumeDepth: any;
400
405
  volumeNode: any;
401
406
  gainL: any;
402
407
  gainR: any;
403
- volumeDepth: any;
404
408
  modulationLFO: any;
405
409
  modulationDepth: any;
406
410
  vibratoLFO: any;
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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"}