@marmooo/midy 0.2.7 → 0.2.8

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.
@@ -355,6 +355,7 @@ export class MidyGMLite {
355
355
  state: new ControllerState(),
356
356
  ...this.setChannelAudioNodes(audioContext),
357
357
  scheduledNotes: new SparseMap(128),
358
+ sustainNotes: [],
358
359
  };
359
360
  });
360
361
  return channels;
@@ -412,7 +413,7 @@ export class MidyGMLite {
412
413
  }
413
414
  /* falls through */
414
415
  case "noteOff": {
415
- const notePromise = this.scheduleNoteOff(event.channel, event.noteNumber, event.velocity, startTime);
416
+ const notePromise = this.scheduleNoteOff(event.channel, event.noteNumber, event.velocity, startTime, false);
416
417
  if (notePromise) {
417
418
  this.notePromises.push(notePromise);
418
419
  }
@@ -576,15 +577,10 @@ export class MidyGMLite {
576
577
  stopChannelNotes(channelNumber, velocity, force, scheduleTime) {
577
578
  const channel = this.channels[channelNumber];
578
579
  const promises = [];
579
- channel.scheduledNotes.forEach((noteList) => {
580
- for (let i = 0; i < noteList.length; i++) {
581
- const note = noteList[i];
582
- if (!note)
583
- continue;
584
- const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force);
585
- this.notePromises.push(promise);
586
- promises.push(promise);
587
- }
580
+ this.processScheduledNotes(channel, (note) => {
581
+ const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force);
582
+ this.notePromises.push(promise);
583
+ promises.push(promise);
588
584
  });
589
585
  channel.scheduledNotes.clear();
590
586
  return Promise.all(promises);
@@ -640,14 +636,12 @@ export class MidyGMLite {
640
636
  const now = this.audioContext.currentTime;
641
637
  return this.resumeTime + now - this.startTime - this.startDelay;
642
638
  }
643
- processScheduledNotes(channel, scheduleTime, callback) {
639
+ processScheduledNotes(channel, callback) {
644
640
  channel.scheduledNotes.forEach((noteList) => {
645
641
  for (let i = 0; i < noteList.length; i++) {
646
642
  const note = noteList[i];
647
643
  if (!note)
648
644
  continue;
649
- if (scheduleTime < note.startTime)
650
- continue;
651
645
  callback(note);
652
646
  }
653
647
  });
@@ -691,7 +685,7 @@ export class MidyGMLite {
691
685
  return pitchWheel * pitchWheelSensitivity;
692
686
  }
693
687
  updateChannelDetune(channel, scheduleTime) {
694
- this.processScheduledNotes(channel, scheduleTime, (note) => {
688
+ this.processScheduledNotes(channel, (note) => {
695
689
  this.updateDetune(channel, note, scheduleTime);
696
690
  });
697
691
  }
@@ -840,6 +834,9 @@ export class MidyGMLite {
840
834
  const note = await this.createNote(channel, voice, noteNumber, velocity, startTime, isSF3);
841
835
  note.volumeEnvelopeNode.connect(channel.gainL);
842
836
  note.volumeEnvelopeNode.connect(channel.gainR);
837
+ if (0.5 <= channel.state.sustainPedal) {
838
+ channel.sustainNotes.push(note);
839
+ }
843
840
  const exclusiveClass = note.voiceParams.exclusiveClass;
844
841
  if (exclusiveClass !== 0) {
845
842
  if (this.exclusiveClassMap.has(exclusiveClass)) {
@@ -847,8 +844,7 @@ export class MidyGMLite {
847
844
  const [prevNote, prevChannelNumber] = prevEntry;
848
845
  if (!prevNote.ending) {
849
846
  this.scheduleNoteOff(prevChannelNumber, prevNote.noteNumber, 0, // velocity,
850
- startTime, undefined, // portamentoNoteNumber
851
- true);
847
+ startTime, true);
852
848
  }
853
849
  }
854
850
  this.exclusiveClassMap.set(exclusiveClass, [note, channelNumber]);
@@ -892,7 +888,7 @@ export class MidyGMLite {
892
888
  }
893
889
  scheduleNoteOff(channelNumber, noteNumber, _velocity, endTime, force) {
894
890
  const channel = this.channels[channelNumber];
895
- if (!force && 0.5 < channel.state.sustainPedal)
891
+ if (!force && 0.5 <= channel.state.sustainPedal)
896
892
  return;
897
893
  if (!channel.scheduledNotes.has(noteNumber))
898
894
  return;
@@ -920,11 +916,11 @@ export class MidyGMLite {
920
916
  const velocity = halfVelocity * 2;
921
917
  const channel = this.channels[channelNumber];
922
918
  const promises = [];
923
- this.processScheduledNotes(channel, scheduleTime, (note) => {
924
- const { noteNumber } = note;
925
- const promise = this.noteOff(channelNumber, noteNumber, velocity);
919
+ for (let i = 0; i < channel.sustainNotes.length; i++) {
920
+ const promise = this.noteOff(channelNumber, channel.sustainNotes[i].noteNumber, velocity, scheduleTime);
926
921
  promises.push(promise);
927
- });
922
+ }
923
+ channel.sustainNotes = [];
928
924
  return promises;
929
925
  }
930
926
  handleMIDIMessage(statusByte, data1, data2, scheduleTime) {
@@ -1035,48 +1031,43 @@ export class MidyGMLite {
1035
1031
  return state;
1036
1032
  }
1037
1033
  applyVoiceParams(channel, controllerType, scheduleTime) {
1038
- channel.scheduledNotes.forEach((noteList) => {
1039
- for (let i = 0; i < noteList.length; i++) {
1040
- const note = noteList[i];
1041
- if (!note)
1034
+ this.processScheduledNotes(channel, (note) => {
1035
+ const controllerState = this.getControllerState(channel, note.noteNumber, note.velocity);
1036
+ const voiceParams = note.voice.getParams(controllerType, controllerState);
1037
+ let appliedFilterEnvelope = false;
1038
+ let appliedVolumeEnvelope = false;
1039
+ for (const [key, value] of Object.entries(voiceParams)) {
1040
+ const prevValue = note.voiceParams[key];
1041
+ if (value === prevValue)
1042
1042
  continue;
1043
- const controllerState = this.getControllerState(channel, note.noteNumber, note.velocity);
1044
- const voiceParams = note.voice.getParams(controllerType, controllerState);
1045
- let appliedFilterEnvelope = false;
1046
- let appliedVolumeEnvelope = false;
1047
- for (const [key, value] of Object.entries(voiceParams)) {
1048
- const prevValue = note.voiceParams[key];
1049
- if (value === prevValue)
1043
+ note.voiceParams[key] = value;
1044
+ if (key in this.voiceParamsHandlers) {
1045
+ this.voiceParamsHandlers[key](channel, note, prevValue, scheduleTime);
1046
+ }
1047
+ else if (filterEnvelopeKeySet.has(key)) {
1048
+ if (appliedFilterEnvelope)
1050
1049
  continue;
1051
- note.voiceParams[key] = value;
1052
- if (key in this.voiceParamsHandlers) {
1053
- this.voiceParamsHandlers[key](channel, note, prevValue, scheduleTime);
1054
- }
1055
- else if (filterEnvelopeKeySet.has(key)) {
1056
- if (appliedFilterEnvelope)
1057
- continue;
1058
- appliedFilterEnvelope = true;
1059
- const noteVoiceParams = note.voiceParams;
1060
- for (let i = 0; i < filterEnvelopeKeys.length; i++) {
1061
- const key = filterEnvelopeKeys[i];
1062
- if (key in voiceParams)
1063
- noteVoiceParams[key] = voiceParams[key];
1064
- }
1065
- this.setFilterEnvelope(note, scheduleTime);
1066
- this.setPitchEnvelope(note, scheduleTime);
1050
+ appliedFilterEnvelope = true;
1051
+ const noteVoiceParams = note.voiceParams;
1052
+ for (let i = 0; i < filterEnvelopeKeys.length; i++) {
1053
+ const key = filterEnvelopeKeys[i];
1054
+ if (key in voiceParams)
1055
+ noteVoiceParams[key] = voiceParams[key];
1067
1056
  }
1068
- else if (volumeEnvelopeKeySet.has(key)) {
1069
- if (appliedVolumeEnvelope)
1070
- continue;
1071
- appliedVolumeEnvelope = true;
1072
- const noteVoiceParams = note.voiceParams;
1073
- for (let i = 0; i < volumeEnvelopeKeys.length; i++) {
1074
- const key = volumeEnvelopeKeys[i];
1075
- if (key in voiceParams)
1076
- noteVoiceParams[key] = voiceParams[key];
1077
- }
1078
- this.setVolumeEnvelope(channel, note, scheduleTime);
1057
+ this.setFilterEnvelope(note, scheduleTime);
1058
+ this.setPitchEnvelope(note, scheduleTime);
1059
+ }
1060
+ else if (volumeEnvelopeKeySet.has(key)) {
1061
+ if (appliedVolumeEnvelope)
1062
+ continue;
1063
+ appliedVolumeEnvelope = true;
1064
+ const noteVoiceParams = note.voiceParams;
1065
+ for (let i = 0; i < volumeEnvelopeKeys.length; i++) {
1066
+ const key = volumeEnvelopeKeys[i];
1067
+ if (key in voiceParams)
1068
+ noteVoiceParams[key] = voiceParams[key];
1079
1069
  }
1070
+ this.setVolumeEnvelope(note, scheduleTime);
1080
1071
  }
1081
1072
  }
1082
1073
  });
@@ -1111,7 +1102,7 @@ export class MidyGMLite {
1111
1102
  updateModulation(channel, scheduleTime) {
1112
1103
  scheduleTime ??= this.audioContext.currentTime;
1113
1104
  const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1114
- this.processScheduledNotes(channel, scheduleTime, (note) => {
1105
+ this.processScheduledNotes(channel, (note) => {
1115
1106
  if (note.modulationDepth) {
1116
1107
  note.modulationDepth.gain.setValueAtTime(depth, scheduleTime);
1117
1108
  }
@@ -1122,11 +1113,13 @@ export class MidyGMLite {
1122
1113
  });
1123
1114
  }
1124
1115
  setModulationDepth(channelNumber, modulation, scheduleTime) {
1116
+ scheduleTime ??= this.audioContext.currentTime;
1125
1117
  const channel = this.channels[channelNumber];
1126
1118
  channel.state.modulationDepth = modulation / 127;
1127
1119
  this.updateModulation(channel, scheduleTime);
1128
1120
  }
1129
1121
  setVolume(channelNumber, volume, scheduleTime) {
1122
+ scheduleTime ??= this.audioContext.currentTime;
1130
1123
  const channel = this.channels[channelNumber];
1131
1124
  channel.state.volume = volume / 127;
1132
1125
  this.updateChannelVolume(channel, scheduleTime);
@@ -1139,11 +1132,13 @@ export class MidyGMLite {
1139
1132
  };
1140
1133
  }
1141
1134
  setPan(channelNumber, pan, scheduleTime) {
1135
+ scheduleTime ??= this.audioContext.currentTime;
1142
1136
  const channel = this.channels[channelNumber];
1143
1137
  channel.state.pan = pan / 127;
1144
1138
  this.updateChannelVolume(channel, scheduleTime);
1145
1139
  }
1146
1140
  setExpression(channelNumber, expression, scheduleTime) {
1141
+ scheduleTime ??= this.audioContext.currentTime;
1147
1142
  const channel = this.channels[channelNumber];
1148
1143
  channel.state.expression = expression / 127;
1149
1144
  this.updateChannelVolume(channel, scheduleTime);
@@ -1165,8 +1160,14 @@ export class MidyGMLite {
1165
1160
  }
1166
1161
  setSustainPedal(channelNumber, value, scheduleTime) {
1167
1162
  scheduleTime ??= this.audioContext.currentTime;
1168
- this.channels[channelNumber].state.sustainPedal = value / 127;
1169
- if (value < 64) {
1163
+ const channel = this.channels[channelNumber];
1164
+ channel.state.sustainPedal = value / 127;
1165
+ if (64 <= value) {
1166
+ this.processScheduledNotes(channel, (note) => {
1167
+ channel.sustainNotes.push(note);
1168
+ });
1169
+ }
1170
+ else {
1170
1171
  this.releaseSustainPedal(channelNumber, value, scheduleTime);
1171
1172
  }
1172
1173
  }
package/esm/midy.d.ts CHANGED
@@ -10,6 +10,7 @@ export class Midy {
10
10
  dataLSB: number;
11
11
  rpnMSB: number;
12
12
  rpnLSB: number;
13
+ mono: boolean;
13
14
  fineTuning: number;
14
15
  coarseTuning: number;
15
16
  modulationDepthRange: number;
@@ -35,8 +36,6 @@ export class Midy {
35
36
  sendToReverb: number;
36
37
  delayTimes: any[];
37
38
  };
38
- mono: boolean;
39
- omni: boolean;
40
39
  noteCheckInterval: number;
41
40
  lookAhead: number;
42
41
  startDelay: number;
@@ -112,10 +111,10 @@ export class Midy {
112
111
  120: (channelNumber: any, _value: any, scheduleTime: any) => Promise<any[]>;
113
112
  121: (channelNumber: any) => void;
114
113
  123: (channelNumber: any, _value: any, scheduleTime: any) => Promise<any[]>;
115
- 124: () => void;
116
- 125: () => void;
117
- 126: () => void;
118
- 127: () => void;
114
+ 124: (channelNumber: any, value: any, scheduleTime: any) => void;
115
+ 125: (channelNumber: any, value: any, scheduleTime: any) => void;
116
+ 126: (channelNumber: any, value: any, scheduleTime: any) => void;
117
+ 127: (channelNumber: any, value: any, scheduleTime: any) => void;
119
118
  };
120
119
  channels: any[];
121
120
  reverbEffect: {
@@ -163,7 +162,7 @@ export class Midy {
163
162
  seekTo(second: any): void;
164
163
  calcTotalTime(): number;
165
164
  currentTime(): number;
166
- processScheduledNotes(channel: any, scheduleTime: any, callback: any): void;
165
+ processScheduledNotes(channel: any, callback: any): void;
167
166
  getActiveNotes(channel: any, scheduleTime: any): SparseMap;
168
167
  getActiveNote(noteList: any, scheduleTime: any): any;
169
168
  createConvolutionReverbImpulse(audioContext: any, decay: any, preDecay: any): any;
@@ -213,8 +212,8 @@ export class Midy {
213
212
  stopNote(endTime: any, stopTime: any, scheduledNotes: any, index: any): Promise<any>;
214
213
  scheduleNoteOff(channelNumber: any, noteNumber: any, _velocity: any, endTime: any, force: any, portamentoNoteNumber: any): Promise<any> | undefined;
215
214
  noteOff(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): Promise<any> | undefined;
216
- releaseSustainPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): any[];
217
- releaseSostenutoPedal(channelNumber: any, halfVelocity: any): any[];
215
+ releaseSustainPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): (Promise<any> | undefined)[];
216
+ releaseSostenutoPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): any[];
218
217
  handleMIDIMessage(statusByte: any, data1: any, data2: any, scheduleTime: any): void | Promise<any>;
219
218
  handlePolyphonicKeyPressure(channelNumber: any, noteNumber: any, pressure: any, scheduleTime: any): void;
220
219
  handleProgramChange(channelNumber: any, program: any, _scheduleTime: any): void;
@@ -275,10 +274,10 @@ export class Midy {
275
274
  120: (channelNumber: any, _value: any, scheduleTime: any) => Promise<any[]>;
276
275
  121: (channelNumber: any) => void;
277
276
  123: (channelNumber: any, _value: any, scheduleTime: any) => Promise<any[]>;
278
- 124: () => void;
279
- 125: () => void;
280
- 126: () => void;
281
- 127: () => void;
277
+ 124: (channelNumber: any, value: any, scheduleTime: any) => void;
278
+ 125: (channelNumber: any, value: any, scheduleTime: any) => void;
279
+ 126: (channelNumber: any, value: any, scheduleTime: any) => void;
280
+ 127: (channelNumber: any, value: any, scheduleTime: any) => void;
282
281
  };
283
282
  handleControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
284
283
  setBankMSB(channelNumber: any, msb: any): void;
@@ -321,19 +320,19 @@ export class Midy {
321
320
  dataEntryMSB(channelNumber: any, value: any, scheduleTime: any): void;
322
321
  handlePitchBendRangeRPN(channelNumber: any, scheduleTime: any): void;
323
322
  setPitchBendRange(channelNumber: any, value: any, scheduleTime: any): void;
324
- handleFineTuningRPN(channelNumber: any): void;
325
- setFineTuning(channelNumber: any, value: any): void;
326
- handleCoarseTuningRPN(channelNumber: any): void;
327
- setCoarseTuning(channelNumber: any, value: any): void;
328
- handleModulationDepthRangeRPN(channelNumber: any): void;
329
- setModulationDepthRange(channelNumber: any, modulationDepthRange: any): void;
323
+ handleFineTuningRPN(channelNumber: any, scheduleTime: any): void;
324
+ setFineTuning(channelNumber: any, value: any, scheduleTime: any): void;
325
+ handleCoarseTuningRPN(channelNumber: any, scheduleTime: any): void;
326
+ setCoarseTuning(channelNumber: any, value: any, scheduleTime: any): void;
327
+ handleModulationDepthRangeRPN(channelNumber: any, scheduleTime: any): void;
328
+ setModulationDepthRange(channelNumber: any, modulationDepthRange: any, scheduleTime: any): void;
330
329
  allSoundOff(channelNumber: any, _value: any, scheduleTime: any): Promise<any[]>;
331
330
  resetAllControllers(channelNumber: any): void;
332
331
  allNotesOff(channelNumber: any, _value: any, scheduleTime: any): Promise<any[]>;
333
- omniOff(): void;
334
- omniOn(): void;
335
- monoOn(): void;
336
- polyOn(): void;
332
+ omniOff(channelNumber: any, value: any, scheduleTime: any): void;
333
+ omniOn(channelNumber: any, value: any, scheduleTime: any): void;
334
+ monoOn(channelNumber: any, value: any, scheduleTime: any): void;
335
+ polyOn(channelNumber: any, value: any, scheduleTime: any): void;
337
336
  handleUniversalNonRealTimeExclusiveMessage(data: any, scheduleTime: any): void;
338
337
  GM1SystemOn(): void;
339
338
  GM2SystemOn(): void;
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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"}