@blibliki/engine 0.1.19 → 0.1.20

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/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@blibliki/engine",
3
- "version": "0.1.19",
3
+ "version": "0.1.20",
4
+ "source": "src/index.ts",
4
5
  "main": "dist/main.cjs.js",
5
6
  "module": "dist/main.esm.js",
6
7
  "types": "dist/build/index.d.ts",
@@ -16,13 +17,6 @@
16
17
  "tone": "^14.7.77",
17
18
  "uuid": "^8.3.2"
18
19
  },
19
- "scripts": {
20
- "start": "tsc -w -p tsconfig.json",
21
- "build": "rollup -c",
22
- "lint": "eslint src",
23
- "ts:check": "tsc --noEmit",
24
- "test": "jest"
25
- },
26
20
  "devDependencies": {
27
21
  "@rollup/plugin-commonjs": "^25.0.7",
28
22
  "@rollup/plugin-node-resolve": "^15.2.3",
@@ -38,9 +32,15 @@
38
32
  "jest": "^29.2.2",
39
33
  "prettier": "^2.7.1",
40
34
  "rollup": "^4.10.0",
41
- "rollup-plugin-dts": "^6.1.0",
42
35
  "ts-jest": "^29.0.3",
43
36
  "typescript": "^5.2.2",
44
37
  "typescript-language-server": "^4.0.0"
38
+ },
39
+ "scripts": {
40
+ "start": "tsc -w -p tsconfig.json",
41
+ "build": "rollup -c",
42
+ "lint": "eslint src",
43
+ "ts:check": "tsc --noEmit",
44
+ "test": "jest"
45
45
  }
46
- }
46
+ }
@@ -105,7 +105,10 @@ export default abstract class EnvelopeModule<EnvelopeLike extends Env>
105
105
  };
106
106
 
107
107
  triggerRelease = (note: Note, triggeredAt: number) => {
108
+ if (this.activeNote && this.activeNote !== note.fullName) return;
109
+
108
110
  this.internalModule.triggerRelease(triggeredAt);
111
+ this.activeNote = undefined;
109
112
  };
110
113
 
111
114
  private maxTime(stage: EnvelopeStages): number {
@@ -59,10 +59,10 @@ export default class MidiSelector extends Module<
59
59
  if (!this.onMidiEvent || !midiId) return; // Ugly hack because of weird super bug
60
60
 
61
61
  const midiDevice = Engine.midiDeviceManager.find(midiId);
62
- midiDevice?.addEventListener(this.onMidiEvent);
62
+ midiDevice?.addEventListener(this.forwardMidiEvent);
63
63
  }
64
64
 
65
- private _onMidiEvent = (midiEvent: MidiEvent) => {
65
+ private forwardMidiEvent = (midiEvent: MidiEvent) => {
66
66
  this.midiOutput.onMidiEvent(midiEvent);
67
67
  };
68
68
 
@@ -70,6 +70,6 @@ export default class MidiSelector extends Module<
70
70
  if (!this.selectedId) return;
71
71
 
72
72
  const midiDevice = Engine.midiDeviceManager.find(this.selectedId);
73
- midiDevice?.removeEventListener(this._onMidiEvent);
73
+ midiDevice?.removeEventListener(this.forwardMidiEvent);
74
74
  }
75
75
  }
@@ -48,16 +48,18 @@ export default class VirtualMidi extends Module<
48
48
  this.midiOutput.onMidiEvent(midiEvent);
49
49
  }
50
50
 
51
- triggerAttack = (note: Note) => {
51
+ triggerAttack = (note: Note, triggerAttack: number) => {
52
52
  this.activeNotes = [...this.activeNotes, note.fullName];
53
53
  Engine._triggerPropsUpdate(this.id, this.props);
54
+ this.sendMidi(MidiEvent.fromNote(note, true, triggerAttack));
54
55
  };
55
56
 
56
- triggerRelease = (note: Note) => {
57
+ triggerRelease = (note: Note, triggerAttack: number) => {
57
58
  this.activeNotes = this.activeNotes.filter(
58
59
  (name) => name !== note.fullName
59
60
  );
60
61
  Engine._triggerPropsUpdate(this.id, this.props);
62
+ this.sendMidi(MidiEvent.fromNote(note, false, triggerAttack));
61
63
  };
62
64
 
63
65
  serialize() {