@blibliki/engine 0.1.5 → 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 -19
- package/build/Module/Base.js +1 -19
- package/build/Module/Base.js.map +1 -1
- package/build/Module/BitCrusher.d.ts +1 -1
- package/build/Module/BitCrusher.js +2 -3
- package/build/Module/BitCrusher.js.map +1 -1
- package/build/Module/Delay.js +1 -2
- package/build/Module/Delay.js.map +1 -1
- package/build/Module/Distortion.js +1 -2
- package/build/Module/Distortion.js.map +1 -1
- package/build/Module/Effect.d.ts +2 -2
- package/build/Module/Effect.js +1 -2
- package/build/Module/Effect.js.map +1 -1
- 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.js +1 -2
- package/build/Module/Reverb.js.map +1 -1
- 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 -17
- package/build/Module/index.js +24 -41
- 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/package.json +3 -1
- package/src/Engine.ts +2 -7
- package/src/Module/Base.ts +5 -20
- package/src/Module/BitCrusher.ts +2 -3
- package/src/Module/Delay.ts +1 -2
- package/src/Module/Distortion.ts +1 -2
- package/src/Module/Effect.ts +1 -3
- 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 +1 -2
- 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 +27 -41
- package/src/index.ts +0 -1
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,25 +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
|
-
import Reverb from "./Reverb";
|
|
14
|
-
import Delay from "./Delay";
|
|
15
|
-
import Distortion from "./Distortion";
|
|
16
|
-
import BitCrusher from "./BitCrusher";
|
|
17
|
-
export { default, ModuleType } from "./Base";
|
|
18
|
-
export { default as PolyModule, PolyModuleType } from "./PolyModule";
|
|
3
|
+
export { default } from "./Base";
|
|
4
|
+
export { default as PolyModule } from "./PolyModule";
|
|
19
5
|
export type { ModuleInterface, Connectable, Triggerable } from "./Base";
|
|
20
6
|
export { default as Filter } from "./Filter";
|
|
21
7
|
export { default as Oscillator } from "./Oscillator";
|
|
22
8
|
export { Envelope, AmpEnvelope, FreqEnvelope, EnvelopeStages, } from "./Envelope";
|
|
23
9
|
export declare type AudioModule = Module<Connectable, any> | PolyModule<Module<Connectable, any>, any>;
|
|
24
10
|
export declare function createModule(name: string, type: string, props: any): AudioModule;
|
|
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
|
@@ -1,22 +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
10
|
import Reverb from "./Reverb";
|
|
15
11
|
import Delay from "./Delay";
|
|
16
12
|
import Distortion from "./Distortion";
|
|
17
13
|
import BitCrusher from "./BitCrusher";
|
|
18
|
-
export { default
|
|
19
|
-
export { default as PolyModule
|
|
14
|
+
export { default } from "./Base";
|
|
15
|
+
export { default as PolyModule } from "./PolyModule";
|
|
20
16
|
export { default as Filter } from "./Filter";
|
|
21
17
|
export { default as Oscillator } from "./Oscillator";
|
|
22
18
|
export { Envelope, AmpEnvelope, FreqEnvelope, EnvelopeStages, } from "./Envelope";
|
|
@@ -24,52 +20,39 @@ export function createModule(name, type, props) {
|
|
|
24
20
|
const klass = moduleClassFromType(type);
|
|
25
21
|
return new klass(name, props);
|
|
26
22
|
}
|
|
27
|
-
|
|
23
|
+
function moduleClassFromType(type) {
|
|
24
|
+
type = upperFirst(camelCase(type));
|
|
28
25
|
switch (type) {
|
|
29
|
-
case
|
|
26
|
+
case Oscillator.name:
|
|
30
27
|
return Oscillator;
|
|
31
|
-
case
|
|
28
|
+
case Envelope.name:
|
|
32
29
|
return Envelope;
|
|
33
|
-
case
|
|
30
|
+
case AmpEnvelope.name:
|
|
34
31
|
return AmpEnvelope;
|
|
35
|
-
case
|
|
32
|
+
case FreqEnvelope.name:
|
|
36
33
|
return FreqEnvelope;
|
|
37
|
-
case
|
|
34
|
+
case Filter.name:
|
|
38
35
|
return Filter;
|
|
39
|
-
case
|
|
36
|
+
case Volume.name:
|
|
40
37
|
return Volume;
|
|
41
|
-
case
|
|
42
|
-
return PolyOscillator;
|
|
43
|
-
case PolyModuleType.Envelope:
|
|
44
|
-
return PolyEnvelope;
|
|
45
|
-
case PolyModuleType.AmpEnvelope:
|
|
46
|
-
return PolyAmpEnvelope;
|
|
47
|
-
case PolyModuleType.FreqEnvelope:
|
|
48
|
-
return PolyFreqEnvelope;
|
|
49
|
-
case PolyModuleType.Filter:
|
|
50
|
-
return PolyFilter;
|
|
51
|
-
case PolyModuleType.Volume:
|
|
52
|
-
return PolyVolume;
|
|
53
|
-
case ModuleType.Master:
|
|
38
|
+
case Master.name:
|
|
54
39
|
return Master;
|
|
55
|
-
case
|
|
56
|
-
return Voice;
|
|
57
|
-
case PolyModuleType.VoiceScheduler:
|
|
40
|
+
case VoiceScheduler.name:
|
|
58
41
|
return VoiceScheduler;
|
|
59
|
-
case
|
|
42
|
+
case MidiSelector.name:
|
|
60
43
|
return MidiSelector;
|
|
61
|
-
case
|
|
44
|
+
case VirtualMidi.name:
|
|
62
45
|
return VirtualMidi;
|
|
63
|
-
case
|
|
46
|
+
case Reverb.name:
|
|
64
47
|
return Reverb;
|
|
65
|
-
case
|
|
48
|
+
case Delay.name:
|
|
66
49
|
return Delay;
|
|
67
|
-
case
|
|
50
|
+
case Distortion.name:
|
|
68
51
|
return Distortion;
|
|
69
|
-
case
|
|
52
|
+
case BitCrusher.name:
|
|
70
53
|
return BitCrusher;
|
|
71
54
|
default:
|
|
72
|
-
throw Error(
|
|
55
|
+
throw Error(`Unknown module type ${type}`);
|
|
73
56
|
}
|
|
74
57
|
}
|
|
75
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/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,23 +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
|
-
Reverb = "reverb",
|
|
20
|
-
Delay = "delay",
|
|
21
|
-
Distortion = "distortion",
|
|
22
|
-
BitCrusher = "bitCrusher",
|
|
23
|
-
}
|
|
24
|
-
|
|
25
8
|
export interface Connectable {
|
|
26
9
|
connect: (inputNode: InputNode) => void;
|
|
27
10
|
disconnect: (inputNode?: InputNode) => void;
|
|
@@ -33,9 +16,12 @@ export interface Triggerable {
|
|
|
33
16
|
triggerRelease: Function;
|
|
34
17
|
}
|
|
35
18
|
|
|
19
|
+
export interface Voicable {
|
|
20
|
+
voiceNo?: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
36
23
|
export interface ModuleInterface {
|
|
37
24
|
name: string;
|
|
38
|
-
type: ModuleType;
|
|
39
25
|
props?: { [key: string]: any };
|
|
40
26
|
voiceNo?: number;
|
|
41
27
|
}
|
|
@@ -59,7 +45,6 @@ class Module<InternalModule extends Connectable, PropsInterface>
|
|
|
59
45
|
name: string;
|
|
60
46
|
inputs: Input[] = [];
|
|
61
47
|
outputs: Output[] = [];
|
|
62
|
-
type: ModuleType;
|
|
63
48
|
readonly voiceNo?: number;
|
|
64
49
|
updatedAt: Date;
|
|
65
50
|
_props: PropsInterface;
|
|
@@ -160,7 +145,7 @@ class Module<InternalModule extends Connectable, PropsInterface>
|
|
|
160
145
|
return {
|
|
161
146
|
id: this.id,
|
|
162
147
|
name: this.name,
|
|
163
|
-
type: this.
|
|
148
|
+
type: this.constructor.name,
|
|
164
149
|
props: this.props,
|
|
165
150
|
inputs: this.inputs.map((i) => i.serialize()),
|
|
166
151
|
outputs: this.outputs.map((i) => i.serialize()),
|
package/src/Module/BitCrusher.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { BitCrusher as InternalBitCrasher } from "tone";
|
|
2
2
|
|
|
3
|
-
import { ModuleType } from "./Base";
|
|
4
3
|
import Effect, { EffectInterface } from "./Effect";
|
|
5
4
|
|
|
6
5
|
interface BitCrusherInterface extends EffectInterface {
|
|
@@ -11,12 +10,12 @@ const InitialProps: Partial<BitCrusherInterface> = {
|
|
|
11
10
|
bits: 16,
|
|
12
11
|
};
|
|
13
12
|
|
|
14
|
-
export default class
|
|
13
|
+
export default class BitCrusher extends Effect<
|
|
15
14
|
InternalBitCrasher,
|
|
16
15
|
BitCrusherInterface
|
|
17
16
|
> {
|
|
18
17
|
constructor(name: string, props: Partial<BitCrusherInterface>) {
|
|
19
|
-
super(name,
|
|
18
|
+
super(name, new InternalBitCrasher(), {
|
|
20
19
|
...InitialProps,
|
|
21
20
|
...props,
|
|
22
21
|
});
|
package/src/Module/Delay.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { FeedbackDelay } from "tone";
|
|
2
2
|
|
|
3
|
-
import { ModuleType } from "./Base";
|
|
4
3
|
import Effect, { EffectInterface } from "./Effect";
|
|
5
4
|
|
|
6
5
|
interface DelayInterface extends EffectInterface {
|
|
@@ -15,7 +14,7 @@ const InitialProps: Partial<DelayInterface> = {
|
|
|
15
14
|
|
|
16
15
|
export default class Delay extends Effect<FeedbackDelay, DelayInterface> {
|
|
17
16
|
constructor(name: string, props: Partial<DelayInterface>) {
|
|
18
|
-
super(name,
|
|
17
|
+
super(name, new FeedbackDelay(), {
|
|
19
18
|
...InitialProps,
|
|
20
19
|
...props,
|
|
21
20
|
});
|
package/src/Module/Distortion.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Distortion as InternalDistortion } from "tone";
|
|
2
2
|
|
|
3
|
-
import { ModuleType } from "./Base";
|
|
4
3
|
import Effect, { EffectInterface } from "./Effect";
|
|
5
4
|
|
|
6
5
|
interface DistortionInterface extends EffectInterface {
|
|
@@ -16,7 +15,7 @@ export default class Distortion extends Effect<
|
|
|
16
15
|
DistortionInterface
|
|
17
16
|
> {
|
|
18
17
|
constructor(name: string, props: Partial<DistortionInterface>) {
|
|
19
|
-
super(name,
|
|
18
|
+
super(name, new InternalDistortion(), {
|
|
20
19
|
...InitialProps,
|
|
21
20
|
...props,
|
|
22
21
|
});
|
package/src/Module/Effect.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Signal } from "tone";
|
|
2
|
-
import Module, { Connectable
|
|
2
|
+
import Module, { Connectable } from "./Base";
|
|
3
3
|
|
|
4
4
|
interface EffectLike extends Connectable {
|
|
5
5
|
wet: Signal<"normalRange">;
|
|
@@ -19,13 +19,11 @@ export default abstract class Effect<
|
|
|
19
19
|
> extends Module<InternalEffect, ModuleInterface> {
|
|
20
20
|
constructor(
|
|
21
21
|
name: string,
|
|
22
|
-
type: ModuleType,
|
|
23
22
|
internalModule: InternalEffect,
|
|
24
23
|
props: Partial<ModuleInterface>
|
|
25
24
|
) {
|
|
26
25
|
super(internalModule, {
|
|
27
26
|
name,
|
|
28
|
-
type,
|
|
29
27
|
props: { ...InitialProps, ...props },
|
|
30
28
|
});
|
|
31
29
|
|
|
@@ -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
|
}
|
package/src/Module/Filter.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Filter as InternalFilter } from "tone";
|
|
2
2
|
|
|
3
|
-
import { FreqEnvelope } from "./Envelope";
|
|
4
|
-
import Module, {
|
|
5
|
-
import PolyModule
|
|
6
|
-
import { PolyFreqEnvelope } from "./Envelope/FreqEnvelope";
|
|
3
|
+
import { FreqEnvelope, MonoFreqEnvelope } from "./Envelope";
|
|
4
|
+
import Module, { Voicable } from "./Base";
|
|
5
|
+
import PolyModule from "./PolyModule";
|
|
7
6
|
|
|
8
|
-
interface FilterInterface {
|
|
7
|
+
interface FilterInterface extends Voicable {
|
|
9
8
|
cutoff: number;
|
|
9
|
+
filterType: BiquadFilterType;
|
|
10
10
|
resonance: number;
|
|
11
11
|
envelopeAmount: number;
|
|
12
12
|
voiceNo?: number;
|
|
@@ -18,16 +18,16 @@ const InitialProps: FilterInterface = {
|
|
|
18
18
|
cutoff: 20000,
|
|
19
19
|
resonance: 0,
|
|
20
20
|
envelopeAmount: 0,
|
|
21
|
+
filterType: "lowpass",
|
|
21
22
|
};
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
private _envelope:
|
|
24
|
+
class MonoFilter extends Module<InternalFilter, FilterInterface> {
|
|
25
|
+
private _envelope: MonoFreqEnvelope;
|
|
25
26
|
|
|
26
27
|
constructor(name: string, props: FilterProps) {
|
|
27
28
|
super(new InternalFilter({ type: "lowpass" }), {
|
|
28
29
|
name,
|
|
29
30
|
props: { ...InitialProps, ...props },
|
|
30
|
-
type: ModuleType.Filter,
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -71,19 +71,19 @@ export default class Filter extends Module<InternalFilter, FilterInterface> {
|
|
|
71
71
|
this._envelope.amount = value;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
conntectedEnvelope(envelope:
|
|
74
|
+
conntectedEnvelope(envelope: MonoFreqEnvelope) {
|
|
75
75
|
this._envelope = envelope;
|
|
76
76
|
this._envelope.frequency = this.cutoff;
|
|
77
77
|
this._envelope.amount = this.envelopeAmount;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
export class
|
|
81
|
+
export default class Filter extends PolyModule<MonoFilter, FilterInterface> {
|
|
82
82
|
constructor(name: string, props: Partial<FilterInterface>) {
|
|
83
|
-
super(
|
|
83
|
+
super({
|
|
84
84
|
name,
|
|
85
|
+
child: MonoFilter,
|
|
85
86
|
props: { ...InitialProps, ...props },
|
|
86
|
-
type: ModuleType.Filter,
|
|
87
87
|
});
|
|
88
88
|
|
|
89
89
|
this.registerBasicInputs();
|
|
@@ -96,13 +96,13 @@ export class PolyFilter extends PolyModule<Filter, FilterInterface> {
|
|
|
96
96
|
name: "frequency",
|
|
97
97
|
pluggable: "frequency",
|
|
98
98
|
onPlug: (output) => {
|
|
99
|
-
this.conntectedEnvelope(output.audioModule as
|
|
99
|
+
this.conntectedEnvelope(output.audioModule as FreqEnvelope);
|
|
100
100
|
},
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
conntectedEnvelope(
|
|
105
|
-
|
|
104
|
+
conntectedEnvelope(freqEnvelope: FreqEnvelope) {
|
|
105
|
+
freqEnvelope.audioModules.forEach((envelope) => {
|
|
106
106
|
if (envelope.voiceNo === undefined) return;
|
|
107
107
|
|
|
108
108
|
const filter = this.findVoice(envelope.voiceNo);
|
package/src/Module/Master.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Destination, getDestination } from "tone";
|
|
2
|
-
import Module
|
|
2
|
+
import Module from "./Base";
|
|
3
3
|
|
|
4
4
|
export interface MasterInterface {}
|
|
5
5
|
|
|
@@ -10,7 +10,6 @@ export default class Master extends Module<
|
|
|
10
10
|
constructor() {
|
|
11
11
|
super(getDestination(), {
|
|
12
12
|
name: "Master",
|
|
13
|
-
type: ModuleType.Master,
|
|
14
13
|
});
|
|
15
14
|
|
|
16
15
|
this.registerBasicInputs();
|