@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,4 +1,4 @@
|
|
|
1
1
|
export { default, Envelope, EnvelopeStages } from "./Base";
|
|
2
2
|
export { default as AmpEnvelope } from "./AmpEnvelope";
|
|
3
|
-
export { default as FreqEnvelope } from "./FreqEnvelope";
|
|
3
|
+
export { default as FreqEnvelope, MonoFreqEnvelope } from "./FreqEnvelope";
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Module/Envelope/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Module/Envelope/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/build/Module/Filter.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { Filter as InternalFilter } from "tone";
|
|
2
|
-
import { FreqEnvelope } from "./Envelope";
|
|
3
|
-
import Module from "./Base";
|
|
2
|
+
import { FreqEnvelope, MonoFreqEnvelope } from "./Envelope";
|
|
3
|
+
import Module, { Voicable } from "./Base";
|
|
4
4
|
import PolyModule from "./PolyModule";
|
|
5
|
-
|
|
6
|
-
interface FilterInterface {
|
|
5
|
+
interface FilterInterface extends Voicable {
|
|
7
6
|
cutoff: number;
|
|
7
|
+
filterType: BiquadFilterType;
|
|
8
8
|
resonance: number;
|
|
9
9
|
envelopeAmount: number;
|
|
10
10
|
voiceNo?: number;
|
|
11
11
|
}
|
|
12
12
|
interface FilterProps extends Partial<FilterInterface> {
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
declare class MonoFilter extends Module<InternalFilter, FilterInterface> {
|
|
15
15
|
private _envelope;
|
|
16
16
|
constructor(name: string, props: FilterProps);
|
|
17
17
|
get cutoff(): number;
|
|
@@ -21,11 +21,11 @@ export default class Filter extends Module<InternalFilter, FilterInterface> {
|
|
|
21
21
|
set resonance(value: number);
|
|
22
22
|
get envelopeAmount(): number;
|
|
23
23
|
set envelopeAmount(value: number);
|
|
24
|
-
conntectedEnvelope(envelope:
|
|
24
|
+
conntectedEnvelope(envelope: MonoFreqEnvelope): void;
|
|
25
25
|
}
|
|
26
|
-
export
|
|
26
|
+
export default class Filter extends PolyModule<MonoFilter, FilterInterface> {
|
|
27
27
|
constructor(name: string, props: Partial<FilterInterface>);
|
|
28
28
|
private registerInputs;
|
|
29
|
-
conntectedEnvelope(
|
|
29
|
+
conntectedEnvelope(freqEnvelope: FreqEnvelope): void;
|
|
30
30
|
}
|
|
31
31
|
export {};
|
package/build/Module/Filter.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { Filter as InternalFilter } from "tone";
|
|
2
|
-
import Module
|
|
3
|
-
import PolyModule
|
|
2
|
+
import Module from "./Base";
|
|
3
|
+
import PolyModule from "./PolyModule";
|
|
4
4
|
const InitialProps = {
|
|
5
5
|
cutoff: 20000,
|
|
6
6
|
resonance: 0,
|
|
7
7
|
envelopeAmount: 0,
|
|
8
|
+
filterType: "lowpass",
|
|
8
9
|
};
|
|
9
|
-
|
|
10
|
+
class MonoFilter extends Module {
|
|
10
11
|
_envelope;
|
|
11
12
|
constructor(name, props) {
|
|
12
13
|
super(new InternalFilter({ type: "lowpass" }), {
|
|
13
14
|
name,
|
|
14
15
|
props: { ...InitialProps, ...props },
|
|
15
|
-
type: ModuleType.Filter,
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
get cutoff() {
|
|
@@ -52,12 +52,12 @@ export default class Filter extends Module {
|
|
|
52
52
|
this._envelope.amount = this.envelopeAmount;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
export class
|
|
55
|
+
export default class Filter extends PolyModule {
|
|
56
56
|
constructor(name, props) {
|
|
57
|
-
super(
|
|
57
|
+
super({
|
|
58
58
|
name,
|
|
59
|
+
child: MonoFilter,
|
|
59
60
|
props: { ...InitialProps, ...props },
|
|
60
|
-
type: ModuleType.Filter,
|
|
61
61
|
});
|
|
62
62
|
this.registerBasicInputs();
|
|
63
63
|
this.registerBasicOutputs();
|
|
@@ -72,8 +72,8 @@ export class PolyFilter extends PolyModule {
|
|
|
72
72
|
},
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
|
-
conntectedEnvelope(
|
|
76
|
-
|
|
75
|
+
conntectedEnvelope(freqEnvelope) {
|
|
76
|
+
freqEnvelope.audioModules.forEach((envelope) => {
|
|
77
77
|
if (envelope.voiceNo === undefined)
|
|
78
78
|
return;
|
|
79
79
|
const filter = this.findVoice(envelope.voiceNo);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../src/Module/Filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,MAAM,CAAC;AAGhD,OAAO,
|
|
1
|
+
{"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../src/Module/Filter.ts"],"names":[],"mappings":"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"}
|
package/build/Module/Master.d.ts
CHANGED
package/build/Module/Master.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { getDestination } from "tone";
|
|
2
|
-
import Module
|
|
2
|
+
import Module from "./Base";
|
|
3
3
|
export default class Master extends Module {
|
|
4
4
|
constructor() {
|
|
5
5
|
super(getDestination(), {
|
|
6
6
|
name: "Master",
|
|
7
|
-
type: ModuleType.Master,
|
|
8
7
|
});
|
|
9
8
|
this.registerBasicInputs();
|
|
10
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Master.js","sourceRoot":"","sources":["../../src/Module/Master.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,cAAc,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"Master.js","sourceRoot":"","sources":["../../src/Module/Master.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,cAAc,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAI5B,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,MAGnC;IACC;QACE,KAAK,CAAC,cAAc,EAAE,EAAE;YACtB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -8,7 +8,9 @@ export default class MidiSelector extends Module<DummnyInternalModule, MidiSelec
|
|
|
8
8
|
constructor(name: string, props: Partial<MidiSelectorInterface>);
|
|
9
9
|
get selectedId(): string | null;
|
|
10
10
|
set selectedId(value: string | null);
|
|
11
|
+
dispose(): void;
|
|
11
12
|
private registerOutputs;
|
|
12
13
|
private onMidiEvent;
|
|
13
14
|
private addEventListener;
|
|
15
|
+
private removeEventListener;
|
|
14
16
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Engine from "../Engine";
|
|
2
|
-
import Module, {
|
|
2
|
+
import Module, { DummnyInternalModule } from "./Base";
|
|
3
3
|
const InitialProps = {
|
|
4
4
|
selectedId: null,
|
|
5
5
|
};
|
|
@@ -9,7 +9,6 @@ export default class MidiSelector extends Module {
|
|
|
9
9
|
super(new DummnyInternalModule(), {
|
|
10
10
|
name,
|
|
11
11
|
props: { ...InitialProps, ...props },
|
|
12
|
-
type: ModuleType.MidiSelector,
|
|
13
12
|
});
|
|
14
13
|
this.registerOutputs();
|
|
15
14
|
this.addEventListener(this.selectedId);
|
|
@@ -18,13 +17,14 @@ export default class MidiSelector extends Module {
|
|
|
18
17
|
return this._props["selectedId"];
|
|
19
18
|
}
|
|
20
19
|
set selectedId(value) {
|
|
21
|
-
|
|
22
|
-
const prevMidiDevice = Engine.midiDeviceManager.find(this.selectedId);
|
|
23
|
-
prevMidiDevice?.removeEventListener(this.onMidiEvent);
|
|
24
|
-
}
|
|
20
|
+
this.removeEventListener();
|
|
25
21
|
this._props = { ...this.props, selectedId: value };
|
|
26
22
|
this.addEventListener(value);
|
|
27
23
|
}
|
|
24
|
+
dispose() {
|
|
25
|
+
this.removeEventListener();
|
|
26
|
+
super.dispose();
|
|
27
|
+
}
|
|
28
28
|
registerOutputs() {
|
|
29
29
|
this.midiOutput = this.registerOutput({ name: "midi out" });
|
|
30
30
|
}
|
|
@@ -39,5 +39,11 @@ export default class MidiSelector extends Module {
|
|
|
39
39
|
const midiDevice = Engine.midiDeviceManager.find(midiId);
|
|
40
40
|
midiDevice?.addEventListener(this.onMidiEvent);
|
|
41
41
|
}
|
|
42
|
+
removeEventListener() {
|
|
43
|
+
if (!this.selectedId)
|
|
44
|
+
return;
|
|
45
|
+
const midiDevice = Engine.midiDeviceManager.find(this.selectedId);
|
|
46
|
+
midiDevice?.removeEventListener(this.onMidiEvent);
|
|
47
|
+
}
|
|
42
48
|
}
|
|
43
49
|
//# sourceMappingURL=MidiSelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MidiSelector.js","sourceRoot":"","sources":["../../src/Module/MidiSelector.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"MidiSelector.js","sourceRoot":"","sources":["../../src/Module/MidiSelector.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,MAAM,EAAE,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAOtD,MAAM,YAAY,GAA0B;IAC1C,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,MAGzC;IACC,UAAU,CAAS;IAEnB,YAAY,IAAY,EAAE,KAAqC;QAC7D,KAAK,CAAC,IAAI,oBAAoB,EAAE,EAAE;YAChC,IAAI;YACJ,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,UAAU,CAAC,KAAoB;QACjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAEnD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;IAEO,WAAW,GAAG,CAAC,SAAoB,EAAE,EAAE;QAC7C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5C,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEM,gBAAgB,CAAC,MAAqB;QAC5C,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,uCAAuC;QAEjF,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import MidiEvent from "../MidiEvent";
|
|
2
2
|
import { Oscillator as Osc } from "tone";
|
|
3
|
-
import Module from "../Module";
|
|
4
3
|
import Note from "../Note";
|
|
4
|
+
import Module, { Voicable } from "./Base";
|
|
5
5
|
import PolyModule from "./PolyModule";
|
|
6
|
-
export interface OscillatorInterface {
|
|
6
|
+
export interface OscillatorInterface extends Voicable {
|
|
7
7
|
noteName: string;
|
|
8
8
|
fine: number;
|
|
9
9
|
coarse: number;
|
|
10
10
|
wave: string;
|
|
11
11
|
volume: number;
|
|
12
12
|
range: number;
|
|
13
|
-
voiceNo?: number;
|
|
14
13
|
}
|
|
15
|
-
|
|
14
|
+
declare class MonoOscillator extends Module<Osc, OscillatorInterface> {
|
|
16
15
|
private _note;
|
|
17
16
|
constructor(name: string, props: Partial<OscillatorInterface>);
|
|
18
17
|
get note(): Note;
|
|
@@ -36,7 +35,8 @@ export default class Oscillator extends Module<Osc, OscillatorInterface> {
|
|
|
36
35
|
private updateFrequency;
|
|
37
36
|
private getNote;
|
|
38
37
|
}
|
|
39
|
-
export
|
|
38
|
+
export default class Oscillator extends PolyModule<MonoOscillator, OscillatorInterface> {
|
|
40
39
|
constructor(name: string, props: Partial<OscillatorInterface>);
|
|
41
40
|
private registerInputs;
|
|
42
41
|
}
|
|
42
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Oscillator as Osc } from "tone";
|
|
2
|
-
import Module, { ModuleType } from "../Module";
|
|
3
2
|
import Note from "../Note";
|
|
4
|
-
import
|
|
3
|
+
import Module from "./Base";
|
|
4
|
+
import PolyModule from "./PolyModule";
|
|
5
5
|
const InitialProps = {
|
|
6
6
|
noteName: "C3",
|
|
7
7
|
fine: 0,
|
|
@@ -10,13 +10,12 @@ const InitialProps = {
|
|
|
10
10
|
range: 0,
|
|
11
11
|
volume: 0,
|
|
12
12
|
};
|
|
13
|
-
|
|
13
|
+
class MonoOscillator extends Module {
|
|
14
14
|
_note;
|
|
15
15
|
constructor(name, props) {
|
|
16
16
|
super(new Osc(), {
|
|
17
17
|
name,
|
|
18
18
|
props: { ...InitialProps, ...props },
|
|
19
|
-
type: ModuleType.Oscillator,
|
|
20
19
|
});
|
|
21
20
|
this.note = new Note("C3");
|
|
22
21
|
this.internalModule.sync();
|
|
@@ -103,12 +102,12 @@ export default class Oscillator extends Module {
|
|
|
103
102
|
return note instanceof Note ? note : new Note(note);
|
|
104
103
|
}
|
|
105
104
|
}
|
|
106
|
-
export class
|
|
105
|
+
export default class Oscillator extends PolyModule {
|
|
107
106
|
constructor(name, props) {
|
|
108
|
-
super(
|
|
107
|
+
super({
|
|
109
108
|
name,
|
|
109
|
+
child: MonoOscillator,
|
|
110
110
|
props: { ...InitialProps, ...props },
|
|
111
|
-
type: ModuleType.Oscillator,
|
|
112
111
|
});
|
|
113
112
|
this.registerBasicOutputs();
|
|
114
113
|
this.registerInputs();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Oscillator.js","sourceRoot":"","sources":["../../src/Module/Oscillator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,IAAI,GAAG,EAAsB,MAAM,MAAM,CAAC;AAE7D,OAAO,
|
|
1
|
+
{"version":3,"file":"Oscillator.js","sourceRoot":"","sources":["../../src/Module/Oscillator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,23 @@
|
|
|
1
1
|
import MidiEvent from "../MidiEvent";
|
|
2
|
-
import Module, {
|
|
2
|
+
import Module, { Connectable, Voicable } from "./Base";
|
|
3
3
|
import { Input, Output, IOInterface } from "./IO";
|
|
4
4
|
import { AudioModule } from "../Module";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
FreqEnvelope = "freqEnvelope",
|
|
10
|
-
VoiceScheduler = "voiceScheduler",
|
|
11
|
-
Filter = "filter",
|
|
12
|
-
Volume = "volume"
|
|
5
|
+
interface PolyModuleInterface<MonoAudioModule, PropsInterface> {
|
|
6
|
+
name: string;
|
|
7
|
+
child: new (name: string, props: PropsInterface) => MonoAudioModule;
|
|
8
|
+
props: PropsInterface;
|
|
13
9
|
}
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
export default abstract class PolyModule<MonoAudioModule extends Module<Connectable, any>, PropsInterface> {
|
|
10
|
+
export default abstract class PolyModule<MonoAudioModule extends Module<Connectable, any>, PropsInterface extends Voicable> {
|
|
17
11
|
readonly id: string;
|
|
12
|
+
readonly child: new (name: string, props: PropsInterface) => MonoAudioModule;
|
|
18
13
|
_name: string;
|
|
19
14
|
audioModules: MonoAudioModule[];
|
|
20
15
|
inputs: Input[];
|
|
21
16
|
outputs: Output[];
|
|
22
|
-
readonly _type: PolyModuleType;
|
|
23
|
-
readonly childrenType: ModuleType;
|
|
24
17
|
private _numberOfVoices;
|
|
25
|
-
constructor(
|
|
26
|
-
get type(): PolyModuleType;
|
|
18
|
+
constructor(params: PolyModuleInterface<MonoAudioModule, PropsInterface>);
|
|
27
19
|
get name(): string;
|
|
28
20
|
set name(value: string);
|
|
29
|
-
set type(value: PolyModuleType);
|
|
30
21
|
get props(): PropsInterface;
|
|
31
22
|
set props(value: PropsInterface);
|
|
32
23
|
get numberOfVoices(): number;
|
|
@@ -37,7 +28,7 @@ export default abstract class PolyModule<MonoAudioModule extends Module<Connecta
|
|
|
37
28
|
midiTriggered: (midiEvent: MidiEvent, voiceNo?: number) => void;
|
|
38
29
|
serialize(): {
|
|
39
30
|
id: string;
|
|
40
|
-
type:
|
|
31
|
+
type: string;
|
|
41
32
|
inputs: import("./IO").SerializeInterface[];
|
|
42
33
|
outputs: import("./IO").SerializeInterface[];
|
|
43
34
|
name: string;
|
|
@@ -1,39 +1,23 @@
|
|
|
1
1
|
import { v4 as uuidv4 } from "uuid";
|
|
2
|
-
import { createModule } from ".";
|
|
3
2
|
import { Input, Output } from "./IO";
|
|
4
|
-
export var PolyModuleType;
|
|
5
|
-
(function (PolyModuleType) {
|
|
6
|
-
PolyModuleType["Oscillator"] = "oscillator";
|
|
7
|
-
PolyModuleType["Envelope"] = "envelope";
|
|
8
|
-
PolyModuleType["AmpEnvelope"] = "ampEnvelope";
|
|
9
|
-
PolyModuleType["FreqEnvelope"] = "freqEnvelope";
|
|
10
|
-
PolyModuleType["VoiceScheduler"] = "voiceScheduler";
|
|
11
|
-
PolyModuleType["Filter"] = "filter";
|
|
12
|
-
PolyModuleType["Volume"] = "volume";
|
|
13
|
-
})(PolyModuleType || (PolyModuleType = {}));
|
|
14
3
|
export default class PolyModule {
|
|
15
4
|
id;
|
|
5
|
+
child;
|
|
16
6
|
_name;
|
|
17
7
|
audioModules;
|
|
18
8
|
inputs = [];
|
|
19
9
|
outputs = [];
|
|
20
|
-
_type;
|
|
21
|
-
childrenType;
|
|
22
10
|
_numberOfVoices;
|
|
23
|
-
constructor(
|
|
11
|
+
constructor(params) {
|
|
24
12
|
this.id = uuidv4();
|
|
25
|
-
this._type = type;
|
|
26
|
-
this.childrenType = props.type;
|
|
27
13
|
this.audioModules = [];
|
|
28
|
-
const { props: extraProps, ...basicProps } =
|
|
14
|
+
const { child, props: extraProps, ...basicProps } = params;
|
|
15
|
+
this.child = child;
|
|
29
16
|
Object.assign(this, basicProps);
|
|
30
17
|
this.numberOfVoices = 1;
|
|
31
18
|
Object.assign(this, { props: extraProps });
|
|
32
19
|
this.registerNumberOfVoicesInput();
|
|
33
20
|
}
|
|
34
|
-
get type() {
|
|
35
|
-
return this._type;
|
|
36
|
-
}
|
|
37
21
|
get name() {
|
|
38
22
|
return this._name;
|
|
39
23
|
}
|
|
@@ -41,9 +25,6 @@ export default class PolyModule {
|
|
|
41
25
|
this._name = value;
|
|
42
26
|
this.audioModules.forEach((m) => (m.name = value));
|
|
43
27
|
}
|
|
44
|
-
// Do nothing
|
|
45
|
-
// This is a little hack to avoid override type by children module
|
|
46
|
-
set type(value) { }
|
|
47
28
|
get props() {
|
|
48
29
|
if (this.audioModules.length === 0) {
|
|
49
30
|
throw Error("There isn't any initialized module");
|
|
@@ -88,7 +69,7 @@ export default class PolyModule {
|
|
|
88
69
|
return {
|
|
89
70
|
...this.audioModules[0].serialize(),
|
|
90
71
|
id: this.id,
|
|
91
|
-
type: this.
|
|
72
|
+
type: this.constructor.name,
|
|
92
73
|
inputs: this.inputs.map((i) => i.serialize()),
|
|
93
74
|
outputs: this.outputs.map((i) => i.serialize()),
|
|
94
75
|
};
|
|
@@ -175,8 +156,10 @@ export default class PolyModule {
|
|
|
175
156
|
audioModule?.dispose();
|
|
176
157
|
}
|
|
177
158
|
else {
|
|
178
|
-
const props = this.audioModules.length
|
|
179
|
-
|
|
159
|
+
const props = this.audioModules.length
|
|
160
|
+
? this.props
|
|
161
|
+
: {};
|
|
162
|
+
const audioModule = new this.child(this.name, {
|
|
180
163
|
...props,
|
|
181
164
|
voiceNo: this.audioModules.length,
|
|
182
165
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolyModule.js","sourceRoot":"","sources":["../../src/Module/PolyModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"PolyModule.js","sourceRoot":"","sources":["../../src/Module/PolyModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,29 @@
|
|
|
1
|
+
import { Reverb as InternalReverb } from "tone";
|
|
2
|
+
import Effect from "./Effect";
|
|
3
|
+
const InitialProps = {
|
|
4
|
+
decay: 1.5,
|
|
5
|
+
preDelay: 0.025,
|
|
6
|
+
};
|
|
7
|
+
export default class Reverb extends Effect {
|
|
8
|
+
constructor(name, props) {
|
|
9
|
+
super(name, new InternalReverb(), {
|
|
10
|
+
...InitialProps,
|
|
11
|
+
...props,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
get decay() {
|
|
15
|
+
return this._props["decay"];
|
|
16
|
+
}
|
|
17
|
+
set decay(value) {
|
|
18
|
+
this._props = { ...this.props, decay: value };
|
|
19
|
+
this.internalModule.decay = this.decay;
|
|
20
|
+
}
|
|
21
|
+
get preDelay() {
|
|
22
|
+
return this._props["preDelay"];
|
|
23
|
+
}
|
|
24
|
+
set preDelay(value) {
|
|
25
|
+
this._props = { ...this.props, preDelay: value };
|
|
26
|
+
this.internalModule.preDelay = this.preDelay;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# 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,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,IAAI,cAAc,EAAE,EAAE;YAChC,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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import MidiEvent from "../MidiEvent";
|
|
2
|
-
import Module, {
|
|
2
|
+
import Module, { DummnyInternalModule } from "./Base";
|
|
3
3
|
import { Output } from "./IO";
|
|
4
4
|
export interface VirtualMidiInterface {
|
|
5
5
|
activeNotes: string[];
|
|
@@ -16,7 +16,7 @@ export default class VirtualMidi extends Module<DummnyInternalModule, VirtualMid
|
|
|
16
16
|
activeNotes: string[];
|
|
17
17
|
id: string;
|
|
18
18
|
name: string;
|
|
19
|
-
type:
|
|
19
|
+
type: string;
|
|
20
20
|
props: VirtualMidiInterface;
|
|
21
21
|
inputs: import("./IO").SerializeInterface[];
|
|
22
22
|
outputs: import("./IO").SerializeInterface[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Engine from "../Engine";
|
|
2
|
-
import Module, {
|
|
2
|
+
import Module, { DummnyInternalModule } from "./Base";
|
|
3
3
|
const InitialProps = {
|
|
4
4
|
activeNotes: [],
|
|
5
5
|
};
|
|
@@ -9,7 +9,6 @@ export default class VirtualMidi extends Module {
|
|
|
9
9
|
super(new DummnyInternalModule(), {
|
|
10
10
|
name,
|
|
11
11
|
props: { ...InitialProps, ...props },
|
|
12
|
-
type: ModuleType.VirtualMidi,
|
|
13
12
|
});
|
|
14
13
|
this.registerInputs();
|
|
15
14
|
this.registerOutputs();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualMidi.js","sourceRoot":"","sources":["../../src/Module/VirtualMidi.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"VirtualMidi.js","sourceRoot":"","sources":["../../src/Module/VirtualMidi.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,MAAM,EAAE,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAOtD,MAAM,YAAY,GAAyB;IACzC,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,MAGxC;IACC,UAAU,CAAS;IAEnB,YAAY,IAAY,EAAE,KAA2B;QACnD,KAAK,CAAC,IAAI,oBAAoB,EAAE,EAAE;YAChC,IAAI;YACJ,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED,sBAAsB;IACtB,IAAI,WAAW,CAAC,KAAe;QAC7B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,QAAQ,CAAC,SAAoB;QAC3B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5C,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,SAAoB;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI;YAAE,OAAO;QAE5B,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,cAAc,CAAC,SAAoB;QACjC,IAAI,CAAC,SAAS,CAAC,IAAI;YAAE,OAAO;QAE5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,IAAK,CAAC,QAAQ,CAC5C,CAAC;QACF,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,SAAS;QACP,OAAO;YACL,GAAG,KAAK,CAAC,SAAS,EAAE;YACpB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,aAAa,CAAC;YACjB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,IAAI,CAAC,aAAa;SAC9B,CAAC,CAAC;IACL,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import Module, { DummnyInternalModule } from "./Base";
|
|
1
|
+
import Module, { DummnyInternalModule, Voicable } from "./Base";
|
|
2
2
|
import MidiEvent from "../MidiEvent";
|
|
3
3
|
import { Output } from "./IO";
|
|
4
|
-
import PolyModule
|
|
5
|
-
export interface VoiceSchedulerInterface {
|
|
4
|
+
import PolyModule from "./PolyModule";
|
|
5
|
+
export interface VoiceSchedulerInterface extends Voicable {
|
|
6
6
|
polyNumber: number;
|
|
7
7
|
}
|
|
8
8
|
export default class VoiceScheduler extends PolyModule<Voice, VoiceSchedulerInterface> {
|
|
@@ -15,7 +15,7 @@ export default class VoiceScheduler extends PolyModule<Voice, VoiceSchedulerInte
|
|
|
15
15
|
serialize(): {
|
|
16
16
|
props: any;
|
|
17
17
|
id: string;
|
|
18
|
-
type:
|
|
18
|
+
type: string;
|
|
19
19
|
inputs: import("./IO").SerializeInterface[];
|
|
20
20
|
outputs: import("./IO").SerializeInterface[];
|
|
21
21
|
name: string;
|
|
@@ -24,10 +24,9 @@ export default class VoiceScheduler extends PolyModule<Voice, VoiceSchedulerInte
|
|
|
24
24
|
private registerInputs;
|
|
25
25
|
private registerOutputs;
|
|
26
26
|
}
|
|
27
|
-
export interface VoiceInterface {
|
|
28
|
-
voiceNo?: number;
|
|
27
|
+
export interface VoiceInterface extends Voicable {
|
|
29
28
|
}
|
|
30
|
-
|
|
29
|
+
declare class Voice extends Module<DummnyInternalModule, VoiceInterface> {
|
|
31
30
|
midiEvent: MidiEvent | null;
|
|
32
31
|
activeNote: string | null;
|
|
33
32
|
triggeredAt: number;
|
|
@@ -35,3 +34,4 @@ export declare class Voice extends Module<DummnyInternalModule, VoiceInterface>
|
|
|
35
34
|
constructor(name: string, props: VoiceInterface);
|
|
36
35
|
midiTriggered: (midiEvent: MidiEvent) => void;
|
|
37
36
|
}
|
|
37
|
+
export {};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import Module, {
|
|
2
|
-
import PolyModule
|
|
1
|
+
import Module, { DummnyInternalModule } from "./Base";
|
|
2
|
+
import PolyModule from "./PolyModule";
|
|
3
3
|
export default class VoiceScheduler extends PolyModule {
|
|
4
4
|
midiOutput;
|
|
5
5
|
numberOfVoicesOut;
|
|
6
6
|
constructor(name, props) {
|
|
7
|
-
super(
|
|
7
|
+
super({
|
|
8
8
|
name,
|
|
9
|
+
child: Voice,
|
|
9
10
|
props,
|
|
10
|
-
type: ModuleType.Voice,
|
|
11
11
|
});
|
|
12
12
|
this.registerInputs();
|
|
13
13
|
this.registerOutputs();
|
|
@@ -82,7 +82,7 @@ export default class VoiceScheduler extends PolyModule {
|
|
|
82
82
|
this.midiOutput = this.registerOutput({ name: "midi out" });
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
class Voice extends Module {
|
|
86
86
|
midiEvent;
|
|
87
87
|
activeNote;
|
|
88
88
|
triggeredAt;
|
|
@@ -90,7 +90,6 @@ export class Voice extends Module {
|
|
|
90
90
|
constructor(name, props) {
|
|
91
91
|
super(new DummnyInternalModule(), {
|
|
92
92
|
name,
|
|
93
|
-
type: ModuleType.Voice,
|
|
94
93
|
props,
|
|
95
94
|
});
|
|
96
95
|
}
|