@marmooo/midy 0.4.7 → 0.4.9

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.
@@ -92,6 +92,88 @@ class Note {
92
92
  });
93
93
  }
94
94
  }
95
+ class Channel {
96
+ constructor(audioNodes, settings) {
97
+ Object.defineProperty(this, "isDrum", {
98
+ enumerable: true,
99
+ configurable: true,
100
+ writable: true,
101
+ value: false
102
+ });
103
+ Object.defineProperty(this, "programNumber", {
104
+ enumerable: true,
105
+ configurable: true,
106
+ writable: true,
107
+ value: 0
108
+ });
109
+ Object.defineProperty(this, "scheduleIndex", {
110
+ enumerable: true,
111
+ configurable: true,
112
+ writable: true,
113
+ value: 0
114
+ });
115
+ Object.defineProperty(this, "detune", {
116
+ enumerable: true,
117
+ configurable: true,
118
+ writable: true,
119
+ value: 0
120
+ });
121
+ Object.defineProperty(this, "dataMSB", {
122
+ enumerable: true,
123
+ configurable: true,
124
+ writable: true,
125
+ value: 0
126
+ });
127
+ Object.defineProperty(this, "dataLSB", {
128
+ enumerable: true,
129
+ configurable: true,
130
+ writable: true,
131
+ value: 0
132
+ });
133
+ Object.defineProperty(this, "rpnMSB", {
134
+ enumerable: true,
135
+ configurable: true,
136
+ writable: true,
137
+ value: 127
138
+ });
139
+ Object.defineProperty(this, "rpnLSB", {
140
+ enumerable: true,
141
+ configurable: true,
142
+ writable: true,
143
+ value: 127
144
+ });
145
+ Object.defineProperty(this, "modulationDepthRange", {
146
+ enumerable: true,
147
+ configurable: true,
148
+ writable: true,
149
+ value: 50
150
+ }); // cent
151
+ Object.defineProperty(this, "scheduledNotes", {
152
+ enumerable: true,
153
+ configurable: true,
154
+ writable: true,
155
+ value: []
156
+ });
157
+ Object.defineProperty(this, "sustainNotes", {
158
+ enumerable: true,
159
+ configurable: true,
160
+ writable: true,
161
+ value: []
162
+ });
163
+ Object.defineProperty(this, "currentBufferSource", {
164
+ enumerable: true,
165
+ configurable: true,
166
+ writable: true,
167
+ value: null
168
+ });
169
+ Object.assign(this, audioNodes);
170
+ Object.assign(this, settings);
171
+ this.state = new ControllerState();
172
+ }
173
+ resetSettings(settings) {
174
+ Object.assign(this, settings);
175
+ }
176
+ }
95
177
  const drumExclusiveClasses = new Uint8Array(128);
96
178
  drumExclusiveClasses[42] = 1;
97
179
  drumExclusiveClasses[44] = 1;
@@ -495,18 +577,8 @@ export class MidyGMLite extends EventTarget {
495
577
  };
496
578
  }
497
579
  createChannels(audioContext) {
498
- const channels = Array.from({ length: this.numChannels }, () => {
499
- return {
500
- currentBufferSource: null,
501
- isDrum: false,
502
- state: new ControllerState(),
503
- ...this.constructor.channelSettings,
504
- ...this.createChannelAudioNodes(audioContext),
505
- scheduledNotes: [],
506
- sustainNotes: [],
507
- };
508
- });
509
- return channels;
580
+ const settings = this.constructor.channelSettings;
581
+ return Array.from({ length: this.numChannels }, () => new Channel(this.createChannelAudioNodes(audioContext), settings));
510
582
  }
