@blibliki/engine 0.1.4 → 0.1.5
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/Module/Base.d.ts +5 -1
- package/build/Module/Base.js +4 -0
- package/build/Module/Base.js.map +1 -1
- package/build/Module/BitCrusher.d.ts +11 -0
- package/build/Module/BitCrusher.js +22 -0
- package/build/Module/BitCrusher.js.map +1 -0
- package/build/Module/Delay.d.ts +14 -0
- package/build/Module/Delay.js +30 -0
- package/build/Module/Delay.js.map +1 -0
- package/build/Module/Distortion.d.ts +11 -0
- package/build/Module/Distortion.js +22 -0
- package/build/Module/Distortion.js.map +1 -0
- package/build/Module/Effect.d.ts +14 -0
- package/build/Module/Effect.js +23 -0
- package/build/Module/Effect.js.map +1 -0
- package/build/Module/Reverb.d.ts +14 -0
- package/build/Module/Reverb.js +30 -0
- package/build/Module/Reverb.js.map +1 -0
- package/build/Module/index.d.ts +5 -1
- package/build/Module/index.js +12 -0
- package/build/Module/index.js.map +1 -1
- package/build/routes.js +9 -1
- package/build/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/Module/Base.ts +4 -0
- package/src/Module/BitCrusher.ts +33 -0
- package/src/Module/Delay.ts +41 -0
- package/src/Module/Distortion.ts +33 -0
- package/src/Module/Effect.ts +44 -0
- package/src/Module/Reverb.ts +41 -0
- package/src/Module/index.ts +12 -0
- package/src/routes.ts +14 -7
package/build/Module/Base.d.ts
CHANGED
|
@@ -12,7 +12,11 @@ export declare enum ModuleType {
|
|
|
12
12
|
Voice = "voice",
|
|
13
13
|
MidiSelector = "midiSelector",
|
|
14
14
|
VirtualMidi = "virtualMidi",
|
|
15
|
-
Volume = "monoVolume"
|
|
15
|
+
Volume = "monoVolume",
|
|
16
|
+
Reverb = "reverb",
|
|
17
|
+
Delay = "delay",
|
|
18
|
+
Distortion = "distortion",
|
|
19
|
+
BitCrusher = "bitCrusher"
|
|
16
20
|
}
|
|
17
21
|
export interface Connectable {
|
|
18
22
|
connect: (inputNode: InputNode) => void;
|
package/build/Module/Base.js
CHANGED
|
@@ -13,6 +13,10 @@ export var ModuleType;
|
|
|
13
13
|
ModuleType["MidiSelector"] = "midiSelector";
|
|
14
14
|
ModuleType["VirtualMidi"] = "virtualMidi";
|
|
15
15
|
ModuleType["Volume"] = "monoVolume";
|
|
16
|
+
ModuleType["Reverb"] = "reverb";
|
|
17
|
+
ModuleType["Delay"] = "delay";
|
|
18
|
+
ModuleType["Distortion"] = "distortion";
|
|
19
|
+
ModuleType["BitCrusher"] = "bitCrusher";
|
|
16
20
|
})(ModuleType || (ModuleType = {}));
|
|
17
21
|
export class DummnyInternalModule {
|
|
18
22
|
connect(inputNode) {
|
package/build/Module/Base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Base.js","sourceRoot":"","sources":["../../src/Module/Base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAe,MAAM,MAAM,CAAC;AAElD,OAAO,EAAe,UAAU,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"Base.js","sourceRoot":"","sources":["../../src/Module/Base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BitCrusher as InternalBitCrasher } from "tone";
|
|
2
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
3
|
+
interface BitCrusherInterface extends EffectInterface {
|
|
4
|
+
bits: number;
|
|
5
|
+
}
|
|
6
|
+
export default class Delay extends Effect<InternalBitCrasher, BitCrusherInterface> {
|
|
7
|
+
constructor(name: string, props: Partial<BitCrusherInterface>);
|
|
8
|
+
get bits(): number;
|
|
9
|
+
set bits(value: number);
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BitCrusher as InternalBitCrasher } from "tone";
|
|
2
|
+
import { ModuleType } from "./Base";
|
|
3
|
+
import Effect from "./Effect";
|
|
4
|
+
const InitialProps = {
|
|
5
|
+
bits: 16,
|
|
6
|
+
};
|
|
7
|
+
export default class Delay extends Effect {
|
|
8
|
+
constructor(name, props) {
|
|
9
|
+
super(name, ModuleType.BitCrusher, new InternalBitCrasher(), {
|
|
10
|
+
...InitialProps,
|
|
11
|
+
...props,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
get bits() {
|
|
15
|
+
return this._props["bits"];
|
|
16
|
+
}
|
|
17
|
+
set bits(value) {
|
|
18
|
+
this._props = { ...this.props, bits: value };
|
|
19
|
+
this.internalModule.bits.value = this.bits;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=BitCrusher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BitCrusher.js","sourceRoot":"","sources":["../../src/Module/BitCrusher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,MAA2B,MAAM,UAAU,CAAC;AAMnD,MAAM,YAAY,GAAiC;IACjD,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,MAGlC;IACC,YAAY,IAAY,EAAE,KAAmC;QAC3D,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,kBAAkB,EAAE,EAAE;YAC3D,GAAG,YAAY;YACf,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI,CAAC,KAAa;QACpB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FeedbackDelay } from "tone";
|
|
2
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
3
|
+
interface DelayInterface extends EffectInterface {
|
|
4
|
+
delayTime: number;
|
|
5
|
+
feedback: number;
|
|
6
|
+
}
|
|
7
|
+
export default class Delay extends Effect<FeedbackDelay, DelayInterface> {
|
|
8
|
+
constructor(name: string, props: Partial<DelayInterface>);
|
|
9
|
+
get delayTime(): number;
|
|
10
|
+
set delayTime(value: number);
|
|
11
|
+
get feedback(): number;
|
|
12
|
+
set feedback(value: number);
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { FeedbackDelay } from "tone";
|
|
2
|
+
import { ModuleType } from "./Base";
|
|
3
|
+
import Effect from "./Effect";
|
|
4
|
+
const InitialProps = {
|
|
5
|
+
delayTime: 1,
|
|
6
|
+
feedback: 0.3,
|
|
7
|
+
};
|
|
8
|
+
export default class Delay extends Effect {
|
|
9
|
+
constructor(name, props) {
|
|
10
|
+
super(name, ModuleType.Delay, new FeedbackDelay(), {
|
|
11
|
+
...InitialProps,
|
|
12
|
+
...props,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
get delayTime() {
|
|
16
|
+
return this._props["delayTime"];
|
|
17
|
+
}
|
|
18
|
+
set delayTime(value) {
|
|
19
|
+
this._props = { ...this.props, delayTime: value };
|
|
20
|
+
this.internalModule.delayTime.value = this.delayTime;
|
|
21
|
+
}
|
|
22
|
+
get feedback() {
|
|
23
|
+
return this._props["feedback"];
|
|
24
|
+
}
|
|
25
|
+
set feedback(value) {
|
|
26
|
+
this._props = { ...this.props, feedback: value };
|
|
27
|
+
this.internalModule.feedback.value = this.feedback;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=Delay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Delay.js","sourceRoot":"","sources":["../../src/Module/Delay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,MAA2B,MAAM,UAAU,CAAC;AAOnD,MAAM,YAAY,GAA4B;IAC5C,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,GAAG;CACd,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,MAAqC;IACtE,YAAY,IAAY,EAAE,KAA8B;QACtD,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,aAAa,EAAE,EAAE;YACjD,GAAG,YAAY;YACf,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,SAAS,CAAC,KAAa;QACzB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,CAAC,KAAa;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Distortion as InternalDistortion } from "tone";
|
|
2
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
3
|
+
interface DistortionInterface extends EffectInterface {
|
|
4
|
+
drive: number;
|
|
5
|
+
}
|
|
6
|
+
export default class Distortion extends Effect<InternalDistortion, DistortionInterface> {
|
|
7
|
+
constructor(name: string, props: Partial<DistortionInterface>);
|
|
8
|
+
get drive(): number;
|
|
9
|
+
set drive(value: number);
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Distortion as InternalDistortion } from "tone";
|
|
2
|
+
import { ModuleType } from "./Base";
|
|
3
|
+
import Effect from "./Effect";
|
|
4
|
+
const InitialProps = {
|
|
5
|
+
drive: 0.3,
|
|
6
|
+
};
|
|
7
|
+
export default class Distortion extends Effect {
|
|
8
|
+
constructor(name, props) {
|
|
9
|
+
super(name, ModuleType.Distortion, new InternalDistortion(), {
|
|
10
|
+
...InitialProps,
|
|
11
|
+
...props,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
get drive() {
|
|
15
|
+
return this._props["drive"];
|
|
16
|
+
}
|
|
17
|
+
set drive(value) {
|
|
18
|
+
this._props = { ...this.props, drive: value };
|
|
19
|
+
this.internalModule.distortion = this.drive;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=Distortion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Distortion.js","sourceRoot":"","sources":["../../src/Module/Distortion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,MAA2B,MAAM,UAAU,CAAC;AAMnD,MAAM,YAAY,GAAiC;IACjD,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,MAGvC;IACC,YAAY,IAAY,EAAE,KAAmC;QAC3D,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,kBAAkB,EAAE,EAAE;YAC3D,GAAG,YAAY;YACf,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Signal } from "tone";
|
|
2
|
+
import Module, { Connectable, ModuleType } from "./Base";
|
|
3
|
+
interface EffectLike extends Connectable {
|
|
4
|
+
wet: Signal<"normalRange">;
|
|
5
|
+
}
|
|
6
|
+
export interface EffectInterface {
|
|
7
|
+
wet: number;
|
|
8
|
+
}
|
|
9
|
+
export default abstract class Effect<InternalEffect extends EffectLike, ModuleInterface extends EffectInterface> extends Module<InternalEffect, ModuleInterface> {
|
|
10
|
+
constructor(name: string, type: ModuleType, internalModule: InternalEffect, props: Partial<ModuleInterface>);
|
|
11
|
+
get wet(): number;
|
|
12
|
+
set wet(value: number);
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import Module from "./Base";
|
|
2
|
+
const InitialProps = {
|
|
3
|
+
wet: 1,
|
|
4
|
+
};
|
|
5
|
+
export default class Effect extends Module {
|
|
6
|
+
constructor(name, type, internalModule, props) {
|
|
7
|
+
super(internalModule, {
|
|
8
|
+
name,
|
|
9
|
+
type,
|
|
10
|
+
props: { ...InitialProps, ...props },
|
|
11
|
+
});
|
|
12
|
+
this.registerBasicInputs();
|
|
13
|
+
this.registerBasicOutputs();
|
|
14
|
+
}
|
|
15
|
+
get wet() {
|
|
16
|
+
return this._props["wet"];
|
|
17
|
+
}
|
|
18
|
+
set wet(value) {
|
|
19
|
+
this._props = { ...this.props, wet: value };
|
|
20
|
+
this.internalModule.wet.value = this.wet;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=Effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Effect.js","sourceRoot":"","sources":["../../src/Module/Effect.ts"],"names":[],"mappings":"AACA,OAAO,MAAmC,MAAM,QAAQ,CAAC;AAUzD,MAAM,YAAY,GAAoB;IACpC,GAAG,EAAE,CAAC;CACP,CAAC;AAEF,MAAM,CAAC,OAAO,OAAgB,MAG5B,SAAQ,MAAuC;IAC/C,YACE,IAAY,EACZ,IAAgB,EAChB,cAA8B,EAC9B,KAA+B;QAE/B,KAAK,CAAC,cAAc,EAAE;YACpB,IAAI;YACJ,IAAI;YACJ,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;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,GAAG,CAAC,KAAa;QACnB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Reverb as InternalReverb } from "tone";
|
|
2
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
3
|
+
interface ReverbInterface extends EffectInterface {
|
|
4
|
+
decay: number;
|
|
5
|
+
preDelay: number;
|
|
6
|
+
}
|
|
7
|
+
export default class Reverb extends Effect<InternalReverb, ReverbInterface> {
|
|
8
|
+
constructor(name: string, props: Partial<ReverbInterface>);
|
|
9
|
+
get decay(): number;
|
|
10
|
+
set decay(value: number);
|
|
11
|
+
get preDelay(): number;
|
|
12
|
+
set preDelay(value: number);
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Reverb as InternalReverb } from "tone";
|
|
2
|
+
import { ModuleType } from "./Base";
|
|
3
|
+
import Effect from "./Effect";
|
|
4
|
+
const InitialProps = {
|
|
5
|
+
decay: 1.5,
|
|
6
|
+
preDelay: 0.025,
|
|
7
|
+
};
|
|
8
|
+
export default class Reverb extends Effect {
|
|
9
|
+
constructor(name, props) {
|
|
10
|
+
super(name, ModuleType.Reverb, new InternalReverb(), {
|
|
11
|
+
...InitialProps,
|
|
12
|
+
...props,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
get decay() {
|
|
16
|
+
return this._props["decay"];
|
|
17
|
+
}
|
|
18
|
+
set decay(value) {
|
|
19
|
+
this._props = { ...this.props, decay: value };
|
|
20
|
+
this.internalModule.decay = this.decay;
|
|
21
|
+
}
|
|
22
|
+
get preDelay() {
|
|
23
|
+
return this._props["preDelay"];
|
|
24
|
+
}
|
|
25
|
+
set preDelay(value) {
|
|
26
|
+
this._props = { ...this.props, preDelay: value };
|
|
27
|
+
this.internalModule.preDelay = this.preDelay;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=Reverb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Reverb.js","sourceRoot":"","sources":["../../src/Module/Reverb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,MAA2B,MAAM,UAAU,CAAC;AAOnD,MAAM,YAAY,GAA6B;IAC7C,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,MAAuC;IACzE,YAAY,IAAY,EAAE,KAA+B;QACvD,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,cAAc,EAAE,EAAE;YACnD,GAAG,YAAY;YACf,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,CAAC,KAAa;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/C,CAAC;CACF"}
|
package/build/Module/index.d.ts
CHANGED
|
@@ -10,6 +10,10 @@ import { PolyAmpEnvelope } from "./Envelope/AmpEnvelope";
|
|
|
10
10
|
import { PolyEnvelope } from "./Envelope/Base";
|
|
11
11
|
import Volume, { PolyVolume } from "./Volume";
|
|
12
12
|
import VirtualMidi from "./VirtualMidi";
|
|
13
|
+
import Reverb from "./Reverb";
|
|
14
|
+
import Delay from "./Delay";
|
|
15
|
+
import Distortion from "./Distortion";
|
|
16
|
+
import BitCrusher from "./BitCrusher";
|
|
13
17
|
export { default, ModuleType } from "./Base";
|
|
14
18
|
export { default as PolyModule, PolyModuleType } from "./PolyModule";
|
|
15
19
|
export type { ModuleInterface, Connectable, Triggerable } from "./Base";
|
|
@@ -18,4 +22,4 @@ export { default as Oscillator } from "./Oscillator";
|
|
|
18
22
|
export { Envelope, AmpEnvelope, FreqEnvelope, EnvelopeStages, } from "./Envelope";
|
|
19
23
|
export declare type AudioModule = Module<Connectable, any> | PolyModule<Module<Connectable, any>, any>;
|
|
20
24
|
export declare function createModule(name: string, type: string, props: any): AudioModule;
|
|
21
|
-
export declare function moduleClassFromType(type: string): typeof
|
|
25
|
+
export declare function moduleClassFromType(type: string): typeof Reverb | typeof Delay | typeof Distortion | typeof BitCrusher | typeof Oscillator | typeof Envelope | typeof AmpEnvelope | typeof Filter | typeof Volume | typeof PolyOscillator | typeof PolyEnvelope | typeof PolyAmpEnvelope | typeof PolyFilter | typeof PolyVolume | typeof Master | typeof Voice | typeof VoiceScheduler | typeof MidiSelector | typeof VirtualMidi;
|
package/build/Module/index.js
CHANGED
|
@@ -11,6 +11,10 @@ import { PolyFreqEnvelope } from "./Envelope/FreqEnvelope";
|
|
|
11
11
|
import { PolyEnvelope } from "./Envelope/Base";
|
|
12
12
|
import Volume, { PolyVolume } from "./Volume";
|
|
13
13
|
import VirtualMidi from "./VirtualMidi";
|
|
14
|
+
import Reverb from "./Reverb";
|
|
15
|
+
import Delay from "./Delay";
|
|
16
|
+
import Distortion from "./Distortion";
|
|
17
|
+
import BitCrusher from "./BitCrusher";
|
|
14
18
|
export { default, ModuleType } from "./Base";
|
|
15
19
|
export { default as PolyModule, PolyModuleType } from "./PolyModule";
|
|
16
20
|
export { default as Filter } from "./Filter";
|
|
@@ -56,6 +60,14 @@ export function moduleClassFromType(type) {
|
|
|
56
60
|
return MidiSelector;
|
|
57
61
|
case ModuleType.VirtualMidi:
|
|
58
62
|
return VirtualMidi;
|
|
63
|
+
case ModuleType.Reverb:
|
|
64
|
+
return Reverb;
|
|
65
|
+
case ModuleType.Delay:
|
|
66
|
+
return Delay;
|
|
67
|
+
case ModuleType.Distortion:
|
|
68
|
+
return Distortion;
|
|
69
|
+
case ModuleType.BitCrusher:
|
|
70
|
+
return BitCrusher;
|
|
59
71
|
default:
|
|
60
72
|
throw Error("Unknown module type");
|
|
61
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Module/index.ts"],"names":[],"mappings":"AAAA,OAAe,EAAe,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,UAAU,EAAE,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,WAAW,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Module/index.ts"],"names":[],"mappings":"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"}
|
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
package/src/Module/Base.ts
CHANGED
|
@@ -16,6 +16,10 @@ export enum ModuleType {
|
|
|
16
16
|
MidiSelector = "midiSelector",
|
|
17
17
|
VirtualMidi = "virtualMidi",
|
|
18
18
|
Volume = "monoVolume",
|
|
19
|
+
Reverb = "reverb",
|
|
20
|
+
Delay = "delay",
|
|
21
|
+
Distortion = "distortion",
|
|
22
|
+
BitCrusher = "bitCrusher",
|
|
19
23
|
}
|
|
20
24
|
|
|
21
25
|
export interface Connectable {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BitCrusher as InternalBitCrasher } from "tone";
|
|
2
|
+
|
|
3
|
+
import { ModuleType } from "./Base";
|
|
4
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
5
|
+
|
|
6
|
+
interface BitCrusherInterface extends EffectInterface {
|
|
7
|
+
bits: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const InitialProps: Partial<BitCrusherInterface> = {
|
|
11
|
+
bits: 16,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default class Delay extends Effect<
|
|
15
|
+
InternalBitCrasher,
|
|
16
|
+
BitCrusherInterface
|
|
17
|
+
> {
|
|
18
|
+
constructor(name: string, props: Partial<BitCrusherInterface>) {
|
|
19
|
+
super(name, ModuleType.BitCrusher, new InternalBitCrasher(), {
|
|
20
|
+
...InitialProps,
|
|
21
|
+
...props,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
get bits() {
|
|
26
|
+
return this._props["bits"];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
set bits(value: number) {
|
|
30
|
+
this._props = { ...this.props, bits: value };
|
|
31
|
+
this.internalModule.bits.value = this.bits;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { FeedbackDelay } from "tone";
|
|
2
|
+
|
|
3
|
+
import { ModuleType } from "./Base";
|
|
4
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
5
|
+
|
|
6
|
+
interface DelayInterface extends EffectInterface {
|
|
7
|
+
delayTime: number;
|
|
8
|
+
feedback: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const InitialProps: Partial<DelayInterface> = {
|
|
12
|
+
delayTime: 1,
|
|
13
|
+
feedback: 0.3,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export default class Delay extends Effect<FeedbackDelay, DelayInterface> {
|
|
17
|
+
constructor(name: string, props: Partial<DelayInterface>) {
|
|
18
|
+
super(name, ModuleType.Delay, new FeedbackDelay(), {
|
|
19
|
+
...InitialProps,
|
|
20
|
+
...props,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
get delayTime() {
|
|
25
|
+
return this._props["delayTime"];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
set delayTime(value: number) {
|
|
29
|
+
this._props = { ...this.props, delayTime: value };
|
|
30
|
+
this.internalModule.delayTime.value = this.delayTime;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
get feedback() {
|
|
34
|
+
return this._props["feedback"];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
set feedback(value: number) {
|
|
38
|
+
this._props = { ...this.props, feedback: value };
|
|
39
|
+
this.internalModule.feedback.value = this.feedback;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Distortion as InternalDistortion } from "tone";
|
|
2
|
+
|
|
3
|
+
import { ModuleType } from "./Base";
|
|
4
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
5
|
+
|
|
6
|
+
interface DistortionInterface extends EffectInterface {
|
|
7
|
+
drive: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const InitialProps: Partial<DistortionInterface> = {
|
|
11
|
+
drive: 0.3,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default class Distortion extends Effect<
|
|
15
|
+
InternalDistortion,
|
|
16
|
+
DistortionInterface
|
|
17
|
+
> {
|
|
18
|
+
constructor(name: string, props: Partial<DistortionInterface>) {
|
|
19
|
+
super(name, ModuleType.Distortion, new InternalDistortion(), {
|
|
20
|
+
...InitialProps,
|
|
21
|
+
...props,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
get drive() {
|
|
26
|
+
return this._props["drive"];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
set drive(value: number) {
|
|
30
|
+
this._props = { ...this.props, drive: value };
|
|
31
|
+
this.internalModule.distortion = this.drive;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Signal } from "tone";
|
|
2
|
+
import Module, { Connectable, ModuleType } 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
|
+
type: ModuleType,
|
|
23
|
+
internalModule: InternalEffect,
|
|
24
|
+
props: Partial<ModuleInterface>
|
|
25
|
+
) {
|
|
26
|
+
super(internalModule, {
|
|
27
|
+
name,
|
|
28
|
+
type,
|
|
29
|
+
props: { ...InitialProps, ...props },
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
this.registerBasicInputs();
|
|
33
|
+
this.registerBasicOutputs();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
get wet() {
|
|
37
|
+
return this._props["wet"];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
set wet(value: number) {
|
|
41
|
+
this._props = { ...this.props, wet: value };
|
|
42
|
+
this.internalModule.wet.value = this.wet;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Reverb as InternalReverb } from "tone";
|
|
2
|
+
|
|
3
|
+
import { ModuleType } from "./Base";
|
|
4
|
+
import Effect, { EffectInterface } from "./Effect";
|
|
5
|
+
|
|
6
|
+
interface ReverbInterface extends EffectInterface {
|
|
7
|
+
decay: number;
|
|
8
|
+
preDelay: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const InitialProps: Partial<ReverbInterface> = {
|
|
12
|
+
decay: 1.5,
|
|
13
|
+
preDelay: 0.025,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export default class Reverb extends Effect<InternalReverb, ReverbInterface> {
|
|
17
|
+
constructor(name: string, props: Partial<ReverbInterface>) {
|
|
18
|
+
super(name, ModuleType.Reverb, new InternalReverb(), {
|
|
19
|
+
...InitialProps,
|
|
20
|
+
...props,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
get decay() {
|
|
25
|
+
return this._props["decay"];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
set decay(value: number) {
|
|
29
|
+
this._props = { ...this.props, decay: value };
|
|
30
|
+
this.internalModule.decay = this.decay;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
get preDelay() {
|
|
34
|
+
return this._props["preDelay"];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
set preDelay(value: number) {
|
|
38
|
+
this._props = { ...this.props, preDelay: value };
|
|
39
|
+
this.internalModule.preDelay = this.preDelay;
|
|
40
|
+
}
|
|
41
|
+
}
|
package/src/Module/index.ts
CHANGED
|
@@ -11,6 +11,10 @@ import { PolyFreqEnvelope } from "./Envelope/FreqEnvelope";
|
|
|
11
11
|
import { PolyEnvelope } from "./Envelope/Base";
|
|
12
12
|
import Volume, { PolyVolume } from "./Volume";
|
|
13
13
|
import VirtualMidi from "./VirtualMidi";
|
|
14
|
+
import Reverb from "./Reverb";
|
|
15
|
+
import Delay from "./Delay";
|
|
16
|
+
import Distortion from "./Distortion";
|
|
17
|
+
import BitCrusher from "./BitCrusher";
|
|
14
18
|
|
|
15
19
|
export { default, ModuleType } from "./Base";
|
|
16
20
|
export { default as PolyModule, PolyModuleType } from "./PolyModule";
|
|
@@ -75,6 +79,14 @@ export function moduleClassFromType(type: string) {
|
|
|
75
79
|
return MidiSelector;
|
|
76
80
|
case ModuleType.VirtualMidi:
|
|
77
81
|
return VirtualMidi;
|
|
82
|
+
case ModuleType.Reverb:
|
|
83
|
+
return Reverb;
|
|
84
|
+
case ModuleType.Delay:
|
|
85
|
+
return Delay;
|
|
86
|
+
case ModuleType.Distortion:
|
|
87
|
+
return Distortion;
|
|
88
|
+
case ModuleType.BitCrusher:
|
|
89
|
+
return BitCrusher;
|
|
78
90
|
default:
|
|
79
91
|
throw Error("Unknown module type");
|
|
80
92
|
}
|
package/src/routes.ts
CHANGED
|
@@ -22,16 +22,23 @@ export function createRoute(props: RouteProps) {
|
|
|
22
22
|
export function applyRoutes(routes: RouteInterface[]) {
|
|
23
23
|
Object.values(Engine.modules).forEach((m) => m.unplugAll());
|
|
24
24
|
|
|
25
|
-
const succesedConnections = routes
|
|
26
|
-
|
|
25
|
+
const succesedConnections = routes
|
|
26
|
+
.sort((r1, r2) => {
|
|
27
|
+
if (r1.outputName === "number of voices") return -1;
|
|
28
|
+
if (r2.outputName === "number of voices") return 1;
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
return 0;
|
|
31
|
+
})
|
|
32
|
+
.map((route) => {
|
|
33
|
+
const { sourceId, outputName, destinationId, inputName } = route;
|
|
30
34
|
|
|
31
|
-
|
|
35
|
+
const source = Engine.findById(sourceId);
|
|
36
|
+
const destination = Engine.findById(destinationId);
|
|
32
37
|
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
source.plug(destination, outputName, inputName);
|
|
39
|
+
|
|
40
|
+
return true;
|
|
41
|
+
});
|
|
35
42
|
|
|
36
43
|
if (succesedConnections.every((v) => v)) {
|
|
37
44
|
console.log("######## Routes succesfully applied");
|