@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.
@@ -358,6 +358,7 @@ class MidyGMLite {
358
358
  state: new ControllerState(),
359
359
  ...this.setChannelAudioNodes(audioContext),
360
360
  scheduledNotes: new SparseMap(128),
361
+ sustainNotes: [],
361
362
  };
362
363
  });
363
364
  return channels;
@@ -415,7 +416,7 @@ class MidyGMLite {
415
416
  }
416
417
  /* falls through */
417
418
  case "noteOff": {
418
- const notePromise = this.scheduleNoteOff(event.channel, event.noteNumber, event.velocity, startTime);
419
+ const notePromise = this.scheduleNoteOff(event.channel, event.noteNumber, event.velocity, startTime, false);
419
420
  if (notePromise) {
420
421
  this.notePromises.push(notePromise);
421
422
  }
@@ -579,15 +580,10 @@ class MidyGMLite {
579
580
  stopChannelNotes(channelNumber, velocity, force, scheduleTime) {
580
581
  const channel = this.channels[channelNumber];
581
582
  const promises = [];
582
- channel.scheduledNotes.forEach((noteList) => {
583
- for (let i = 0; i < noteList.length; i++) {
584
- const note = noteList[i];
585
- if (!note)
586
- continue;
587
- const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force);
588
- this.notePromises.push(promise);
589
- promises.push(promise);
590
- }
583
+ this.processScheduledNotes(channel, (note) => {
584
+ const promise = this.scheduleNoteOff(channelNumber, note.noteNumber, velocity, scheduleTime, force);
585
+ this.notePromises.push(promise);
586
+ promises.push(promise);
591
587
  });
592
588
  channel.scheduledNotes.clear();
593
589
  return Promise.all(promises);
@@ -643,14 +639,12 @@ class MidyGMLite {
643
639
  const now = this.audioContext.currentTime;
644
640
  return this.resumeTime + now - this.startTime - this.startDelay;
645
641
  }
646
- processScheduledNotes(channel, scheduleTime, callback) {
642
+ processScheduledNotes(channel, callback) {
647
643
  channel.scheduledNotes.forEach((noteList) => {
648
644
  for (let i = 0; i < noteList.length; i++) {
649
645
  const note = noteList[i];
650
646
  if (!note)
651
647
  continue;
652
- if (scheduleTime < note.startTime)
653
- continue;
654
648
  callback(note);
655
649
  }
656
650
  });
@@ -694,7 +688,7 @@ class MidyGMLite {
694
688
  return pitchWheel * pitchWheelSensitivity;
695
689
  }
696
690
  updateChannelDetune(channel, scheduleTime) {
697
- this.processScheduledNotes(channel, scheduleTime, (note) => {
691
+ this.processScheduledNotes(channel, (note) => {
698
692
  this.updateDetune(channel, note, scheduleTime);
699
693
  });
700
694
  }
@@ -843,6 +837,9 @@ class MidyGMLite {
843
837
  const note = await this.createNote(channel, voice, noteNumber, velocity, startTime, isSF3);
844
838
  note.volumeEnvelopeNode.connect(channel.gainL);
845
839
  note.volumeEnvelopeNode.connect(channel.gainR);
840
+ if (0.5 <= channel.state.sustainPedal) {
841
+ channel.sustainNotes.push(note);
842
+ }
846
843
  const exclusiveClass = note.voiceParams.exclusiveClass;
847
844
  if (exclusiveClass !== 0) {
848
845
  if (this.exclusiveClassMap.has(exclusiveClass)) {
@@ -850,8 +847,7 @@ class MidyGMLite {
850
847
  const [prevNote, prevChannelNumber] = prevEntry;
851
848
  if (!prevNote.ending) {
852
849
  this.scheduleNoteOff(prevChannelNumber, prevNote.noteNumber, 0, // velocity,
853
- startTime, undefined, // portamentoNoteNumber
854
- true);
850
+ startTime, true);
855
851
  }
856
852
  }
857
853
  this.exclusiveClassMap.set(exclusiveClass, [note, channelNumber]);
@@ -895,7 +891,7 @@ class MidyGMLite {
895
891
  }
896
892
  scheduleNoteOff(channelNumber, noteNumber, _velocity, endTime, force) {
897
893
  const channel = this.channels[channelNumber];
898
- if (!force && 0.5 < channel.state.sustainPedal)
894
+ if (!force && 0.5 <= channel.state.sustainPedal)
899
895
  return;
900
896
  if (!channel.scheduledNotes.has(noteNumber))
901
897
  return;
@@ -923,11 +919,11 @@ class MidyGMLite {
923
919
  const velocity = halfVelocity * 2;
924
920
  const channel = this.channels[channelNumber];
925
921
  const promises = [];
926
- this.processScheduledNotes(channel, scheduleTime, (note) => {
927
- const { noteNumber } = note;
928
- const promise = this.noteOff(channelNumber, noteNumber, velocity);
922
+ for (let i = 0; i < channel.sustainNotes.length; i++) {
923
+ const promise = this.noteOff(channelNumber, channel.sustainNotes[i].noteNumber, velocity, scheduleTime);
929
924
  promises.push(promise);
930
- });
925
+ }
926
+ channel.sustainNotes = [];
931
927
  return promises;
932
928
  }
933
929
  handleMIDIMessage(statusByte, data1, data2, scheduleTime) {
@@ -1038,48 +1034,43 @@ class MidyGMLite {
1038
1034
  return state;
1039
1035
  }
1040
1036
  applyVoiceParams(channel, controllerType, scheduleTime) {
1041
- channel.scheduledNotes.forEach((noteList) => {
1042
- for (let i = 0; i < noteList.length; i++) {
1043
- const note = noteList[i];
1044
- if (!note)
1037
+ this.processScheduledNotes(channel, (note) => {
1038
+ const controllerState = this.getControllerState(channel, note.noteNumber, note.velocity);
1039
+ const voiceParams = note.voice.getParams(controllerType, controllerState);
1040
+ let appliedFilterEnvelope = false;
1041
+ let appliedVolumeEnvelope = false;
1042
+ for (const [key, value] of Object.entries(voiceParams)) {
1043
+ const prevValue = note.voiceParams[key];
1044
+ if (value === prevValue)
1045
1045
  continue;
1046
- const controllerState = this.getControllerState(channel, note.noteNumber, note.velocity);
1047
- const voiceParams = note.voice.getParams(controllerType, controllerState);
1048
- let appliedFilterEnvelope = false;
1049
- let appliedVolumeEnvelope = false;
1050
- for (const [key, value] of Object.entries(voiceParams)) {
1051
- const prevValue = note.voiceParams[key];
1052
- if (value === prevValue)
1046
+ note.voiceParams[key] = value;
1047
+ if (key in this.voiceParamsHandlers) {
1048
+ this.voiceParamsHandlers[key](channel, note, prevValue, scheduleTime);
1049
+ }
1050
+ else if (filterEnvelopeKeySet.has(key)) {
1051
+ if (appliedFilterEnvelope)
1053
1052
  continue;
1054
- note.voiceParams[key] = value;
1055
- if (key in this.voiceParamsHandlers) {
1056
- this.voiceParamsHandlers[key](channel, note, prevValue, scheduleTime);
1057
- }
1058
- else if (filterEnvelopeKeySet.has(key)) {
1059
- if (appliedFilterEnvelope)
1060
- continue;
1061
- appliedFilterEnvelope = true;
1062
- const noteVoiceParams = note.voiceParams;
1063
- for (let i = 0; i < filterEnvelopeKeys.length; i++) {
1064
- const key = filterEnvelopeKeys[i];
1065
- if (key in voiceParams)
1066
- noteVoiceParams[key] = voiceParams[key];
1067
- }
1068
- this.setFilterEnvelope(note, scheduleTime);
1069
- this.setPitchEnvelope(note, scheduleTime);
1053
+ appliedFilterEnvelope = true;
1054
+ const noteVoiceParams = note.voiceParams;
1055
+ for (let i = 0; i < filterEnvelopeKeys.length; i++) {
1056
+ const key = filterEnvelopeKeys[i];
1057
+ if (key in voiceParams)
1058
+ noteVoiceParams[key] = voiceParams[key];
1070
1059
  }
1071
- else if (volumeEnvelopeKeySet.has(key)) {
1072
- if (appliedVolumeEnvelope)
1073
- continue;
1074
- appliedVolumeEnvelope = true;
1075
- const noteVoiceParams = note.voiceParams;
1076
- for (let i = 0; i < volumeEnvelopeKeys.length; i++) {
1077
- const key = volumeEnvelopeKeys[i];
1078
- if (key in voiceParams)
1079
- noteVoiceParams[key] = voiceParams[key];
1080
- }
1081
- this.setVolumeEnvelope(channel, note, scheduleTime);
1060
+ this.setFilterEnvelope(note, scheduleTime);
1061
+ this.setPitchEnvelope(note, scheduleTime);
1062
+ }
1063
+ else if (volumeEnvelopeKeySet.has(key)) {
1064
+ if (appliedVolumeEnvelope)
1065
+ continue;
1066
+ appliedVolumeEnvelope = true;
1067
+ const noteVoiceParams = note.voiceParams;
1068
+ for (let i = 0; i < volumeEnvelopeKeys.length; i++) {
1069
+ const key = volumeEnvelopeKeys[i];
1070
+ if (key in voiceParams)
1071
+ noteVoiceParams[key] = voiceParams[key];
1082
1072
  }
1073
+ this.setVolumeEnvelope(note, scheduleTime);
1083
1074
  }
1084
1075
  }
1085
1076
  });
@@ -1114,7 +1105,7 @@ class MidyGMLite {
1114
1105
  updateModulation(channel, scheduleTime) {
1115
1106
  scheduleTime ??= this.audioContext.currentTime;
1116
1107
  const depth = channel.state.modulationDepth * channel.modulationDepthRange;
1117
- this.processScheduledNotes(channel, scheduleTime, (note) => {
1108
+ this.processScheduledNotes(channel, (note) => {
1118
1109
  if (note.modulationDepth) {
1119
1110
  note.modulationDepth.gain.setValueAtTime(depth, scheduleTime);
1120
1111
  }
@@ -1125,11 +1116,13 @@ class MidyGMLite {
1125
1116
  });
1126
1117
  }
1127
1118
  setModulationDepth(channelNumber, modulation, scheduleTime) {
1119
+ scheduleTime ??= this.audioContext.currentTime;
1128
1120
  const channel = this.channels[channelNumber];
1129
1121
  channel.state.modulationDepth = modulation / 127;
1130
1122
  this.updateModulation(channel, scheduleTime);
1131
1123
  }
1132
1124
  setVolume(channelNumber, volume, scheduleTime) {
1125
+ scheduleTime ??= this.audioContext.currentTime;
1133
1126
  const channel = this.channels[channelNumber];
1134
1127
  channel.state.volume = volume / 127;
1135
1128
  this.updateChannelVolume(channel, scheduleTime);
@@ -1142,11 +1135,13 @@ class MidyGMLite {
1142
1135
  };
1143
1136
  }
1144
1137
  setPan(channelNumber, pan, scheduleTime) {
1138
+ scheduleTime ??= this.audioContext.currentTime;
1145
1139
  const channel = this.channels[channelNumber];
1146
1140
  channel.state.pan = pan / 127;
1147
1141
  this.updateChannelVolume(channel, scheduleTime);
1148
1142
  }
1149
1143
  setExpression(channelNumber, expression, scheduleTime) {
1144
+ scheduleTime ??= this.audioContext.currentTime;
1150
1145
  const channel = this.channels[channelNumber];
1151
1146
  channel.state.expression = expression / 127;
1152
1147
  this.updateChannelVolume(channel, scheduleTime);
@@ -1168,8 +1163,14 @@ class MidyGMLite {
1168
1163
  }
1169
1164
  setSustainPedal(channelNumber, value, scheduleTime) {
1170
1165
  scheduleTime ??= this.audioContext.currentTime;
1171
- this.channels[channelNumber].state.sustainPedal = value / 127;
1172
- if (value < 64) {
1166
+ const channel = this.channels[channelNumber];
1167
+ channel.state.sustainPedal = value / 127;
1168
+ if (64 <= value) {
1169
+ this.processScheduledNotes(channel, (note) => {
1170
+ channel.sustainNotes.push(note);
1171
+ });
1172
+ }
1173
+ else {
1173
1174
  this.releaseSustainPedal(channelNumber, value, scheduleTime);
1174
1175
  }
1175
1176
  }
package/script/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;
@@ -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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"}