spessasynth_lib 4.3.5 → 4.3.7

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.
package/dist/index.d.ts CHANGED
@@ -449,13 +449,21 @@ interface BasicSynthesizerMessageData {
449
449
  enableWarning: boolean;
450
450
  enableGroup: boolean;
451
451
  };
452
+ lockChannelMIDIParameter: { [K in keyof ChannelMIDIParameter]: {
453
+ parameter: K;
454
+ isLocked: boolean;
455
+ } }[keyof ChannelMIDIParameter];
452
456
  setChannelSystemParameter: { [K in keyof ChannelSystemParameter]: {
453
- type: K;
454
- data: ChannelSystemParameter[K];
457
+ parameter: K;
458
+ value: ChannelSystemParameter[K];
455
459
  } }[keyof ChannelSystemParameter];
460
+ lockGlobalMIDIParameter: { [K in keyof GlobalMIDIParameter]: {
461
+ parameter: K;
462
+ isLocked: boolean;
463
+ } }[keyof GlobalMIDIParameter];
456
464
  setGlobalSystemParameter: { [K in keyof GlobalSystemParameter]: {
457
- type: K;
458
- data: GlobalSystemParameter[K];
465
+ parameter: K;
466
+ value: GlobalSystemParameter[K];
459
467
  } }[keyof GlobalSystemParameter];
