@blibliki/engine 0.1.16 → 0.1.18
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/.eslintrc.js +14 -0
- package/.parcerc +6 -0
- package/README.md +122 -0
- package/dist/main.cjs.js +33 -0
- package/package.json +21 -22
- package/rollup.config.mjs +21 -0
- package/src/Engine.ts +43 -42
- package/src/core/IO/AudioNode.ts +77 -0
- package/src/core/IO/Collection.ts +76 -0
- package/src/core/IO/ForwardNode.ts +192 -0
- package/src/core/IO/MidiNode.ts +67 -0
- package/src/core/IO/Node.ts +117 -0
- package/src/core/IO/index.ts +47 -0
- package/src/core/Module/MonoModule.ts +219 -0
- package/src/core/Module/PolyModule.ts +206 -0
- package/src/core/Module/index.ts +15 -0
- package/src/{Note → core/Note}/index.ts +19 -4
- package/src/{MidiDeviceManager.ts → core/midi/MidiDeviceManager.ts} +20 -15
- package/src/core/midi/MidiEvent.ts +91 -0
- package/src/core/midi/index.ts +5 -0
- package/src/index.ts +8 -12
- package/src/{Module → modules}/BitCrusher.ts +15 -4
- package/src/{Module → modules}/Delay.ts +15 -4
- package/src/{Module → modules}/Distortion.ts +15 -4
- package/src/{Module → modules}/Effect.ts +11 -7
- package/src/modules/Envelope/AmpEnvelope.ts +23 -0
- package/src/{Module → modules}/Envelope/Base.ts +50 -31
- package/src/{Module → modules}/Envelope/FreqEnvelope.ts +18 -23
- package/src/{Module → modules}/Filter.ts +18 -46
- package/src/{Module → modules}/Master.ts +8 -2
- package/src/{Module → modules}/MidiSelector.ts +18 -14
- package/src/{Module → modules}/Oscillator.ts +27 -16
- package/src/{Module → modules}/Reverb.ts +15 -4
- package/src/{Module → modules}/Sequencer.ts +17 -13
- package/src/{Module → modules}/VirtualMidi.ts +16 -12
- package/src/modules/VoiceScheduler.ts +145 -0
- package/src/{Module → modules}/Volume.ts +23 -15
- package/src/{Module → modules}/index.ts +14 -21
- package/src/routes.ts +19 -18
- package/src/types.ts +3 -0
- package/src/utils.ts +18 -0
- package/test/MockingModules.ts +27 -0
- package/test/Module/Oscillator.test.ts +1 -1
- package/test/core/IO.test.ts +172 -0
- package/build/Engine.d.ts +0 -94
- package/build/Engine.js +0 -158
- package/build/Engine.js.map +0 -1
- package/build/MidiDevice.d.ts +0 -25
- package/build/MidiDevice.js +0 -45
- package/build/MidiDevice.js.map +0 -1
- package/build/MidiDeviceManager.d.ts +0 -13
- package/build/MidiDeviceManager.js +0 -59
- package/build/MidiDeviceManager.js.map +0 -1
- package/build/MidiEvent.d.ts +0 -18
- package/build/MidiEvent.js +0 -64
- package/build/MidiEvent.js.map +0 -1
- package/build/Module/Base.d.ts +0 -65
- package/build/Module/Base.js +0 -138
- package/build/Module/Base.js.map +0 -1
- package/build/Module/BitCrusher.d.ts +0 -12
- package/build/Module/BitCrusher.js +0 -22
- package/build/Module/BitCrusher.js.map +0 -1
- package/build/Module/DataSequencer.d.ts +0 -25
- package/build/Module/DataSequencer.js +0 -72
- package/build/Module/DataSequencer.js.map +0 -1
- package/build/Module/Delay.d.ts +0 -15
- package/build/Module/Delay.js +0 -30
- package/build/Module/Delay.js.map +0 -1
- package/build/Module/Distortion.d.ts +0 -12
- package/build/Module/Distortion.js +0 -22
- package/build/Module/Distortion.js.map +0 -1
- package/build/Module/Effect.d.ts +0 -14
- package/build/Module/Effect.js +0 -22
- package/build/Module/Effect.js.map +0 -1
- package/build/Module/Envelope/AmpEnvelope.d.ts +0 -10
- package/build/Module/Envelope/AmpEnvelope.js +0 -14
- package/build/Module/Envelope/AmpEnvelope.js.map +0 -1
- package/build/Module/Envelope/Base.d.ts +0 -47
- package/build/Module/Envelope/Base.js +0 -106
- package/build/Module/Envelope/Base.js.map +0 -1
- package/build/Module/Envelope/FreqEnvelope.d.ts +0 -18
- package/build/Module/Envelope/FreqEnvelope.js +0 -50
- package/build/Module/Envelope/FreqEnvelope.js.map +0 -1
- package/build/Module/Envelope/index.d.ts +0 -3
- package/build/Module/Envelope/index.js +0 -4
- package/build/Module/Envelope/index.js.map +0 -1
- package/build/Module/Filter.d.ts +0 -37
- package/build/Module/Filter.js +0 -100
- package/build/Module/Filter.js.map +0 -1
- package/build/Module/IO.d.ts +0 -39
- package/build/Module/IO.js +0 -59
- package/build/Module/IO.js.map +0 -1
- package/build/Module/Master.d.ts +0 -8
- package/build/Module/Master.js +0 -12
- package/build/Module/Master.js.map +0 -1
- package/build/Module/MidiSelector.d.ts +0 -17
- package/build/Module/MidiSelector.js +0 -50
- package/build/Module/MidiSelector.js.map +0 -1
- package/build/Module/Oscillator.d.ts +0 -45
- package/build/Module/Oscillator.js +0 -136
- package/build/Module/Oscillator.js.map +0 -1
- package/build/Module/PolyModule.d.ts +0 -49
- package/build/Module/PolyModule.js +0 -175
- package/build/Module/PolyModule.js.map +0 -1
- package/build/Module/Reverb.d.ts +0 -15
- package/build/Module/Reverb.js +0 -30
- package/build/Module/Reverb.js.map +0 -1
- package/build/Module/Sequencer.d.ts +0 -38
- package/build/Module/Sequencer.js +0 -131
- package/build/Module/Sequencer.js.map +0 -1
- package/build/Module/VirtualMidi.d.ts +0 -28
- package/build/Module/VirtualMidi.js +0 -53
- package/build/Module/VirtualMidi.js.map +0 -1
- package/build/Module/VoiceScheduler.d.ts +0 -38
- package/build/Module/VoiceScheduler.js +0 -130
- package/build/Module/VoiceScheduler.js.map +0 -1
- package/build/Module/Volume.d.ts +0 -20
- package/build/Module/Volume.js +0 -48
- package/build/Module/Volume.js.map +0 -1
- package/build/Module/index.d.ts +0 -14
- package/build/Module/index.js +0 -66
- package/build/Module/index.js.map +0 -1
- package/build/Note/frequencyTable.d.ts +0 -4
- package/build/Note/frequencyTable.js +0 -146
- package/build/Note/frequencyTable.js.map +0 -1
- package/build/Note/index.d.ts +0 -25
- package/build/Note/index.js +0 -81
- package/build/Note/index.js.map +0 -1
- package/build/index.d.ts +0 -8
- package/build/index.js +0 -5
- package/build/index.js.map +0 -1
- package/build/routes.d.ts +0 -17
- package/build/routes.js +0 -31
- package/build/routes.js.map +0 -1
- package/src/MidiEvent.ts +0 -93
- package/src/Module/Base.ts +0 -220
- package/src/Module/DataSequencer.ts +0 -101
- package/src/Module/Envelope/AmpEnvelope.ts +0 -17
- package/src/Module/IO.ts +0 -85
- package/src/Module/PolyModule.ts +0 -234
- package/src/Module/VoiceScheduler.ts +0 -161
- /package/src/{Note → core/Note}/frequencyTable.ts +0 -0
- /package/src/{MidiDevice.ts → core/midi/MidiDevice.ts} +0 -0
- /package/src/{Module → modules}/Envelope/index.ts +0 -0
package/.eslintrc.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
extends: [
|
|
3
|
+
"eslint:recommended",
|
|
4
|
+
"plugin:@typescript-eslint/recommended",
|
|
5
|
+
"plugin:@typescript-eslint/recommended-requiring-type-checking",
|
|
6
|
+
],
|
|
7
|
+
parser: "@typescript-eslint/parser",
|
|
8
|
+
plugins: ["@typescript-eslint"],
|
|
9
|
+
parserOptions: {
|
|
10
|
+
project: true,
|
|
11
|
+
tsconfigRootDir: __dirname,
|
|
12
|
+
},
|
|
13
|
+
root: true,
|
|
14
|
+
};
|
package/.parcerc
ADDED
package/README.md
CHANGED
|
@@ -12,6 +12,128 @@ One notable advantage of the data-driven approach is the ability to easily save
|
|
|
12
12
|
|
|
13
13
|
Blibliki Engine offers polyphony support and provides access to essential audio modules such as oscillators, filters, envelopes, and effects. It's important to note that the list of available audio modules will be extended as the development of the engine continues.
|
|
14
14
|
|
|
15
|
+
## Installing
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install @blibliki/engine
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```JavaScript
|
|
24
|
+
import Engine from "@blibliki/engine";
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
#### Initialize
|
|
28
|
+
|
|
29
|
+
`Engine.initialize` returns a promise that resolves when the engine is initialized and ready for use.
|
|
30
|
+
|
|
31
|
+
```JavaScript
|
|
32
|
+
Engine.initialize({ context: { lookAhead: 0.03 } });
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
#### Start / Stop
|
|
36
|
+
|
|
37
|
+
This methods are triggering all audio modules to start or stop
|
|
38
|
+
|
|
39
|
+
```JavaScript
|
|
40
|
+
Engine.start();
|
|
41
|
+
Engine.stop();
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### Modules
|
|
45
|
+
|
|
46
|
+
##### AudioModule structure
|
|
47
|
+
|
|
48
|
+
All audio modules share the shame structure.
|
|
49
|
+
The props structure vary per audioModule.
|
|
50
|
+
|
|
51
|
+
```JavaScript
|
|
52
|
+
{
|
|
53
|
+
id: string,
|
|
54
|
+
name: string,
|
|
55
|
+
props: Object,
|
|
56
|
+
inputs: [{
|
|
57
|
+
id: string,
|
|
58
|
+
name: string,
|
|
59
|
+
moduleId: string,
|
|
60
|
+
moduleName: string
|
|
61
|
+
}],
|
|
62
|
+
outputs: [{
|
|
63
|
+
id: string,
|
|
64
|
+
name: string,
|
|
65
|
+
moduleId: string,
|
|
66
|
+
moduleName: string
|
|
67
|
+
}],
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
##### Create audio module
|
|
72
|
+
|
|
73
|
+
```JavaScript
|
|
74
|
+
const master = Engine.master;
|
|
75
|
+
const osc = Engine.addModule({ name: "Osc", type: "Oscillator" });
|
|
76
|
+
const volume = Engine.addModule({
|
|
77
|
+
name: "Vol",
|
|
78
|
+
type: "Volume",
|
|
79
|
+
props: { volume: -10 },
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
##### Update props
|
|
84
|
+
|
|
85
|
+
```JavaScript
|
|
86
|
+
// Update props
|
|
87
|
+
Engine.updatePropsModule(volume.id, { volume: -20 });
|
|
88
|
+
Engine.updatePropsModule(osc.id, { wave: "square", fine: -10 });
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
##### Remove audio module
|
|
92
|
+
|
|
93
|
+
```JavaScript
|
|
94
|
+
Engine.removeModule(osc.id);
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
#### Routes
|
|
98
|
+
|
|
99
|
+
##### Route structure
|
|
100
|
+
|
|
101
|
+
```JavaScript
|
|
102
|
+
{
|
|
103
|
+
id: string,
|
|
104
|
+
sourceId: string,
|
|
105
|
+
outputName: string,
|
|
106
|
+
destinationId: string,
|
|
107
|
+
inputName: string,
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
##### Add Route
|
|
112
|
+
|
|
113
|
+
```JavaScript
|
|
114
|
+
// Connect oscillator out to volume input
|
|
115
|
+
const oscVolRoute = Engine.addRoute({
|
|
116
|
+
sourceId: osc.id,
|
|
117
|
+
outputName: "output",
|
|
118
|
+
destinationId: volume.id,
|
|
119
|
+
inputName: "input",
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// Connect oscillator out to volume input
|
|
123
|
+
const volToMaster = Engine.addRoute({
|
|
124
|
+
sourceId: volume.id,
|
|
125
|
+
outputName: "output",
|
|
126
|
+
destinationId: master.id,
|
|
127
|
+
inputName: "input",
|
|
128
|
+
});
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
##### Remove route
|
|
132
|
+
|
|
133
|
+
```JavaScript
|
|
134
|
+
Engine.removeRoute(oscVolRoute.id);
|
|
135
|
+
```
|
|
136
|
+
|
|
15
137
|
## Contributing
|
|
16
138
|
|
|
17
139
|
As a work-in-progress project, Blibliki Engine actively welcomes contributions and feedback from the community. Whether it's reporting issues, suggesting new features, or submitting code changes, contributors are encouraged to get involved and help shape the future of Blibliki Engine.
|