@blibliki/engine 0.1.4 → 0.1.6
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/build/Engine.d.ts +5 -41
- package/build/Engine.js +2 -3
- package/build/Engine.js.map +1 -1
- package/build/Module/Base.d.ts +4 -15
- package/build/Module/Base.js +1 -15
- package/build/Module/Base.js.map +1 -1
- package/build/Module/BitCrusher.d.ts +11 -0
- package/build/Module/BitCrusher.js +21 -0
- package/build/Module/BitCrusher.js.map +1 -0
- package/build/Module/Delay.d.ts +14 -0
- package/build/Module/Delay.js +29 -0
- package/build/Module/Delay.js.map +1 -0
- package/build/Module/Distortion.d.ts +11 -0
- package/build/Module/Distortion.js +21 -0
- package/build/Module/Distortion.js.map +1 -0
- package/build/Module/Effect.d.ts +14 -0
- package/build/Module/Effect.js +22 -0
- package/build/Module/Effect.js.map +1 -0
- package/build/Module/Envelope/AmpEnvelope.d.ts +3 -2
- package/build/Module/Envelope/AmpEnvelope.js +4 -6
- package/build/Module/Envelope/AmpEnvelope.js.map +1 -1
- package/build/Module/Envelope/Base.d.ts +8 -7
- package/build/Module/Envelope/Base.js +10 -11
- package/build/Module/Envelope/Base.js.map +1 -1
- package/build/Module/Envelope/FreqEnvelope.d.ts +2 -2
- package/build/Module/Envelope/FreqEnvelope.js +4 -6
- package/build/Module/Envelope/FreqEnvelope.js.map +1 -1
- package/build/Module/Envelope/index.d.ts +1 -1
- package/build/Module/Envelope/index.js +1 -1
- package/build/Module/Envelope/index.js.map +1 -1
- package/build/Module/Filter.d.ts +8 -8
- package/build/Module/Filter.js +9 -9
- package/build/Module/Filter.js.map +1 -1
- package/build/Module/Master.d.ts +1 -1
- package/build/Module/Master.js +1 -2
- package/build/Module/Master.js.map +1 -1
- package/build/Module/MidiSelector.d.ts +2 -0
- package/build/Module/MidiSelector.js +12 -6
- package/build/Module/MidiSelector.js.map +1 -1
- package/build/Module/Oscillator.d.ts +5 -5
- package/build/Module/Oscillator.js +6 -7
- package/build/Module/Oscillator.js.map +1 -1
- package/build/Module/PolyModule.d.ts +9 -18
- package/build/Module/PolyModule.js +9 -26
- package/build/Module/PolyModule.js.map +1 -1
- package/build/Module/Reverb.d.ts +14 -0
- package/build/Module/Reverb.js +29 -0
- package/build/Module/Reverb.js.map +1 -0
- package/build/Module/VirtualMidi.d.ts +2 -2
- package/build/Module/VirtualMidi.js +1 -2
- package/build/Module/VirtualMidi.js.map +1 -1
- package/build/Module/VoiceScheduler.d.ts +7 -7
- package/build/Module/VoiceScheduler.js +5 -6
- package/build/Module/VoiceScheduler.js.map +1 -1
- package/build/Module/Volume.d.ts +5 -5
- package/build/Module/Volume.js +6 -7
- package/build/Module/Volume.js.map +1 -1
- package/build/Module/index.d.ts +2 -13
- package/build/Module/index.js +32 -37
- package/build/Module/index.js.map +1 -1
- package/build/index.d.ts +0 -1
- package/build/index.js +0 -1
- package/build/index.js.map +1 -1
- package/build/routes.js +9 -1
- package/build/routes.js.map +1 -1
- package/package.json +3 -1
- package/src/Engine.ts +2 -7
- package/src/Module/Base.ts +5 -16
- package/src/Module/BitCrusher.ts +32 -0
- package/src/Module/Delay.ts +40 -0
- package/src/Module/Distortion.ts +32 -0
- package/src/Module/Effect.ts +42 -0
- package/src/Module/Envelope/AmpEnvelope.ts +4 -6
- package/src/Module/Envelope/Base.ts +10 -13
- package/src/Module/Envelope/FreqEnvelope.ts +4 -6
- package/src/Module/Envelope/index.ts +1 -1
- package/src/Module/Filter.ts +15 -15
- package/src/Module/Master.ts +1 -2
- package/src/Module/MidiSelector.ts +14 -6
- package/src/Module/Oscillator.ts +8 -10
- package/src/Module/PolyModule.ts +15 -30
- package/src/Module/Reverb.ts +40 -0
- package/src/Module/VirtualMidi.ts +1 -2
- package/src/Module/VoiceScheduler.ts +7 -10
- package/src/Module/Volume.ts +7 -9
- package/src/Module/index.ts +35 -37
- package/src/index.ts +0 -1
- package/src/routes.ts +14 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoiceScheduler.js","sourceRoot":"","sources":["../../src/Module/VoiceScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"VoiceScheduler.js","sourceRoot":"","sources":["../../src/Module/VoiceScheduler.ts"],"names":[],"mappings":"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"}
|
package/build/Module/Volume.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Volume as Vol } from "tone";
|
|
2
|
-
import Module from "
|
|
2
|
+
import Module, { Voicable } from "./Base";
|
|
3
3
|
import PolyModule from "./PolyModule";
|
|
4
|
-
export interface VolumeInterface {
|
|
4
|
+
export interface VolumeInterface extends Voicable {
|
|
5
5
|
volume: number;
|
|
6
|
-
voiceNo?: number;
|
|
7
6
|
}
|
|
8
|
-
|
|
7
|
+
declare class MonoVolume extends Module<Vol, VolumeInterface> {
|
|
9
8
|
constructor(name: string, props: Partial<VolumeInterface>);
|
|
10
9
|
get volume(): number;
|
|
11
10
|
set volume(value: number);
|
|
12
11
|
}
|
|
13
|
-
export
|
|
12
|
+
export default class Volume extends PolyModule<MonoVolume, VolumeInterface> {
|
|
14
13
|
constructor(name: string, props: Partial<VolumeInterface>);
|
|
15
14
|
}
|
|
15
|
+
export {};
|
package/build/Module/Volume.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { Volume as Vol } from "tone";
|
|
2
|
-
import Module
|
|
3
|
-
import PolyModule
|
|
2
|
+
import Module from "./Base";
|
|
3
|
+
import PolyModule from "./PolyModule";
|
|
4
4
|
const InitialProps = {
|
|
5
5
|
volume: -100,
|
|
6
6
|
};
|
|
7
|
-
|
|
7
|
+
class MonoVolume extends Module {
|
|
8
8
|
constructor(name, props) {
|
|
9
9
|
super(new Vol(), {
|
|
10
10
|
name,
|
|
11
11
|
props: { ...InitialProps, ...props },
|
|
12
|
-
type: ModuleType.Volume,
|
|
13
12
|
});
|
|
14
13
|
}
|
|
15
14
|
get volume() {
|
|
@@ -20,12 +19,12 @@ export default class Volume extends Module {
|
|
|
20
19
|
this.internalModule.volume.value = this.volume;
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
|
-
export class
|
|
22
|
+
export default class Volume extends PolyModule {
|
|
24
23
|
constructor(name, props) {
|
|
25
|
-
super(
|
|
24
|
+
super({
|
|
26
25
|
name,
|
|
26
|
+
child: MonoVolume,
|
|
27
27
|
props: { ...InitialProps, ...props },
|
|
28
|
-
type: ModuleType.Volume,
|
|
29
28
|
});
|
|
30
29
|
this.registerBasicInputs();
|
|
31
30
|
this.registerBasicOutputs();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Volume.js","sourceRoot":"","sources":["../../src/Module/Volume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,
|
|
1
|
+
{"version":3,"file":"Volume.js","sourceRoot":"","sources":["../../src/Module/Volume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,MAAoB,MAAM,QAAQ,CAAC;AAC1C,OAAO,UAAU,MAAM,cAAc,CAAC;AAMtC,MAAM,YAAY,GAAoB;IACpC,MAAM,EAAE,CAAC,GAAG;CACb,CAAC;AAEF,MAAM,UAAW,SAAQ,MAA4B;IACnD,YAAY,IAAY,EAAE,KAA+B;QACvD,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE;YACf,IAAI;YACJ,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM,CAAC,KAAa;QACtB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAE/C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IACjD,CAAC;CACF;AAED,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,UAAuC;IACzE,YAAY,IAAY,EAAE,KAA+B;QACvD,KAAK,CAAC;YACJ,IAAI;YACJ,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;CACF"}
|
package/build/Module/index.d.ts
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
import Module, { Connectable } from "./Base";
|
|
2
2
|
import PolyModule from "./PolyModule";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import Filter, { PolyFilter } from "./Filter";
|
|
6
|
-
import Master from "./Master";
|
|
7
|
-
import VoiceScheduler, { Voice } from "./VoiceScheduler";
|
|
8
|
-
import MidiSelector from "./MidiSelector";
|
|
9
|
-
import { PolyAmpEnvelope } from "./Envelope/AmpEnvelope";
|
|
10
|
-
import { PolyEnvelope } from "./Envelope/Base";
|
|
11
|
-
import Volume, { PolyVolume } from "./Volume";
|
|
12
|
-
import VirtualMidi from "./VirtualMidi";
|
|
13
|
-
export { default, ModuleType } from "./Base";
|
|
14
|
-
export { default as PolyModule, PolyModuleType } from "./PolyModule";
|
|
3
|
+
export { default } from "./Base";
|
|
4
|
+
export { default as PolyModule } from "./PolyModule";
|
|
15
5
|
export type { ModuleInterface, Connectable, Triggerable } from "./Base";
|
|
16
6
|
export { default as Filter } from "./Filter";
|
|
17
7
|
export { default as Oscillator } from "./Oscillator";
|
|
18
8
|
export { Envelope, AmpEnvelope, FreqEnvelope, EnvelopeStages, } from "./Envelope";
|
|
19
9
|
export declare type AudioModule = Module<Connectable, any> | PolyModule<Module<Connectable, any>, any>;
|
|
20
10
|
export declare function createModule(name: string, type: string, props: any): AudioModule;
|
|
21
|
-
export declare function moduleClassFromType(type: string): typeof Oscillator | typeof PolyOscillator | typeof Envelope | typeof PolyEnvelope | typeof AmpEnvelope | typeof PolyAmpEnvelope | typeof Filter | typeof PolyFilter | typeof Master | typeof VoiceScheduler | typeof Voice | typeof MidiSelector | typeof Volume | typeof PolyVolume | typeof VirtualMidi;
|
package/build/Module/index.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import Oscillator, { PolyOscillator } from "./Oscillator";
|
|
1
|
+
import { camelCase, upperFirst } from "lodash";
|
|
2
|
+
import Oscillator from "./Oscillator";
|
|
4
3
|
import { Envelope, AmpEnvelope, FreqEnvelope } from "./Envelope";
|
|
5
|
-
import Filter
|
|
4
|
+
import Filter from "./Filter";
|
|
6
5
|
import Master from "./Master";
|
|
7
|
-
import VoiceScheduler
|
|
6
|
+
import VoiceScheduler from "./VoiceScheduler";
|
|
8
7
|
import MidiSelector from "./MidiSelector";
|
|
9
|
-
import
|
|
10
|
-
import { PolyFreqEnvelope } from "./Envelope/FreqEnvelope";
|
|
11
|
-
import { PolyEnvelope } from "./Envelope/Base";
|
|
12
|
-
import Volume, { PolyVolume } from "./Volume";
|
|
8
|
+
import Volume from "./Volume";
|
|
13
9
|
import VirtualMidi from "./VirtualMidi";
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
import Reverb from "./Reverb";
|
|
11
|
+
import Delay from "./Delay";
|
|
12
|
+
import Distortion from "./Distortion";
|
|
13
|
+
import BitCrusher from "./BitCrusher";
|
|
14
|
+
export { default } from "./Base";
|
|
15
|
+
export { default as PolyModule } from "./PolyModule";
|
|
16
16
|
export { default as Filter } from "./Filter";
|
|
17
17
|
export { default as Oscillator } from "./Oscillator";
|
|
18
18
|
export { Envelope, AmpEnvelope, FreqEnvelope, EnvelopeStages, } from "./Envelope";
|
|
@@ -20,44 +20,39 @@ export function createModule(name, type, props) {
|
|
|
20
20
|
const klass = moduleClassFromType(type);
|
|
21
21
|
return new klass(name, props);
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
function moduleClassFromType(type) {
|
|
24
|
+
type = upperFirst(camelCase(type));
|
|
24
25
|
switch (type) {
|
|
25
|
-
case
|
|
26
|
+
case Oscillator.name:
|
|
26
27
|
return Oscillator;
|
|
27
|
-
case
|
|
28
|
+
case Envelope.name:
|
|
28
29
|
return Envelope;
|
|
29
|
-
case
|
|
30
|
+
case AmpEnvelope.name:
|
|
30
31
|
return AmpEnvelope;
|
|
31
|
-
case
|
|
32
|
+
case FreqEnvelope.name:
|
|
32
33
|
return FreqEnvelope;
|
|
33
|
-
case
|
|
34
|
+
case Filter.name:
|
|
34
35
|
return Filter;
|
|
35
|
-
case
|
|
36
|
+
case Volume.name:
|
|
36
37
|
return Volume;
|
|
37
|
-
case
|
|
38
|
-
return PolyOscillator;
|
|
39
|
-
case PolyModuleType.Envelope:
|
|
40
|
-
return PolyEnvelope;
|
|
41
|
-
case PolyModuleType.AmpEnvelope:
|
|
42
|
-
return PolyAmpEnvelope;
|
|
43
|
-
case PolyModuleType.FreqEnvelope:
|
|
44
|
-
return PolyFreqEnvelope;
|
|
45
|
-
case PolyModuleType.Filter:
|
|
46
|
-
return PolyFilter;
|
|
47
|
-
case PolyModuleType.Volume:
|
|
48
|
-
return PolyVolume;
|
|
49
|
-
case ModuleType.Master:
|
|
38
|
+
case Master.name:
|
|
50
39
|
return Master;
|
|
51
|
-
case
|
|
52
|
-
return Voice;
|
|
53
|
-
case PolyModuleType.VoiceScheduler:
|
|
40
|
+
case VoiceScheduler.name:
|
|
54
41
|
return VoiceScheduler;
|
|
55
|
-
case
|
|
42
|
+
case MidiSelector.name:
|
|
56
43
|
return MidiSelector;
|
|
57
|
-
case
|
|
44
|
+
case VirtualMidi.name:
|
|
58
45
|
return VirtualMidi;
|
|
46
|
+
case Reverb.name:
|
|
47
|
+
return Reverb;
|
|
48
|
+
case Delay.name:
|
|
49
|
+
return Delay;
|
|
50
|
+
case Distortion.name:
|
|
51
|
+
return Distortion;
|
|
52
|
+
case BitCrusher.name:
|
|
53
|
+
return BitCrusher;
|
|
59
54
|
default:
|
|
60
|
-
throw Error(
|
|
55
|
+
throw Error(`Unknown module type ${type}`);
|
|
61
56
|
}
|
|
62
57
|
}
|
|
63
58
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Module/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Module/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAG/C,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAMpB,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,IAAY,EACZ,KAAU;IAEV,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAExC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnC,QAAQ,IAAI,EAAE;QACZ,KAAK,UAAU,CAAC,IAAI;YAClB,OAAO,UAAU,CAAC;QACpB,KAAK,QAAQ,CAAC,IAAI;YAChB,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW,CAAC,IAAI;YACnB,OAAO,WAAW,CAAC;QACrB,KAAK,YAAY,CAAC,IAAI;YACpB,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI;YACd,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI;YACd,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI;YACd,OAAO,MAAM,CAAC;QAChB,KAAK,cAAc,CAAC,IAAI;YACtB,OAAO,cAAc,CAAC;QACxB,KAAK,YAAY,CAAC,IAAI;YACpB,OAAO,YAAY,CAAC;QACtB,KAAK,WAAW,CAAC,IAAI;YACnB,OAAO,WAAW,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI;YACd,OAAO,MAAM,CAAC;QAChB,KAAK,KAAK,CAAC,IAAI;YACb,OAAO,KAAK,CAAC;QACf,KAAK,UAAU,CAAC,IAAI;YAClB,OAAO,UAAU,CAAC;QACpB,KAAK,UAAU,CAAC,IAAI;YAClB,OAAO,UAAU,CAAC;QACpB;YACE,MAAM,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;KAC9C;AACH,CAAC"}
|
package/build/index.d.ts
CHANGED
package/build/index.js
CHANGED
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC"}
|
package/build/routes.js
CHANGED
|
@@ -6,7 +6,15 @@ export function createRoute(props) {
|
|
|
6
6
|
}
|
|
7
7
|
export function applyRoutes(routes) {
|
|
8
8
|
Object.values(Engine.modules).forEach((m) => m.unplugAll());
|
|
9
|
-
const succesedConnections = routes
|
|
9
|
+
const succesedConnections = routes
|
|
10
|
+
.sort((r1, r2) => {
|
|
11
|
+
if (r1.outputName === "number of voices")
|
|
12
|
+
return -1;
|
|
13
|
+
if (r2.outputName === "number of voices")
|
|
14
|
+
return 1;
|
|
15
|
+
return 0;
|
|
16
|
+
})
|
|
17
|
+
.map((route) => {
|
|
10
18
|
const { sourceId, outputName, destinationId, inputName } = route;
|
|
11
19
|
const source = Engine.findById(sourceId);
|
|
12
20
|
const destination = Engine.findById(destinationId);
|
package/build/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,MAAM,MAAM,IAAI,CAAC;AAaxB,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAEpB,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAwB;IAClD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAE5D,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,MAAM,MAAM,IAAI,CAAC;AAaxB,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAEpB,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAwB;IAClD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAE5D,MAAM,mBAAmB,GAAG,MAAM;SAC/B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,EAAE,CAAC,UAAU,KAAK,kBAAkB;YAAE,OAAO,CAAC,CAAC,CAAC;QACpD,IAAI,EAAE,CAAC,UAAU,KAAK,kBAAkB;YAAE,OAAO,CAAC,CAAC;QAEnD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAEjE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAEnD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEL,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;KACpD;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;KACjD;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blibliki/engine",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"main": "build/index.js",
|
|
5
5
|
"types": "build/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
7
|
+
"@types/lodash": "^4.14.186",
|
|
8
|
+
"lodash": "^4.17.21",
|
|
7
9
|
"tone": "^14.7.77",
|
|
8
10
|
"uuid": "^8.3.2"
|
|
9
11
|
},
|
package/src/Engine.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { Context, setContext } from "tone";
|
|
|
2
2
|
import MidiDeviceManager from "./MidiDeviceManager";
|
|
3
3
|
import MidiEvent from "./MidiEvent";
|
|
4
4
|
|
|
5
|
-
import { ModuleType } from "./Module";
|
|
6
5
|
import { AudioModule, createModule } from "./Module";
|
|
7
6
|
import Master from "./Module/Master";
|
|
8
7
|
import VirtualMidi from "./Module/VirtualMidi";
|
|
@@ -112,11 +111,7 @@ class Engine {
|
|
|
112
111
|
get master() {
|
|
113
112
|
if (this._master) return this._master.serialize();
|
|
114
113
|
|
|
115
|
-
const masterProps = this.registerModule(
|
|
116
|
-
"Master",
|
|
117
|
-
"master",
|
|
118
|
-
ModuleType.Master
|
|
119
|
-
);
|
|
114
|
+
const masterProps = this.registerModule("Master", "Master");
|
|
120
115
|
this._master = this.modules[masterProps.id] as Master;
|
|
121
116
|
|
|
122
117
|
return masterProps;
|
|
@@ -130,7 +125,7 @@ class Engine {
|
|
|
130
125
|
|
|
131
126
|
dispose() {
|
|
132
127
|
Object.values(this.modules).forEach((m) => {
|
|
133
|
-
if (m.
|
|
128
|
+
if (m.constructor.name === "Master") return;
|
|
134
129
|
|
|
135
130
|
m.dispose();
|
|
136
131
|
});
|
package/src/Module/Base.ts
CHANGED
|
@@ -5,19 +5,6 @@ import { Input, Output, IOInterface } from "./IO";
|
|
|
5
5
|
import MidiEvent from "../MidiEvent";
|
|
6
6
|
import { AudioModule, PolyModule } from "../Module";
|
|
7
7
|
|
|
8
|
-
export enum ModuleType {
|
|
9
|
-
Oscillator = "monoOscillator",
|
|
10
|
-
Envelope = "monoEnvelope",
|
|
11
|
-
AmpEnvelope = "monoAmpEnvelope",
|
|
12
|
-
FreqEnvelope = "monoFreqEnvelope",
|
|
13
|
-
Filter = "monoFilter",
|
|
14
|
-
Master = "master",
|
|
15
|
-
Voice = "voice",
|
|
16
|
-
MidiSelector = "midiSelector",
|
|
17
|
-
VirtualMidi = "virtualMidi",
|
|
18
|
-
Volume = "monoVolume",
|
|
19
|
-
}
|
|
20
|
-
|
|
21
8
|
export interface Connectable {
|
|
22
9
|
connect: (inputNode: InputNode) => void;
|
|
23
10
|
disconnect: (inputNode?: InputNode) => void;
|
|
@@ -29,9 +16,12 @@ export interface Triggerable {
|
|
|
29
16
|
triggerRelease: Function;
|
|
30
17
|
}
|
|
31
18
|
|
|
19
|
+
export interface Voicable {
|
|
20
|
+
voiceNo?: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
32
23
|
export interface ModuleInterface {
|
|
33
24
|
name: string;
|
|
34
|
-
type: ModuleType;
|
|
35
25
|
props?: { [key: string]: any };
|
|
36
26
|
voiceNo?: number;
|
|
37
27
|
}
|
|
@@ -55,7 +45,6 @@ class Module<InternalModule extends Connectable, PropsInterface>
|
|
|
55
45
|
name: string;
|
|
56
46
|
inputs: Input[] = [];
|
|
57
47
|
outputs: Output[] = [];
|
|
58
|
-
type: ModuleType;
|
|
59
48
|
readonly voiceNo?: number;
|
|
60
49
|
updatedAt: Date;
|
|
61
50
|
_props: PropsInterface;
|
|
@@ -156,7 +145,7 @@ class Module<InternalModule extends Connectable, PropsInterface>
|
|
|
156
145
|
return {
|
|
157
146
|
id: this.id,
|
|
158
147
|
name: this.name,
|
|
159
|
-
type: this.
|
|
148
|
+
type: this.constructor.name,
|
|
160
149
|
props: this.props,
|
|
161
150
|
inputs: this.inputs.map((i) => i.serialize()),
|
|
162
151
|
outputs: this.outputs.map((i) => i.serialize()),
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { BitCrusher as InternalBitCrasher } from "tone";
|
|
2
|
+
|
|
3
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
4
|
+
|
|
5
|
+
interface BitCrusherInterface extends EffectInterface {
|
|
6
|
+
bits: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const InitialProps: Partial<BitCrusherInterface> = {
|
|
10
|
+
bits: 16,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default class BitCrusher extends Effect<
|
|
14
|
+
InternalBitCrasher,
|
|
15
|
+
BitCrusherInterface
|
|
16
|
+
> {
|
|
17
|
+
constructor(name: string, props: Partial<BitCrusherInterface>) {
|
|
18
|
+
super(name, new InternalBitCrasher(), {
|
|
19
|
+
...InitialProps,
|
|
20
|
+
...props,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
get bits() {
|
|
25
|
+
return this._props["bits"];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
set bits(value: number) {
|
|
29
|
+
this._props = { ...this.props, bits: value };
|
|
30
|
+
this.internalModule.bits.value = this.bits;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { FeedbackDelay } from "tone";
|
|
2
|
+
|
|
3
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
4
|
+
|
|
5
|
+
interface DelayInterface extends EffectInterface {
|
|
6
|
+
delayTime: number;
|
|
7
|
+
feedback: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const InitialProps: Partial<DelayInterface> = {
|
|
11
|
+
delayTime: 1,
|
|
12
|
+
feedback: 0.3,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default class Delay extends Effect<FeedbackDelay, DelayInterface> {
|
|
16
|
+
constructor(name: string, props: Partial<DelayInterface>) {
|
|
17
|
+
super(name, new FeedbackDelay(), {
|
|
18
|
+
...InitialProps,
|
|
19
|
+
...props,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get delayTime() {
|
|
24
|
+
return this._props["delayTime"];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
set delayTime(value: number) {
|
|
28
|
+
this._props = { ...this.props, delayTime: value };
|
|
29
|
+
this.internalModule.delayTime.value = this.delayTime;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get feedback() {
|
|
33
|
+
return this._props["feedback"];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
set feedback(value: number) {
|
|
37
|
+
this._props = { ...this.props, feedback: value };
|
|
38
|
+
this.internalModule.feedback.value = this.feedback;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Distortion as InternalDistortion } from "tone";
|
|
2
|
+
|
|
3
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
4
|
+
|
|
5
|
+
interface DistortionInterface extends EffectInterface {
|
|
6
|
+
drive: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const InitialProps: Partial<DistortionInterface> = {
|
|
10
|
+
drive: 0.3,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default class Distortion extends Effect<
|
|
14
|
+
InternalDistortion,
|
|
15
|
+
DistortionInterface
|
|
16
|
+
> {
|
|
17
|
+
constructor(name: string, props: Partial<DistortionInterface>) {
|
|
18
|
+
super(name, new InternalDistortion(), {
|
|
19
|
+
...InitialProps,
|
|
20
|
+
...props,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
get drive() {
|
|
25
|
+
return this._props["drive"];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
set drive(value: number) {
|
|
29
|
+
this._props = { ...this.props, drive: value };
|
|
30
|
+
this.internalModule.distortion = this.drive;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Signal } from "tone";
|
|
2
|
+
import Module, { Connectable } from "./Base";
|
|
3
|
+
|
|
4
|
+
interface EffectLike extends Connectable {
|
|
5
|
+
wet: Signal<"normalRange">;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface EffectInterface {
|
|
9
|
+
wet: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const InitialProps: EffectInterface = {
|
|
13
|
+
wet: 1,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export default abstract class Effect<
|
|
17
|
+
InternalEffect extends EffectLike,
|
|
18
|
+
ModuleInterface extends EffectInterface
|
|
19
|
+
> extends Module<InternalEffect, ModuleInterface> {
|
|
20
|
+
constructor(
|
|
21
|
+
name: string,
|
|
22
|
+
internalModule: InternalEffect,
|
|
23
|
+
props: Partial<ModuleInterface>
|
|
24
|
+
) {
|
|
25
|
+
super(internalModule, {
|
|
26
|
+
name,
|
|
27
|
+
props: { ...InitialProps, ...props },
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
this.registerBasicInputs();
|
|
31
|
+
this.registerBasicOutputs();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
get wet() {
|
|
35
|
+
return this._props["wet"];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
set wet(value: number) {
|
|
39
|
+
this._props = { ...this.props, wet: value };
|
|
40
|
+
this.internalModule.wet.value = this.wet;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { AmplitudeEnvelope } from "tone";
|
|
2
2
|
|
|
3
|
-
import { ModuleType } from "../index";
|
|
4
3
|
import Base, { EnvelopeInterface, PolyBase } from "./Base";
|
|
5
|
-
import { PolyModuleType } from "../PolyModule";
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
class MonoAmpEnvelope extends Base<AmplitudeEnvelope> {
|
|
8
6
|
constructor(name: string, props: EnvelopeInterface) {
|
|
9
|
-
super(name,
|
|
7
|
+
super(name, new AmplitudeEnvelope(), props);
|
|
10
8
|
}
|
|
11
9
|
}
|
|
12
10
|
|
|
13
|
-
export class
|
|
11
|
+
export default class AmpEnvelope extends PolyBase<MonoAmpEnvelope> {
|
|
14
12
|
constructor(name: string, props: Partial<EnvelopeInterface>) {
|
|
15
|
-
super(name,
|
|
13
|
+
super(name, MonoAmpEnvelope, props);
|
|
16
14
|
}
|
|
17
15
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Envelope as Env } from "tone";
|
|
2
2
|
|
|
3
|
-
import Module, {
|
|
4
|
-
import PolyModule
|
|
3
|
+
import Module, { Connectable, Triggerable, Voicable } from "../Base";
|
|
4
|
+
import PolyModule from "../PolyModule";
|
|
5
5
|
import MidiEvent from "../../MidiEvent";
|
|
6
6
|
|
|
7
7
|
export const enum EnvelopeStages {
|
|
@@ -16,7 +16,7 @@ const MIN_TIME = 0.01;
|
|
|
16
16
|
const SUSTAIN_MAX_VALUE = 1;
|
|
17
17
|
const SUSTAIN_MIN_VALUE = 0;
|
|
18
18
|
|
|
19
|
-
export interface EnvelopeInterface {
|
|
19
|
+
export interface EnvelopeInterface extends Voicable {
|
|
20
20
|
attack: number;
|
|
21
21
|
decay: number;
|
|
22
22
|
sustain: number;
|
|
@@ -40,13 +40,11 @@ export default abstract class EnvelopeModule<EnvelopeLike extends Env>
|
|
|
40
40
|
|
|
41
41
|
constructor(
|
|
42
42
|
name: string,
|
|
43
|
-
type: ModuleType,
|
|
44
43
|
internalModule: EnvelopeLike,
|
|
45
44
|
props: EnvelopeInterface
|
|
46
45
|
) {
|
|
47
46
|
super(internalModule, {
|
|
48
47
|
name,
|
|
49
|
-
type,
|
|
50
48
|
props: { ...InitialProps, ...props },
|
|
51
49
|
});
|
|
52
50
|
}
|
|
@@ -120,13 +118,12 @@ export abstract class PolyBase<
|
|
|
120
118
|
> extends PolyModule<EnvelopeModule, EnvelopeInterface> {
|
|
121
119
|
constructor(
|
|
122
120
|
name: string,
|
|
123
|
-
|
|
124
|
-
polyType: PolyModuleType,
|
|
121
|
+
child: new (name: string, props: EnvelopeInterface) => EnvelopeModule,
|
|
125
122
|
props: Partial<EnvelopeInterface>
|
|
126
123
|
) {
|
|
127
|
-
super(
|
|
124
|
+
super({
|
|
128
125
|
name,
|
|
129
|
-
|
|
126
|
+
child,
|
|
130
127
|
props: { ...InitialProps, ...props },
|
|
131
128
|
});
|
|
132
129
|
|
|
@@ -143,15 +140,15 @@ export abstract class PolyBase<
|
|
|
143
140
|
}
|
|
144
141
|
}
|
|
145
142
|
|
|
146
|
-
|
|
143
|
+
class MonoEnvelope extends EnvelopeModule<Env> {
|
|
147
144
|
constructor(name: string, props: EnvelopeInterface) {
|
|
148
|
-
super(name,
|
|
145
|
+
super(name, new Env(), props);
|
|
149
146
|
}
|
|
150
147
|
}
|
|
151
148
|
|
|
152
|
-
export class
|
|
149
|
+
export class Envelope extends PolyBase<MonoEnvelope> {
|
|
153
150
|
constructor(name: string, props: Partial<EnvelopeInterface>) {
|
|
154
|
-
super(name,
|
|
151
|
+
super(name, MonoEnvelope, {
|
|
155
152
|
...InitialProps,
|
|
156
153
|
...props,
|
|
157
154
|
});
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { FrequencyEnvelope } from "tone";
|
|
2
2
|
|
|
3
|
-
import { ModuleType } from "../Base";
|
|
4
3
|
import Filter from "../Filter";
|
|
5
4
|
import { Output } from "../IO";
|
|
6
|
-
import { PolyModuleType } from "../PolyModule";
|
|
7
5
|
|
|
8
6
|
import Base, { EnvelopeInterface, PolyBase } from "./Base";
|
|
9
7
|
|
|
@@ -15,13 +13,13 @@ const InitialProps: FreqEnvelopeInterface = {
|
|
|
15
13
|
amount: 0,
|
|
16
14
|
};
|
|
17
15
|
|
|
18
|
-
export
|
|
16
|
+
export class MonoFreqEnvelope extends Base<FrequencyEnvelope> {
|
|
19
17
|
private _frequency: number;
|
|
20
18
|
private _amount: number;
|
|
21
19
|
filter: Filter;
|
|
22
20
|
|
|
23
21
|
constructor(name: string, props: EnvelopeInterface) {
|
|
24
|
-
super(name,
|
|
22
|
+
super(name, new FrequencyEnvelope(), {
|
|
25
23
|
...InitialProps,
|
|
26
24
|
...props,
|
|
27
25
|
});
|
|
@@ -47,9 +45,9 @@ export default class FreqEnvelope extends Base<FrequencyEnvelope> {
|
|
|
47
45
|
}
|
|
48
46
|
}
|
|
49
47
|
|
|
50
|
-
export class
|
|
48
|
+
export default class FreqEnvelope extends PolyBase<MonoFreqEnvelope> {
|
|
51
49
|
constructor(name: string, props: Partial<EnvelopeInterface>) {
|
|
52
|
-
super(name,
|
|
50
|
+
super(name, MonoFreqEnvelope, props);
|
|
53
51
|
|
|
54
52
|
this.registerOutputs();
|
|
55
53
|
}
|