@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.
@@ -69,6 +69,12 @@ class Note {
69
69
  writable: true,
70
70
  value: void 0
71
71
  });
72
+ Object.defineProperty(this, "filterDepth", {
73
+ enumerable: true,
74
+ configurable: true,
75
+ writable: true,
76
+ value: void 0
77
+ });
72
78
  Object.defineProperty(this, "volumeEnvelopeNode", {
73
79
  enumerable: true,
74
80
  configurable: true,
@@ -400,31 +406,32 @@ class MidyGMLite {
400
406
  const event = this.timeline[queueIndex];
401
407
  if (event.startTime > t + this.lookAhead)
402
408
  break;
409
+ const startTime = event.startTime + this.startDelay - offset;
403
410
  switch (event.type) {
404
411
  case "noteOn":
405
412
  if (event.velocity !== 0) {
406
- await this.scheduleNoteOn(event.channel, event.noteNumber, event.velocity, event.startTime + this.startDelay - offset);
413
+ await this.scheduleNoteOn(event.channel, event.noteNumber, event.velocity, startTime);
407
414
  break;
408
415
  }
409
416
  /* falls through */
410
417
  case "noteOff": {
411
- const notePromise = this.scheduleNoteRelease(event.channel, event.noteNumber, event.velocity, event.startTime + this.startDelay - offset);
418
+ const notePromise = this.scheduleNoteRelease(event.channel, event.noteNumber, event.velocity, startTime);
412
419
  if (notePromise) {
413
420
  this.notePromises.push(notePromise);
414
421
  }
415
422
  break;
416
423
  }
417
424
  case "controller":
418
- this.handleControlChange(event.channel, event.controllerType, event.value);
425
+ this.handleControlChange(event.channel, event.controllerType, event.value, startTime);
419
426
  break;
420
427
  case "programChange":
421
- this.handleProgramChange(event.channel, event.programNumber);
428
+ this.handleProgramChange(event.channel, event.programNumber, startTime);
422
429
  break;
423
430
  case "pitchBend":
424
- this.setPitchBend(event.channel, event.value + 8192);
431
+ this.setPitchBend(event.channel, event.value + 8192, startTime);
425
432
  break;
426
433
  case "sysEx":
427
- this.handleSysEx(event.data);
434
+ this.handleSysEx(event.data, startTime);
428
435
  }
429
436
  queueIndex++;
430
437
  }
@@ -634,6 +641,18 @@ class MidyGMLite {
634
641
  const now = this.audioContext.currentTime;
635
642
  return this.resumeTime + now - this.startTime - this.startDelay;
636
643
  }
644
+ processScheduledNotes(channel, scheduleTime, callback) {
645
+ channel.scheduledNotes.forEach((noteList) => {
646
+ for (let i = 0; i < noteList.length; i++) {
647
+ const note = noteList[i];
648
+ if (!note)
649
+ continue;
650
+ if (scheduleTime < note.startTime)
651
+ continue;
652
+ callback(note);
653
+ }
654
+ });
655
+ }
637
656
  getActiveNotes(channel, time) {
638
657
  const activeNotes = new SparseMap(128);
639
658
  channel.scheduledNotes.forEach((noteList) => {
@@ -705,20 +724,20 @@ class MidyGMLite {
705
724
  .setValueAtTime(attackVolume, volHold)
706
725
  .linearRampToValueAtTime(sustainVolume, volDecay);
707
726
  }
708
- setPitchEnvelope(note) {
709
- const now = this.audioContext.currentTime;
727
+ setPitchEnvelope(note, scheduleTime) {
728
+ scheduleTime ??= this.audioContext.currentTime;
710
729
  const { voiceParams } = note;
711
730
  const baseRate = voiceParams.playbackRate;
712
731
  note.bufferSource.playbackRate
713
- .cancelScheduledValues(now)
714
- .setValueAtTime(baseRate, now);
732
+ .cancelScheduledValues(scheduleTime)
733
+ .setValueAtTime(baseRate, scheduleTime);
715
734
  const modEnvToPitch = voiceParams.modEnvToPitch;
716
735
  if (modEnvToPitch === 0)
717
736
  return;
718
737
  const basePitch = this.rateToCent(baseRate);
719
738
  const peekPitch = basePitch + modEnvToPitch;
720
739
  const peekRate = this.centToRate(peekPitch);
721
- const modDelay = startTime + voiceParams.modDelay;
740
+ const modDelay = note.startTime + voiceParams.modDelay;
722
741
  const modAttack = modDelay + voiceParams.modAttack;
723
742
  const modHold = modAttack + voiceParams.modHold;
724
743
  const modDecay = modHold + voiceParams.modDecay;
@@ -1095,10 +1114,10 @@ class MidyGMLite {
1095
1114
  123: this.allNotesOff,
1096
1115
  };
1097
1116
  }
1098
- handleControlChange(channelNumber, controllerType, value) {
1117
+ handleControlChange(channelNumber, controllerType, value, startTime) {
1099
1118
  const handler = this.controlChangeHandlers[controllerType];
1100
1119
  if (handler) {
1101
- handler.call(this, channelNumber, value);
1120
+ handler.call(this, channelNumber, value, startTime);
1102
1121
  const channel = this.channels[channelNumber];
1103
1122
  this.applyVoiceParams(channel, controllerType + 128);
1104
1123
  }
@@ -1106,33 +1125,28 @@ class MidyGMLite {
1106
1125
  console.warn(`Unsupported Control change: controllerType=${controllerType} value=${value}`);
1107
1126
  }
1108
1127
  }
1109
- updateModulation(channel) {
1110
- const now = this.audioContext.currentTime;
1128
+ updateModulation(channel, scheduleTime) {
1129
+ scheduleTime ??= this.audioContext.currentTime;
1111
1130
  const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1112
- channel.scheduledNotes.forEach((noteList) => {
1113
- for (let i = 0; i < noteList.length; i++) {
1114
- const note = noteList[i];
1115
- if (!note)
1116
- continue;
1117
- if (note.modulationDepth) {
1118
- note.modulationDepth.gain.setValueAtTime(depth, now);
1119
- }
1120
- else {
1121
- this.setPitchEnvelope(note);
1122
- this.startModulation(channel, note, now);
1123
- }
1131
+ this.processScheduledNotes(channel, scheduleTime, (note) => {
1132
+ if (note.modulationDepth) {
1133
+ note.modulationDepth.gain.setValueAtTime(depth, scheduleTime);
1134
+ }
1135
+ else {
1136
+ this.setPitchEnvelope(note, scheduleTime);
1137
+ this.startModulation(channel, note, scheduleTime);
1124
1138
  }
1125
1139
  });
1126
1140
  }
1127
- setModulationDepth(channelNumber, modulation) {
1141
+ setModulationDepth(channelNumber, modulation, scheduleTime) {
1128
1142
  const channel = this.channels[channelNumber];
1129
1143
  channel.state.modulationDepth = modulation / 127;
1130
- this.updateModulation(channel);
1144
+ this.updateModulation(channel, scheduleTime);
1131
1145
  }
1132
- setVolume(channelNumber, volume) {
1146
+ setVolume(channelNumber, volume, scheduleTime) {
1133
1147
  const channel = this.channels[channelNumber];
1134
1148
  channel.state.volume = volume / 127;
1135
- this.updateChannelVolume(channel);
1149
+ this.updateChannelVolume(channel, scheduleTime);
1136
1150
  }
1137
1151
  panToGain(pan) {
1138
1152
  const theta = Math.PI / 2 * Math.max(0, pan * 127 - 1) / 126;
@@ -1141,31 +1155,31 @@ class MidyGMLite {
1141
1155
  gainRight: Math.sin(theta),
1142
1156
  };
1143
1157
  }
1144
- setPan(channelNumber, pan) {
1158
+ setPan(channelNumber, pan, scheduleTime) {
1145
1159
  const channel = this.channels[channelNumber];
1146
1160
  channel.state.pan = pan / 127;
1147
- this.updateChannelVolume(channel);
1161
+ this.updateChannelVolume(channel, scheduleTime);
1148
1162
  }
1149
- setExpression(channelNumber, expression) {
1163
+ setExpression(channelNumber, expression, scheduleTime) {
1150
1164
  const channel = this.channels[channelNumber];
1151
1165
  channel.state.expression = expression / 127;
1152
- this.updateChannelVolume(channel);
1166
+ this.updateChannelVolume(channel, scheduleTime);
1153
1167
  }
1154
1168
  dataEntryLSB(channelNumber, value) {
1155
1169
  this.channels[channelNumber].dataLSB = value;
1156
1170
  this.handleRPN(channelNumber);
1157
1171
  }
1158
- updateChannelVolume(channel) {
1159
- const now = this.audioContext.currentTime;
1172
+ updateChannelVolume(channel, scheduleTime) {
1173
+ scheduleTime ??= this.audioContext.currentTime;
1160
1174
  const state = channel.state;
1161
1175
  const volume = state.volume * state.expression;
1162
1176
  const { gainLeft, gainRight } = this.panToGain(state.pan);
1163
1177
  channel.gainL.gain
1164
1178
  .cancelScheduledValues(now)
1165
- .setValueAtTime(volume * gainLeft, now);
1179
+ .setValueAtTime(volume * gainLeft, scheduleTime);
1166
1180
  channel.gainR.gain
1167
1181
  .cancelScheduledValues(now)
1168
- .setValueAtTime(volume * gainRight, now);
1182
+ .setValueAtTime(volume * gainRight, scheduleTime);
1169
1183
  }
1170
1184
  setSustainPedal(channelNumber, value) {
1171
1185
  this.channels[channelNumber].state.sustainPedal = value / 127;
package/script/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;
@@ -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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"}