460
468
  soundBankManager: { [K in keyof WorkletSBKManagerData]: {
461
469
  type: K;
@@ -612,10 +620,18 @@ declare class LibMIDIChannel {
612
620
  */
613
621
  get voiceCount(): number;
614
622
  /**
615
- * Toggles drums on a given channel.
616
- * @param isDrum If the channel should be drums.
623
+ * Locks or unlocks a given Channel MIDI Parameter.
624
+ * This prevents any changes to it until it's unlocked.
625
+ * @param parameter The Channel MIDI Parameter to lock.
626
+ * @param isLocked If the parameter should be locked.
617
627
  */
618
- setDrums(isDrum: boolean): void;
628
+ lockMIDIParameter<P extends keyof ChannelMIDIParameter>(parameter: P, isLocked: boolean): void;
629
+ /**
630
+ * Sets a system parameter of the channel.
631
+ * @param parameter The type of the parameter to set.
632
+ * @param value The value to set for the parameter.
633
+ */
634
+ setSystemParameter<P extends keyof ChannelSystemParameter>(parameter: P, value: ChannelSystemParameter[P]): void;
619
635
  /**
620
636
  * Causes the given midi channel to ignore controller messages for the given controller number.
621
637
  * @param controller 0-127 MIDI CC number.
@@ -623,11 +639,10 @@ declare class LibMIDIChannel {
623
639
  */
624
640
  lockController(controller: MIDIController, isLocked: boolean): void;
625
641
  /**
626
- * Sets a system parameter of the channel.
627
- * @param parameter The type of the parameter to set.
628
- * @param value The value to set for the parameter.
642
+ * Toggles drums on a given channel.
643
+ * @param isDrum If the channel should be drums.
629
644
  */
630
- setSystemParameter<P extends keyof ChannelSystemParameter>(parameter: P, value: ChannelSystemParameter[P]): void;
645
+ setDrums(isDrum: boolean): void;
631
646
  }
632
647
  //#endregion
633
648
  //#region src/synthesizer/basic/basic_synthesizer.d.ts
@@ -721,12 +736,19 @@ declare abstract class BasicSynthesizer {
721
736
  * @param enableGroup Enable groups (to group a lot of logs)
722
737
  */
723
738
  setLogLevel(enableInfo: boolean, enableWarning: boolean, enableGroup: boolean): void;
739
+ /**
740
+ * Locks or unlocks a given Global MIDI Parameter.
741
+ * This prevents any changes to it until it's unlocked.
742
+ * @param parameter The Global MIDI Parameter to lock.
743
+ * @param isLocked If the parameter should be locked.
744
+ */
745
+ lockMIDIParameter<P extends keyof GlobalMIDIParameter>(parameter: P, isLocked: boolean): void;
724
746
  /**
725
747
  * Sets a system parameter to a given value.
726
- * @param type The parameter to set.
748
+ * @param parameter The parameter to set.
727
749
  * @param value The value to set.
728
750
  */
729
- setSystemParameter<K extends keyof GlobalSystemParameter>(type: K, value: GlobalSystemParameter[K]): void;
751
+ setSystemParameter<K extends keyof GlobalSystemParameter>(parameter: K, value: GlobalSystemParameter[K]): void;
730
752
  /**
731
753
  * Gets a complete snapshot of the synthesizer, effects.
732
754
  */
package/dist/index.js CHANGED
@@ -317,14 +317,35 @@ var LibMIDIChannel = class {
317
317
  this._voiceCount = value;
318
318
  }
319
319
  /**
320
- * Toggles drums on a given channel.
321
- * @param isDrum If the channel should be drums.
320
+ * Locks or unlocks a given Channel MIDI Parameter.
321
+ * This prevents any changes to it until it's unlocked.
322
+ * @param parameter The Channel MIDI Parameter to lock.
323
+ * @param isLocked If the parameter should be locked.
322
324
  */
323
- setDrums(isDrum) {
325
+ lockMIDIParameter(parameter, isLocked) {
324
326
  this.synth.post({
327
+ type: "lockChannelMIDIParameter",
325
328
  channelNumber: this.channel,
326
- type: "setDrums",
327
- data: isDrum
329
+ data: {
330
+ parameter,
331
+ isLocked
332
+ }
333
+ });
334
+ }
335
+ /**
336
+ * Sets a system parameter of the channel.
337
+ * @param parameter The type of the parameter to set.
338
+ * @param value The value to set for the parameter.
339
+ */
340
+ setSystemParameter(parameter, value) {
341
+ this._systemParameters[parameter] = value;
342
+ this.synth.post({
343
+ type: "setChannelSystemParameter",
344
+ channelNumber: this.channel,
345
+ data: {
346
+ parameter,
347
+ value
348
+ }
328
349
  });
329
350
  }
330
351
  /**
@@ -343,19 +364,14 @@ var LibMIDIChannel = class {
343
364
  });
344
365
  }
345
366
  /**
346
- * Sets a system parameter of the channel.
347
- * @param parameter The type of the parameter to set.
348
- * @param value The value to set for the parameter.
367
+ * Toggles drums on a given channel.
368
+ * @param isDrum If the channel should be drums.
349
369
  */
350
- setSystemParameter(parameter, value) {
351
- this._systemParameters[parameter] = value;
370
+ setDrums(isDrum) {
352
371
  this.synth.post({
353
- type: "setChannelSystemParameter",
354
372
  channelNumber: this.channel,
355
- data: {
356
- type: parameter,
357
- data: value
358
- }
373
+ type: "setDrums",
374
+ data: isDrum
359
375
  });
360
376
  }
361
377
  /**
@@ -528,18 +544,34 @@ var BasicSynthesizer = class {
528
544
  });
529
545
  }
530
546
  /**
547
+ * Locks or unlocks a given Global MIDI Parameter.
548
+ * This prevents any changes to it until it's unlocked.
549
+ * @param parameter The Global MIDI Parameter to lock.
550
+ * @param isLocked If the parameter should be locked.
551
+ */
552
+ lockMIDIParameter(parameter, isLocked) {
553
+ this.post({
554
+ type: "lockGlobalMIDIParameter",
555
+ data: {
556
+ parameter,
557
+ isLocked
558
+ },
559
+ channelNumber: -1
560
+ });
561
+ }
562
+ /**
531
563
  * Sets a system parameter to a given value.
532
- * @param type The parameter to set.
564
+ * @param parameter The parameter to set.
533
565
  * @param value The value to set.
534
566
  */
535
- setSystemParameter(type, value) {
536
- this._systemParameters[type] = value;
567
+ setSystemParameter(parameter, value) {
568
+ this._systemParameters[parameter] = value;
537
569
  this.post({
538
570
  type: "setGlobalSystemParameter",
539
571
  channelNumber: -1,
540
572
  data: {
541
- type,
542
- data: value
573
+ parameter,
574
+ value
543
575
  }
544
576
  });
545
577
  }
@@ -1532,11 +1564,17 @@ var BasicSynthesizerCore = class {
1532
1564
  case "addNewChannel":
1533
1565
  this.synthesizer.createMIDIChannel();
1534
1566
  break;
1567
+ case "lockGlobalMIDIParameter":
1568
+ this.synthesizer.lockMIDIParameter(m.data.parameter, m.data.isLocked);
1569
+ break;
1535
1570
  case "setGlobalSystemParameter":
1536
- this.synthesizer.setSystemParameter(m.data.type, m.data.data);
1571
+ this.synthesizer.setSystemParameter(m.data.parameter, m.data.value);
1572
+ break;
1573
+ case "lockChannelMIDIParameter":
1574
+ channelObject?.lockMIDIParameter(m.data.parameter, m.data.isLocked);
1537
1575
  break;
1538
1576
  case "setChannelSystemParameter":
1539
- channelObject?.setSystemParameter(m.data.type, m.data.data);
1577
+ channelObject?.setSystemParameter(m.data.parameter, m.data.value);
1540
1578
  break;
1541
1579
  case "setDrums":
1542
1580
  channelObject?.setDrums(m.data);
@@ -2351,7 +2389,7 @@ var Sequencer = class {
2351
2389
  0
2352
2390
  ]);
2353
2391
  }
2354
- this.midiOut.send([MIDIMessageTypes.systemExclusive, ...MIDIUtils.gsData(64, 0, 127, [0])]);
2392
+ this.midiOut.send([MIDIMessageTypes.systemExclusive, ...MIDIUtils.gs(64, 0, 127, [0])]);
2355
2393
  }
2356
2394
  recalculateStartTime(time) {
2357
2395
  this.absoluteStartTime = this.synth.currentTime - time / this._playbackRate;