511
583
  decodeOggVorbis(sample) {
512
584
  const task = decoderQueue.then(async () => {
@@ -1612,9 +1684,7 @@ export class MidyGMLite extends EventTarget {
1612
1684
  state[key] = defaultValue;
1613
1685
  }
1614
1686
  }
1615
- for (const key of Object.keys(this.constructor.channelSettings)) {
1616
- channel[key] = this.constructor.channelSettings[key];
1617
- }
1687
+ channel.resetSettings(this.constructor.channelSettings);
1618
1688
  this.mode = "GM1";
1619
1689
  }
1620
1690
  // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/rp15.pdf
package/esm/midy.d.ts CHANGED
@@ -96,7 +96,7 @@ export class Midy extends EventTarget {
96
96
  controlChangeHandlers: any[];
97
97
  keyBasedControllerHandlers: any[];
98
98
  effectHandlers: any[];
99
- channels: any[];
99
+ channels: Channel[];
100
100
  reverbEffect: {
101
101
  input: any;
102
102
  output: any;
@@ -121,8 +121,7 @@ export class Midy extends EventTarget {
121
121
  gainR: any;
122
122
  merger: any;
123
123
  };
124
- resetChannelTable(channel: any): void;
125
- createChannels(audioContext: any): any[];
124
+ createChannels(audioContext: any): Channel[];
126
125
  decodeOggVorbis(sample: any): Promise<any>;
127
126
  createAudioBuffer(voiceParams: any): Promise<any>;
128
127
  isLoopDrum(channel: any, noteNumber: any): boolean;
@@ -260,6 +259,7 @@ export class Midy extends EventTarget {
260
259
  updatePortamento(channel: any, scheduleTime: any): void;
261
260
  setPortamentoTime(channelNumber: any, value: any, scheduleTime: any): void;
262
261
  setVolume(channelNumber: any, value: any, scheduleTime: any): void;
262
+ applyVolume(channel: any, scheduleTime: any): void;
263
263
  panToGain(pan: any): {
264
264
  gainLeft: number;
265
265
  gainRight: number;
@@ -363,7 +363,11 @@ export class Midy extends EventTarget {
363
363
  getLFOAmplitudeDepth(channel: any, note: any): number;
364
364
  createEffectHandlers(): any[];
365
365
  setControlChangeEffects(channel: any, note: any, scheduleTime: any): void;
366
+ setChannelPressureEffects(channel: any, note: any, scheduleTime: any): void;
367
+ setPolyphonicKeyPressureEffects(channel: any, note: any, scheduleTime: any): void;
366
368
  setPressureEffects(channel: any, note: any, tableName: any, scheduleTime: any): void;
369
+ handleChannelPressureSysEx(data: any, scheduleTime: any): void;
370
+ handlePolyphonicKeyPressureSysEx(data: any, scheduleTime: any): void;
367
371
  handlePressureSysEx(data: any, tableName: any, scheduleTime: any): void;
368
372
  handleControlChangeSysEx(data: any, scheduleTime: any): void;
369
373
  getRelativeKeyBasedValue(channel: any, keyNumber: any, controllerType: any): any;
@@ -374,6 +378,37 @@ export class Midy extends EventTarget {
374
378
  scheduleTask(callback: any, scheduleTime: any): Promise<any>;
375
379
  }
376
380
  import { OggVorbisDecoderWebWorker } from "@wasm-audio-decoders/ogg-vorbis";
381
+ declare class Channel {
382
+ constructor(audioNodes: any, settings: any);
383
+ isDrum: boolean;
384
+ programNumber: number;
385
+ scheduleIndex: number;
386
+ detune: number;
387
+ bankMSB: number;
388
+ bankLSB: number;
389
+ dataMSB: number;
390
+ dataLSB: number;
391
+ rpnMSB: number;
392
+ rpnLSB: number;
393
+ mono: boolean;
394
+ modulationDepthRange: number;
395
+ fineTuning: number;
396
+ coarseTuning: number;
397
+ scheduledNotes: any[];
398
+ sustainNotes: any[];
399
+ sostenutoNotes: any[];
400
+ controlTable: Int8Array<ArrayBuffer>;
401
+ scaleOctaveTuningTable: Float32Array<ArrayBuffer>;
402
+ channelPressureTable: Int8Array<ArrayBuffer>;
403
+ polyphonicKeyPressureTable: Int8Array<ArrayBuffer>;
404
+ keyBasedTable: Int8Array<ArrayBuffer>;
405
+ keyBasedGainLs: any[];
406
+ keyBasedGainRs: any[];
407
+ currentBufferSource: null;
408
+ state: ControllerState;
409
+ resetSettings(settings: any): void;
410
+ resetTable(channel: any): void;
411
+ }
377
412
  declare class Note {
378
413
  constructor(noteNumber: any, velocity: any, startTime: any);
379
414
  voice: any;
@@ -401,5 +436,8 @@ declare class Note {
401
436
  ready: Promise<any>;
402
437
  resolveReady: (value: any) => void;
403
438
  }
439
+ declare class ControllerState {
440
+ array: Float32Array<ArrayBuffer>;
441
+ }
404
442
  export {};
405
443
  //# 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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"}
package/esm/midy.js CHANGED
@@ -134,6 +134,173 @@ class Note {
134
134
  });
135
135
  }
136
136
  }
137
+ class Channel {
138
+ constructor(audioNodes, settings) {
139
+ Object.defineProperty(this, "isDrum", {
140
+ enumerable: true,
141
+ configurable: true,
142
+ writable: true,
143
+ value: false
144
+ });
145
+ Object.defineProperty(this, "programNumber", {
146
+ enumerable: true,
147
+ configurable: true,
148
+ writable: true,
149
+ value: 0
150
+ });
151
+ Object.defineProperty(this, "scheduleIndex", {
152
+ enumerable: true,
153
+ configurable: true,
154
+ writable: true,
155
+ value: 0
156
+ });
157
+ Object.defineProperty(this, "detune", {
158
+ enumerable: true,
159
+ configurable: true,
160
+ writable: true,
161
+ value: 0
162
+ });
163
+ Object.defineProperty(this, "bankMSB", {
164
+ enumerable: true,
165
+ configurable: true,
166
+ writable: true,
167
+ value: 121
168
+ });
169
+ Object.defineProperty(this, "bankLSB", {
170
+ enumerable: true,
171
+ configurable: true,
172
+ writable: true,
173
+ value: 0
174
+ });
175
+ Object.defineProperty(this, "dataMSB", {
176
+ enumerable: true,
177
+ configurable: true,
178
+ writable: true,
179
+ value: 0
180
+ });
181
+ Object.defineProperty(this, "dataLSB", {
182
+ enumerable: true,
183
+ configurable: true,
184
+ writable: true,
185
+ value: 0
186
+ });
187
+ Object.defineProperty(this, "rpnMSB", {
188
+ enumerable: true,
189
+ configurable: true,
190
+ writable: true,
191
+ value: 127
192
+ });
193
+ Object.defineProperty(this, "rpnLSB", {
194
+ enumerable: true,
195
+ configurable: true,
196
+ writable: true,
197
+ value: 127
198
+ });
199
+ Object.defineProperty(this, "mono", {
200
+ enumerable: true,
201
+ configurable: true,
202
+ writable: true,
203
+ value: false
204
+ }); // CC#124, CC#125
205
+ Object.defineProperty(this, "modulationDepthRange", {
206
+ enumerable: true,
207
+ configurable: true,
208
+ writable: true,
209
+ value: 50
210
+ }); // cent
211
+ Object.defineProperty(this, "fineTuning", {
212
+ enumerable: true,
213
+ configurable: true,
214
+ writable: true,
215
+ value: 0
216
+ }); // cent
217
+ Object.defineProperty(this, "coarseTuning", {
218
+ enumerable: true,
219
+ configurable: true,
220
+ writable: true,
221
+ value: 0
222
+ }); // cent
223
+ Object.defineProperty(this, "scheduledNotes", {
224
+ enumerable: true,
225
+ configurable: true,
226
+ writable: true,
227
+ value: []
228
+ });
229
+ Object.defineProperty(this, "sustainNotes", {
230
+ enumerable: true,
231
+ configurable: true,
232
+ writable: true,
233
+ value: []
234
+ });
235
+ Object.defineProperty(this, "sostenutoNotes", {
236
+ enumerable: true,
237
+ configurable: true,
238
+ writable: true,
239
+ value: []
240
+ });
241
+ Object.defineProperty(this, "controlTable", {
242
+ enumerable: true,
243
+ configurable: true,
244
+ writable: true,
245
+ value: new Int8Array(defaultControlValues)
246
+ });
247
+ Object.defineProperty(this, "scaleOctaveTuningTable", {
248
+ enumerable: true,
249
+ configurable: true,
250
+ writable: true,
251
+ value: new Float32Array(12)
252
+ }); // [-100, 100] cent
253
+ Object.defineProperty(this, "channelPressureTable", {
254
+ enumerable: true,
255
+ configurable: true,
256
+ writable: true,
257
+ value: new Int8Array(defaultPressureValues)
258
+ });
259
+ Object.defineProperty(this, "polyphonicKeyPressureTable", {
260
+ enumerable: true,
261
+ configurable: true,
262
+ writable: true,
263
+ value: new Int8Array(defaultPressureValues)
264
+ });
265
+ Object.defineProperty(this, "keyBasedTable", {
266
+ enumerable: true,
267
+ configurable: true,
268
+ writable: true,
269
+ value: new Int8Array(128 * 128).fill(-1)
270
+ });
271
+ Object.defineProperty(this, "keyBasedGainLs", {
272
+ enumerable: true,
273
+ configurable: true,
274
+ writable: true,
275
+ value: new Array(128)
276
+ });
277
+ Object.defineProperty(this, "keyBasedGainRs", {
278
+ enumerable: true,
279
+ configurable: true,
280
+ writable: true,
281
+ value: new Array(128)
282
+ });
283
+ Object.defineProperty(this, "currentBufferSource", {
284
+ enumerable: true,
285
+ configurable: true,
286
+ writable: true,
287
+ value: null
288
+ });
289
+ Object.assign(this, audioNodes);
290
+ Object.assign(this, settings);
291
+ this.state = new ControllerState();
292
+ }
293
+ resetSettings(settings) {
294
+ Object.assign(this, settings);
295
+ }
296
+ resetTable(channel) {
297
+ channel.controlTable.set(defaultControlValues);
298
+ channel.scaleOctaveTuningTable.fill(0); // [-100, 100] cent
299
+ channel.channelPressureTable.set(defaultPressureValues);
300
+ channel.polyphonicKeyPressureTable.set(defaultPressureValues);
301
+ channel.keyBasedTable.fill(-1);
302
+ }
303
+ }
137
304
  const drumExclusiveClassesByKit = new Array(57);
138
305
  const drumExclusiveClassCount = 10;
139
306
  const standardSet = new Uint8Array(128);
@@ -697,34 +864,9 @@ export class Midy extends EventTarget {
697
864
  merger,
698
865
  };
699
866
  }
700
- resetChannelTable(channel) {
701
- channel.controlTable.set(defaultControlValues);
702
- channel.scaleOctaveTuningTable.fill(0); // [-100, 100] cent
703
- channel.channelPressureTable.set(defaultPressureValues);
704
- channel.polyphonicKeyPressureTable.set(defaultPressureValues);
705
- channel.keyBasedTable.fill(-1);
706
- }
707
867
  createChannels(audioContext) {
708
- const channels = Array.from({ length: this.numChannels }, () => {
709
- return {
710
- currentBufferSource: null,
711
- isDrum: false,
712
- state: new ControllerState(),
713
- ...this.constructor.channelSettings,
714
- ...this.createChannelAudioNodes(audioContext),
715
- scheduledNotes: [],
716
- sustainNotes: [],
717
- sostenutoNotes: [],
718
- controlTable: new Int8Array(defaultControlValues),
719
- scaleOctaveTuningTable: new Float32Array(12), // [-100, 100] cent
720
- channelPressureTable: new Int8Array(defaultPressureValues),
721
- polyphonicKeyPressureTable: new Int8Array(defaultPressureValues),
722
- keyBasedTable: new Int8Array(128 * 128).fill(-1),
723
- keyBasedGainLs: new Array(128),
724
- keyBasedGainRs: new Array(128),
725
- };
726
- });
727
- return channels;
868
+ const settings = this.constructor.channelSettings;
869
+ return Array.from({ length: this.numChannels }, () => new Channel(this.createChannelAudioNodes(audioContext), settings));
728
870
  }
729
871
  decodeOggVorbis(sample) {
730
872
  const task = decoderQueue.then(async () => {
@@ -1783,16 +1925,15 @@ export class Midy extends EventTarget {
1783
1925
  }
1784
1926
  async noteOn(channelNumber, noteNumber, velocity, startTime) {
1785
1927
  if (this.mpeEnabled) {
1786
- const note = await this.startNote(channelNumber, noteNumber, velocity, startTime);
1928
+ const channel = this.channels[channelNumber];
1929
+ const noteIndex = channel.scheduledNotes.length;
1787
1930
  if (!this.mpeState.channelToNotes.has(channelNumber)) {
1788
1931
  this.mpeState.channelToNotes.set(channelNumber, new Set());
1789
1932
  }
1790
- this.mpeState.channelToNotes.get(channelNumber).add(note.index);
1791
- this.mpeState.noteToChannel.set(note.index, channelNumber);
1792
- }
1793
- else {
1794
- await this.startNote(channelNumber, noteNumber, velocity, startTime);
1933
+ this.mpeState.channelToNotes.get(channelNumber).add(noteIndex);
1934
+ this.mpeState.noteToChannel.set(noteIndex, channelNumber);
1795
1935
  }
1936
+ await this.startNote(channelNumber, noteNumber, velocity, startTime);
1796
1937
  }
1797
1938
  async startNote(channelNumber, noteNumber, velocity, startTime) {
1798
1939
  const channel = this.channels[channelNumber];
@@ -2024,7 +2165,7 @@ export class Midy extends EventTarget {
2024
2165
  this.processActiveNotes(channel, scheduleTime, (note) => {
2025
2166
  if (note.noteNumber === noteNumber) {
2026
2167
  note.pressure = pressure;
2027
- this.setPressureEffects(channel, note, scheduleTime);
2168
+ this.setPolyphonicKeyPressureEffects(channel, note, scheduleTime);
2028
2169
  }
2029
2170
  });
2030
2171
  this.applyVoiceParams(channel, 10, scheduleTime);
@@ -2065,7 +2206,7 @@ export class Midy extends EventTarget {
2065
2206
  const next = this.calcChannelPressureEffectValue(channel, 0);
2066
2207
  channel.detune += next - prev;
2067
2208
  this.processActiveNotes(channel, scheduleTime, (note) => {
2068
- this.setPressureEffects(channel, note, scheduleTime);
2209
+ this.setChannelPressureEffects(channel, note, scheduleTime);
2069
2210
  });
2070
2211
  this.applyVoiceParams(channel, 13, scheduleTime);
2071
2212
  }
@@ -2465,6 +2606,9 @@ export class Midy extends EventTarget {
2465
2606
  const intPart = Math.trunc(value);
2466
2607
  state.volumeMSB = intPart / 127;
2467
2608
  state.volumeLSB = value - intPart;
2609
+ this.applyVolume(channel, scheduleTime);
2610
+ }
2611
+ applyVolume(channel, scheduleTime) {
2468
2612
  if (channel.isDrum) {
2469
2613
  for (let i = 0; i < 128; i++) {
2470
2614
  this.updateKeyBasedVolume(channel, i, scheduleTime);
@@ -2963,10 +3107,8 @@ export class Midy extends EventTarget {
2963
3107
  state[key] = defaultValue;
2964
3108
  }
2965
3109
  }
2966
- for (const key of Object.keys(this.constructor.channelSettings)) {
2967
- channel[key] = this.constructor.channelSettings[key];
2968
- }
2969
- this.resetChannelTable(channel);
3110
+ channel.resetSettings(this.constructor.channelSettings);
3111
+ this.resetTable(channel);
2970
3112
  this.mode = "GM2";
2971
3113
  this.masterFineTuning = 0; // cent
2972
3114
  this.masterCoarseTuning = 0; // cent
@@ -3129,9 +3271,9 @@ export class Midy extends EventTarget {
3129
3271
  case 9:
3130
3272
  switch (data[3]) {
3131
3273
  case 1: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
3132
- return this.handlePressureSysEx(data, "channelPressureTable", scheduleTime);
3274
+ return this.handleChannelPressureSysEx(data, scheduelTime);
3133
3275
  case 2: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
3134
- return this.handlePressureSysEx(data, "polyphonicKeyPressureTable", scheduleTime);
3276
+ return this.handlePolyphonicKeyPressureSysEx(data, scheduleTime);
3135
3277
  case 3: // https://amei.or.jp/midistandardcommittee/Recommended_Practice/e/ca22.pdf
3136
3278
  return this.handleControlChangeSysEx(data, scheduleTime);
3137
3279
  default:
@@ -3510,7 +3652,7 @@ export class Midy extends EventTarget {
3510
3652
  }
3511
3653
  createEffectHandlers() {
3512
3654
  const handlers = new Array(6);
3513
- handlers[0] = (channel, note, scheduleTime) => {
3655
+ handlers[0] = (channel, note, _tableName, scheduleTime) => {
3514
3656
  if (this.isPortamento(channel, note)) {
3515
3657
  this.setPortamentoDetune(channel, note, scheduleTime);
3516
3658
  }
@@ -3518,7 +3660,7 @@ export class Midy extends EventTarget {
3518
3660
  this.setDetune(channel, note, scheduleTime);
3519
3661
  }
3520
3662
  };
3521
- handlers[1] = (channel, note, scheduleTime) => {
3663
+ handlers[1] = (channel, note, _tableName, scheduleTime) => {
3522
3664
  if (0.5 <= channel.state.portamento && 0 <= note.portamentoNoteNumber) {
3523
3665
  this.setPortamentoFilterEnvelope(channel, note, scheduleTime);
3524
3666
  }
@@ -3526,10 +3668,17 @@ export class Midy extends EventTarget {
3526
3668
  this.setFilterEnvelope(channel, note, scheduleTime);
3527
3669
  }
3528
3670
  };
3529
- handlers[2] = (channel, note, scheduleTime) => this.setVolumeNode(channel, note, scheduleTime);
3530
- handlers[3] = (channel, note, scheduleTime) => this.setModLfoToPitch(channel, note, scheduleTime);
3531
- handlers[4] = (channel, note, scheduleTime) => this.setModLfoToFilterFc(channel, note, scheduleTime);
3532
- handlers[5] = (channel, note, scheduleTime) => this.setModLfoToVolume(channel, note, scheduleTime);
3671
+ handlers[2] = (channel, note, tableName, scheduleTime) => {
3672
+ if (tableName === "polyphonicKeyPressureTable") {
3673
+ this.setVolumeNode(channel, note, scheduleTime);
3674
+ }
3675
+ else {
3676
+ this.applyVolume(channel, scheduleTime);
3677
+ }
3678
+ };
3679
+ handlers[3] = (channel, note, _tableName, scheduleTime) => this.setModLfoToPitch(channel, note, scheduleTime);
3680
+ handlers[4] = (channel, note, _tableName, scheduleTime) => this.setModLfoToFilterFc(channel, note, scheduleTime);
3681
+ handlers[5] = (channel, note, _tableName, scheduleTime) => this.setModLfoToVolume(channel, note, scheduleTime);
3533
3682
  return handlers;
3534
3683
  }
3535
3684
  setControlChangeEffects(channel, note, scheduleTime) {
@@ -3539,9 +3688,15 @@ export class Midy extends EventTarget {
3539
3688
  const tableValue = channel.controlTable[i + 6];
3540
3689
  if (baseline === tableValue)
3541
3690
  continue;
3542
- handlers[i](channel, note, scheduleTime);
3691
+ handlers[i](channel, note, "controlTable", scheduleTime);
3543
3692
  }
3544
3693
  }
3694
+ setChannelPressureEffects(channel, note, scheduleTime) {
3695
+ this.setPressureEffects(channel, note, "channelPressureTable", scheduleTime);
3696
+ }
3697
+ setPolyphonicKeyPressureEffects(channel, note, scheduleTime) {
3698
+ this.setPressureEffects(channel, note, "polyphonicKeyPressureTable", scheduleTime);
3699
+ }
3545
3700
  setPressureEffects(channel, note, tableName, scheduleTime) {
3546
3701
  const handlers = this.effectHandlers;
3547
3702
  const table = channel[tableName];
@@ -3550,9 +3705,15 @@ export class Midy extends EventTarget {
3550
3705
  const tableValue = table[i];
3551
3706
  if (baseline === tableValue)
3552
3707
  continue;
3553
- handlers[i](channel, note, scheduleTime);
3708
+ handlers[i](channel, note, tableName, scheduleTime);
3554
3709
  }
3555
3710
  }
3711
+ handleChannelPressureSysEx(data, scheduleTime) {
3712
+ this.handlePressureSysEx(data, "channelPressureTable", scheduleTime);
3713
+ }
3714
+ handlePolyphonicKeyPressureSysEx(data, scheduleTime) {
3715
+ this.handlePressureSysEx(data, "polyphonicKeyPressureTable", scheduleTime);
3716
+ }
3556
3717
  handlePressureSysEx(data, tableName, scheduleTime) {
3557
3718
  const channelNumber = data[4];
3558
3719
  const channel = this.channels[channelNumber];
@@ -3566,7 +3727,7 @@ export class Midy extends EventTarget {
3566
3727
  const handler = this.effectHandlers[pp];
3567
3728
  this.processActiveNotes(channel, scheduleTime, (note) => {
3568
3729
  if (handler)
3569
- handler(channel, note, scheduleTime);
3730
+ handler(channel, note, tableName, scheduleTime);
3570
3731
  });
3571
3732
  }
3572
3733
  }
@@ -3586,7 +3747,7 @@ export class Midy extends EventTarget {
3586
3747
  const handler = this.effectHandlers[pp];
3587
3748
  this.processActiveNotes(channel, scheduleTime, (note) => {
3588
3749
  if (handler)
3589
- handler(channel, note, scheduleTime);
3750
+ handler(channel, note, "controlTable", scheduleTime);
3590
3751
  });
3591
3752
  }
3592
3753
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marmooo/midy",
3
- "version": "0.4.7",
3
+ "version": "0.4.9",
4
4
  "description": "A MIDI player/synthesizer written in JavaScript that supports GM-Lite/GM1 and SF2/SF3.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -61,7 +61,7 @@ export class MidyGM1 extends EventTarget {
61
61
  detune: (channel: any, note: any, scheduleTime: any) => void;
62
62
  };
63
63
  controlChangeHandlers: any[];
64
- channels: any[];
64
+ channels: Channel[];
65
65
  addSoundFont(soundFont: any): void;
66
66
  toUint8Array(input: any): Promise<Uint8Array<ArrayBuffer>>;
67
67
  loadSoundFont(input: any): Promise<void>;
@@ -73,7 +73,7 @@ export class MidyGM1 extends EventTarget {
73
73
  gainR: any;
74
74
  merger: any;
75
75
  };
76
- createChannels(audioContext: any): any[];
76
+ createChannels(audioContext: any): Channel[];
77
77
  decodeOggVorbis(sample: any): Promise<any>;
78
78
  createAudioBuffer(voiceParams: any): Promise<any>;
79
79
  createBufferSource(voiceParams: any, audioBuffer: any): any;
@@ -189,4 +189,27 @@ export class MidyGM1 extends EventTarget {
189
189
  handleSysEx(data: any, scheduleTime: any): void;
190
190
  scheduleTask(callback: any, scheduleTime: any): Promise<any>;
191
191
  }
192
+ declare class Channel {
193
+ constructor(audioNodes: any, settings: any);
194
+ isDrum: boolean;
195
+ programNumber: number;
196
+ scheduleIndex: number;
197
+ detune: number;
198
+ dataMSB: number;
199
+ dataLSB: number;
200
+ rpnMSB: number;
201
+ rpnLSB: number;
202
+ modulationDepthRange: number;
203
+ fineTuning: number;
204
+ coarseTuning: number;
205
+ scheduledNotes: any[];
206
+ sustainNotes: any[];
207
+ currentBufferSource: null;
208
+ state: ControllerState;
209
+ resetSettings(settings: any): void;
210
+ }
211
+ declare class ControllerState {
212
+ array: Float32Array<ArrayBuffer>;
213
+ }
214
+ export {};
192
215
  //# sourceMappingURL=midy-GM1.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAmHA;IAsCE;;;;;;;;;;;MAWE;IAEF,+BAgBC;IA9DD,gCAAgC;IAChC,aAAa;IACb,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,0BAAuD;IACvD,4BAAyB;IACzB,0BAAuB;IACvB,kCAA+B;IAC/B,qBAAqC;IACrC,4BAAiC;IACjC,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,iCAEG;IACH,cAAU;IACV,cAAa;IACb,iBAAY;IACZ,gBAAc;IACd,oBAAkB;IAClB,sBAAwB;IACxB,2BAAqC;IAiBnC,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF,uBAAmD;IACnD;;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,gBAAiD;IAMnD,mCASC;IAED,2DAYC;IAED,yCAmBC;IAED,oCASC;IAED,sBA6BC;IAED,8DAeC;IAED;;;;MAeC;IAED,yCAaC;IAED,2CAsBC;IAED,kDA6BC;IAED,4DASC;IAED,gEAsDC;IAED,mCASC;IAED,uBAUC;IAED,yDAqCC;IAED,2BA0EC;IAED,uDAEC;IAED,wDAEC;IAED,qCAKC;IAED;;;MAwDC;IAED,kGAeC;IAED,mGAeC;IAED,wEAQC;IAED,uBAMC;IAED,sBAIC;IAED,uBAMC;IAED,wBAIC;IAED,0BAKC;IAED,8BAMC;IAED,wBAYC;IAED,sBAIC;IAED,kEAWC;IAED,kFAYC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,2DAIC;IAED,6CAEC;IAED,sDAeC;IAED,4DASC;IAED,qDAkBC;IAED,6CAIC;IAED,sDA6BC;IAED,kEAqBC;IAED,4GAkCC;IAED,uEAyCC;IAED,0EAiBC;IAED,oEASC;IAED,0FAwBC;IAED,gCASC;IAED,iEAwBC;IAED,4FAmBC;IAED,6CAUC;IAED,qDAUC;IAED,qFAeC;IAED,+BAmBC;IAED,kDAOC;IAED,sFA2BC;IAED,mFAGC;IAED,wFAGC;IAED,sEAUC;IAED,mEAYC;IAED,wDAKC;IAED,sDAOC;IAED,mDAMC;IAED,kDAKC;IAED;;;;;;;;;;;;MAoCC;IAED,oFAMC;IAED,6EA2BC;IAED,qCAeC;IAED,+FAYC;IAED,wDAUC;IAED,4EAKC;IAED,mEAKC;IAED;;;MAMC;IAED,gEAKC;IAED,uEAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,2DAMC;IAED,uDAoBC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,iEAMC;IAED,uEAQC;IAED,mEAKC;IAED,yEAQC;IAED,gFAGC;IAED,6CAqBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAUC;IAED,4EAaC;IAED,4DAGC;IAED,qDAKC;IAED,gDAYC;IAGD,6DAgBC;CACF"}
1
+ {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AA8IA;IAsCE;;;;;;;;;;;MAWE;IAEF,+BAgBC;IA9DD,gCAAgC;IAChC,aAAa;IACb,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,0BAAuD;IACvD,4BAAyB;IACzB,0BAAuB;IACvB,kCAA+B;IAC/B,qBAAqC;IACrC,4BAAiC;IACjC,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,iCAEG;IACH,cAAU;IACV,cAAa;IACb,iBAAY;IACZ,gBAAc;IACd,oBAAkB;IAClB,sBAAwB;IACxB,2BAAqC;IAiBnC,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF,uBAAmD;IACnD;;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,oBAAiD;IAMnD,mCASC;IAED,2DAYC;IAED,yCAmBC;IAED,oCASC;IAED,sBA6BC;IAED,8DAeC;IAED;;;;MAeC;IAED,6CAMC;IAED,2CAsBC;IAED,kDA6BC;IAED,4DASC;IAED,gEAsDC;IAED,mCASC;IAED,uBASC;IAED,yDAqCC;IAED,2BA0EC;IAED,uDAEC;IAED,wDAEC;IAED,qCAKC;IAED;;;MAwDC;IAED,kGAeC;IAED,mGAeC;IAED,wEAQC;IAED,uBAMC;IAED,sBAIC;IAED,uBAMC;IAED,wBAIC;IAED,0BAKC;IAED,8BAMC;IAED,wBAYC;IAED,sBAIC;IAED,kEAWC;IAED,kFAYC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,2DAIC;IAED,6CAEC;IAED,sDAeC;IAED,4DASC;IAED,qDAkBC;IAED,6CAIC;IAED,sDA6BC;IAED,kEAqBC;IAED,4GAkCC;IAED,uEAyCC;IAED,0EAiBC;IAED,oEASC;IAED,0FAwBC;IAED,gCASC;IAED,iEAwBC;IAED,4FAmBC;IAED,6CAUC;IAED,qDAUC;IAED,qFAeC;IAED,+BAmBC;IAED,kDAOC;IAED,sFA2BC;IAED,mFAGC;IAED,wFAGC;IAED,sEAUC;IAED,mEAYC;IAED,wDAKC;IAED,sDAOC;IAED,mDAMC;IAED,kDAKC;IAED;;;;;;;;;;;;MAoCC;IAED,oFAMC;IAED,6EA2BC;IAED,qCAeC;IAED,+FAYC;IAED,wDAUC;IAED,4EAKC;IAED,mEAKC;IAED;;;MAMC;IAED,gEAKC;IAED,uEAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,2DAMC;IAED,uDAoBC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,iEAMC;IAED,uEAQC;IAED,mEAKC;IAED,yEAQC;IAED,gFAGC;IAED,6CAmBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAUC;IAED,4EAaC;IAED,4DAGC;IAED,qDAKC;IAED,gDAYC;IAGD,6DAgBC;CACF;AAvrDD;IAgBE,4CAIC;IAnBD,gBAAe;IACf,sBAAkB;IAClB,sBAAkB;IAClB,eAAW;IACX,gBAAY;IACZ,gBAAY;IACZ,eAAa;IACb,eAAa;IACb,6BAA0B;IAC1B,mBAAe;IACf,qBAAiB;IACjB,sBAAoB;IACpB,oBAAkB;IAClB,0BAA2B;IAKzB,uBAAkC;IAGpC,mCAEC;CACF;AAuBD;IACE,iCAA8B;CAa/B"}