@blibliki/engine 0.1.5 → 0.1.7

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.
Files changed (85) hide show
  1. package/build/Engine.d.ts +5 -41
  2. package/build/Engine.js +3 -3
  3. package/build/Engine.js.map +1 -1
  4. package/build/Module/Base.d.ts +6 -20
  5. package/build/Module/Base.js +4 -20
  6. package/build/Module/Base.js.map +1 -1
  7. package/build/Module/BitCrusher.d.ts +2 -1
  8. package/build/Module/BitCrusher.js +3 -3
  9. package/build/Module/BitCrusher.js.map +1 -1
  10. package/build/Module/Delay.d.ts +1 -0
  11. package/build/Module/Delay.js +2 -2
  12. package/build/Module/Delay.js.map +1 -1
  13. package/build/Module/Distortion.d.ts +1 -0
  14. package/build/Module/Distortion.js +2 -2
  15. package/build/Module/Distortion.js.map +1 -1
  16. package/build/Module/Effect.d.ts +2 -2
  17. package/build/Module/Effect.js +1 -2
  18. package/build/Module/Effect.js.map +1 -1
  19. package/build/Module/Envelope/AmpEnvelope.d.ts +4 -2
  20. package/build/Module/Envelope/AmpEnvelope.js +5 -6
  21. package/build/Module/Envelope/AmpEnvelope.js.map +1 -1
  22. package/build/Module/Envelope/Base.d.ts +9 -7
  23. package/build/Module/Envelope/Base.js +11 -11
  24. package/build/Module/Envelope/Base.js.map +1 -1
  25. package/build/Module/Envelope/FreqEnvelope.d.ts +3 -2
  26. package/build/Module/Envelope/FreqEnvelope.js +5 -6
  27. package/build/Module/Envelope/FreqEnvelope.js.map +1 -1
  28. package/build/Module/Envelope/index.d.ts +1 -1
  29. package/build/Module/Envelope/index.js +1 -1
  30. package/build/Module/Envelope/index.js.map +1 -1
  31. package/build/Module/Filter.d.ts +9 -8
  32. package/build/Module/Filter.js +10 -9
  33. package/build/Module/Filter.js.map +1 -1
  34. package/build/Module/Master.d.ts +2 -1
  35. package/build/Module/Master.js +2 -2
  36. package/build/Module/Master.js.map +1 -1
  37. package/build/Module/MidiSelector.d.ts +3 -0
  38. package/build/Module/MidiSelector.js +13 -6
  39. package/build/Module/MidiSelector.js.map +1 -1
  40. package/build/Module/Oscillator.d.ts +6 -5
  41. package/build/Module/Oscillator.js +7 -7
  42. package/build/Module/Oscillator.js.map +1 -1
  43. package/build/Module/PolyModule.d.ts +10 -18
  44. package/build/Module/PolyModule.js +11 -26
  45. package/build/Module/PolyModule.js.map +1 -1
  46. package/build/Module/Reverb.d.ts +1 -0
  47. package/build/Module/Reverb.js +2 -2
  48. package/build/Module/Reverb.js.map +1 -1
  49. package/build/Module/VirtualMidi.d.ts +3 -2
  50. package/build/Module/VirtualMidi.js +2 -2
  51. package/build/Module/VirtualMidi.js.map +1 -1
  52. package/build/Module/VoiceScheduler.d.ts +8 -7
  53. package/build/Module/VoiceScheduler.js +6 -6
  54. package/build/Module/VoiceScheduler.js.map +1 -1
  55. package/build/Module/Volume.d.ts +6 -5
  56. package/build/Module/Volume.js +7 -7
  57. package/build/Module/Volume.js.map +1 -1
  58. package/build/Module/index.d.ts +2 -17
  59. package/build/Module/index.js +24 -41
  60. package/build/Module/index.js.map +1 -1
  61. package/build/index.d.ts +0 -1
  62. package/build/index.js +0 -1
  63. package/build/index.js.map +1 -1
  64. package/package.json +3 -1
  65. package/src/Engine.ts +2 -7
  66. package/src/Module/Base.ts +9 -21
  67. package/src/Module/BitCrusher.ts +4 -3
  68. package/src/Module/Delay.ts +3 -2
  69. package/src/Module/Distortion.ts +3 -2
  70. package/src/Module/Effect.ts +1 -3
  71. package/src/Module/Envelope/AmpEnvelope.ts +6 -6
  72. package/src/Module/Envelope/Base.ts +12 -13
  73. package/src/Module/Envelope/FreqEnvelope.ts +6 -6
  74. package/src/Module/Envelope/index.ts +1 -1
  75. package/src/Module/Filter.ts +17 -15
  76. package/src/Module/Master.ts +3 -2
  77. package/src/Module/MidiSelector.ts +15 -6
  78. package/src/Module/Oscillator.ts +10 -10
  79. package/src/Module/PolyModule.ts +19 -30
  80. package/src/Module/Reverb.ts +3 -2
  81. package/src/Module/VirtualMidi.ts +2 -2
  82. package/src/Module/VoiceScheduler.ts +8 -10
  83. package/src/Module/Volume.ts +9 -9
  84. package/src/Module/index.ts +27 -41
  85. package/src/index.ts +0 -1
@@ -1,13 +1,14 @@
1
- import Module, { ModuleType, DummnyInternalModule } from "./Base";
2
- import PolyModule, { PolyModuleType } from "./PolyModule";
1
+ import Module, { DummnyInternalModule } from "./Base";
2
+ import PolyModule from "./PolyModule";
3
3
  export default class VoiceScheduler extends PolyModule {
4
+ static moduleName = "VoiceScheduler";
4
5
  midiOutput;
5
6
  numberOfVoicesOut;
6
7
  constructor(name, props) {
7
- super(PolyModuleType.VoiceScheduler, {
8
+ super({
8
9
  name,
10
+ child: Voice,
9
11
  props,
10
- type: ModuleType.Voice,
11
12
  });
12
13
  this.registerInputs();
13
14
  this.registerOutputs();
@@ -82,7 +83,7 @@ export default class VoiceScheduler extends PolyModule {
82
83
  this.midiOutput = this.registerOutput({ name: "midi out" });
83
84
  }
84
85
  }
85
- export class Voice extends Module {
86
+ class Voice extends Module {
86
87
  midiEvent;
87
88
  activeNote;
88
89
  triggeredAt;
@@ -90,7 +91,6 @@ export class Voice extends Module {
90
91
  constructor(name, props) {
91
92
  super(new DummnyInternalModule(), {
92
93
  name,
93
- type: ModuleType.Voice,
94
94
  props,
95
95
  });
96
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceScheduler.js","sourceRoot":"","sources":["../../src/Module/VoiceScheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VoiceScheduler.js","sourceRoot":"","sources":["../../src/Module/VoiceScheduler.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,16 @@
1
1
  import { Volume as Vol } from "tone";
2
- import Module from "../Module";
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
- export default class Volume extends Module<Vol, VolumeInterface> {
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 declare class PolyVolume extends PolyModule<Volume, VolumeInterface> {
12
+ export default class Volume extends PolyModule<MonoVolume, VolumeInterface> {
13
+ static moduleName: string;
14
14
  constructor(name: string, props: Partial<VolumeInterface>);
15
15
  }
16
+ export {};
@@ -1,15 +1,14 @@
1
1
  import { Volume as Vol } from "tone";
2
- import Module, { ModuleType } from "../Module";
3
- import PolyModule, { PolyModuleType } from "./PolyModule";
2
+ import Module from "./Base";
3
+ import PolyModule from "./PolyModule";
4
4
  const InitialProps = {
5
5
  volume: -100,
6
6
  };
7
- export default class Volume extends Module {
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,13 @@ export default class Volume extends Module {
20
19
  this.internalModule.volume.value = this.volume;
21
20
  }
22
21
  }
23
- export class PolyVolume extends PolyModule {
22
+ export default class Volume extends PolyModule {
23
+ static moduleName = "Volume";
24
24
  constructor(name, props) {
25
- super(PolyModuleType.Volume, {
25
+ super({
26
26
  name,
27
+ child: MonoVolume,
27
28
  props: { ...InitialProps, ...props },
28
- type: ModuleType.Volume,
29
29
  });
30
30
  this.registerBasicInputs();
31
31
  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,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,UAAU,EAAE,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAO1D,MAAM,YAAY,GAAoB;IACpC,MAAM,EAAE,CAAC,GAAG;CACb,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,MAA4B;IAC9D,YAAY,IAAY,EAAE,KAA+B;QACvD,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE;YACf,IAAI;YACJ,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE;YACpC,IAAI,EAAE,UAAU,CAAC,MAAM;SACxB,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,OAAO,UAAW,SAAQ,UAAmC;IACjE,YAAY,IAAY,EAAE,KAA+B;QACvD,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE;YAC3B,IAAI;YACJ,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE;YACpC,IAAI,EAAE,UAAU,CAAC,MAAM;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;CACF"}
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,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;IAE7B,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"}
@@ -1,25 +1,10 @@
1
1
  import Module, { Connectable } from "./Base";
2
2
  import PolyModule from "./PolyModule";
3
- import Oscillator, { PolyOscillator } from "./Oscillator";
4
- import { Envelope, AmpEnvelope } from "./Envelope";
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;
@@ -1,22 +1,18 @@
1
- import { ModuleType } from "./Base";
2
- import { PolyModuleType } from "./PolyModule";
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, { PolyFilter } from "./Filter";
4
+ import Filter from "./Filter";
6
5
  import Master from "./Master";
7
- import VoiceScheduler, { Voice } from "./VoiceScheduler";
6
+ import VoiceScheduler from "./VoiceScheduler";
8
7
  import MidiSelector from "./MidiSelector";
9
- import { PolyAmpEnvelope } from "./Envelope/AmpEnvelope";
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, ModuleType } from "./Base";
19
- export { default as PolyModule, PolyModuleType } from "./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
- export function moduleClassFromType(type) {
23
+ function moduleClassFromType(type) {
24
+ type = upperFirst(camelCase(type));
28
25
  switch (type) {
29
- case ModuleType.Oscillator:
26
+ case Oscillator.moduleName:
30
27
  return Oscillator;
31
- case ModuleType.Envelope:
28
+ case Envelope.moduleName:
32
29
  return Envelope;
33
- case ModuleType.AmpEnvelope:
30
+ case AmpEnvelope.moduleName:
34
31
  return AmpEnvelope;
35
- case ModuleType.FreqEnvelope:
32
+ case FreqEnvelope.moduleName:
36
33
  return FreqEnvelope;
37
- case ModuleType.Filter:
34
+ case Filter.moduleName:
38
35
  return Filter;
39
- case ModuleType.Volume:
36
+ case Volume.moduleName:
40
37
  return Volume;
41
- case PolyModuleType.Oscillator:
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.moduleName:
54
39
  return Master;
55
- case ModuleType.Voice:
56
- return Voice;
57
- case PolyModuleType.VoiceScheduler:
40
+ case VoiceScheduler.moduleName:
58
41
  return VoiceScheduler;
59
- case ModuleType.MidiSelector:
42
+ case MidiSelector.moduleName:
60
43
  return MidiSelector;
61
- case ModuleType.VirtualMidi:
44
+ case VirtualMidi.moduleName:
62
45
  return VirtualMidi;
63
- case ModuleType.Reverb:
46
+ case Reverb.moduleName:
64
47
  return Reverb;
65
- case ModuleType.Delay:
48
+ case Delay.moduleName:
66
49
  return Delay;
67
- case ModuleType.Distortion:
50
+ case Distortion.moduleName:
68
51
  return Distortion;
69
- case ModuleType.BitCrusher:
52
+ case BitCrusher.moduleName:
70
53
  return BitCrusher;
71
54
  default:
72
- throw Error("Unknown module type");
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":"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"}
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,UAAU;YACxB,OAAO,UAAU,CAAC;QACpB,KAAK,QAAQ,CAAC,UAAU;YACtB,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW,CAAC,UAAU;YACzB,OAAO,WAAW,CAAC;QACrB,KAAK,YAAY,CAAC,UAAU;YAC1B,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM,CAAC,UAAU;YACpB,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM,CAAC,UAAU;YACpB,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM,CAAC,UAAU;YACpB,OAAO,MAAM,CAAC;QAChB,KAAK,cAAc,CAAC,UAAU;YAC5B,OAAO,cAAc,CAAC;QACxB,KAAK,YAAY,CAAC,UAAU;YAC1B,OAAO,YAAY,CAAC;QACtB,KAAK,WAAW,CAAC,UAAU;YACzB,OAAO,WAAW,CAAC;QACrB,KAAK,MAAM,CAAC,UAAU;YACpB,OAAO,MAAM,CAAC;QAChB,KAAK,KAAK,CAAC,UAAU;YACnB,OAAO,KAAK,CAAC;QACf,KAAK,UAAU,CAAC,UAAU;YACxB,OAAO,UAAU,CAAC;QACpB,KAAK,UAAU,CAAC,UAAU;YACxB,OAAO,UAAU,CAAC;QACpB;YACE,MAAM,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;KAC9C;AACH,CAAC"}
package/build/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export { default } from "./Engine";
2
- export { ModuleType, PolyModuleType } from "./Module";
3
2
  export { default as MidiDevice } from "./MidiDevice";
4
3
  export { default as MidiDeviceManager } from "./MidiDeviceManager";
5
4
  export { default as Note } from "./Note";
package/build/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  export { default } from "./Engine";
2
- export { ModuleType, PolyModuleType } from "./Module";
3
2
  export { default as MidiDevice } from "./MidiDevice";
4
3
  export { default as MidiDeviceManager } from "./MidiDeviceManager";
5
4
  export { default as Note } from "./Note";
@@ -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,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACtD,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"}
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.5",
3
+ "version": "0.1.7",
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.type === "master") return;
128
+ if (m instanceof Master) return;
134
129
 
135
130
  m.dispose();
136
131
  });
@@ -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
  }
@@ -53,13 +39,13 @@ export class DummnyInternalModule implements Connectable {
53
39
  class Module<InternalModule extends Connectable, PropsInterface>
54
40
  implements ModuleInterface
55
41
  {
56
- internalModule: InternalModule;
42
+ static readonly moduleName: string;
57
43
 
58
44
  readonly id: string;
59
45
  name: string;
46
+ internalModule: InternalModule;
60
47
  inputs: Input[] = [];
61
48
  outputs: Output[] = [];
62
- type: ModuleType;
63
49
  readonly voiceNo?: number;
64
50
  updatedAt: Date;
65
51
  _props: PropsInterface;
@@ -157,10 +143,12 @@ class Module<InternalModule extends Connectable, PropsInterface>
157
143
  };
158
144
 
159
145
  serialize() {
146
+ const klass = this.constructor as typeof Module;
147
+
160
148
  return {
161
149
  id: this.id,
162
150
  name: this.name,
163
- type: this.type,
151
+ type: klass.moduleName,
164
152
  props: this.props,
165
153
  inputs: this.inputs.map((i) => i.serialize()),
166
154
  outputs: this.outputs.map((i) => i.serialize()),
@@ -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,14 @@ const InitialProps: Partial<BitCrusherInterface> = {
11
10
  bits: 16,
12
11
  };
13
12
 
14
- export default class Delay extends Effect<
13
+ export default class BitCrusher extends Effect<
15
14
  InternalBitCrasher,
16
15
  BitCrusherInterface
17
16
  > {
17
+ static moduleName = "BitCrusher";
18
+
18
19
  constructor(name: string, props: Partial<BitCrusherInterface>) {
19
- super(name, ModuleType.BitCrusher, new InternalBitCrasher(), {
20
+ super(name, new InternalBitCrasher(), {
20
21
  ...InitialProps,
21
22
  ...props,
22
23
  });
@@ -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 {
@@ -14,8 +13,10 @@ const InitialProps: Partial<DelayInterface> = {
14
13
  };
15
14
 
16
15
  export default class Delay extends Effect<FeedbackDelay, DelayInterface> {
16
+ static moduleName = "Delay";
17
+
17
18
  constructor(name: string, props: Partial<DelayInterface>) {
18
- super(name, ModuleType.Delay, new FeedbackDelay(), {
19
+ super(name, new FeedbackDelay(), {
19
20
  ...InitialProps,
20
21
  ...props,
21
22
  });
@@ -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 {
@@ -15,8 +14,10 @@ export default class Distortion extends Effect<
15
14
  InternalDistortion,
16
15
  DistortionInterface
17
16
  > {
17
+ static moduleName = "Distortion";
18
+
18
19
  constructor(name: string, props: Partial<DistortionInterface>) {
19
- super(name, ModuleType.Distortion, new InternalDistortion(), {
20
+ super(name, new InternalDistortion(), {
20
21
  ...InitialProps,
21
22
  ...props,
22
23
  });
@@ -1,5 +1,5 @@
1
1
  import { Signal } from "tone";
2
- import Module, { Connectable, ModuleType } from "./Base";
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,17 @@
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
- export default class AmpEnvelope extends Base<AmplitudeEnvelope> {
5
+ class MonoAmpEnvelope extends Base<AmplitudeEnvelope> {
8
6
  constructor(name: string, props: EnvelopeInterface) {
9
- super(name, ModuleType.AmpEnvelope, new AmplitudeEnvelope(), props);
7
+ super(name, new AmplitudeEnvelope(), props);
10
8
  }
11
9
  }
12
10
 
13
- export class PolyAmpEnvelope extends PolyBase<AmpEnvelope> {
11
+ export default class AmpEnvelope extends PolyBase<MonoAmpEnvelope> {
12
+ static moduleName = "AmpEnvelope";
13
+
14
14
  constructor(name: string, props: Partial<EnvelopeInterface>) {
15
- super(name, ModuleType.AmpEnvelope, PolyModuleType.AmpEnvelope, props);
15
+ super(name, MonoAmpEnvelope, props);
16
16
  }
17
17
  }
@@ -1,7 +1,7 @@
1
1
  import { Envelope as Env } from "tone";
2
2
 
3
- import Module, { ModuleType, Connectable, Triggerable } from "../index";
4
- import PolyModule, { PolyModuleType } from "../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
- type: ModuleType,
124
- polyType: PolyModuleType,
121
+ child: new (name: string, props: EnvelopeInterface) => EnvelopeModule,
125
122
  props: Partial<EnvelopeInterface>
126
123
  ) {
127
- super(polyType, {
124
+ super({
128
125
  name,
129
- type,
126
+ child,
130
127
  props: { ...InitialProps, ...props },
131
128
  });
132
129
 
@@ -143,15 +140,17 @@ export abstract class PolyBase<
143
140
  }
144
141
  }
145
142
 
146
- export class Envelope extends EnvelopeModule<Env> {
143
+ class MonoEnvelope extends EnvelopeModule<Env> {
147
144
  constructor(name: string, props: EnvelopeInterface) {
148
- super(name, ModuleType.Envelope, new Env(), props);
145
+ super(name, new Env(), props);
149
146
  }
150
147
  }
151
148
 
152
- export class PolyEnvelope extends PolyBase<Envelope> {
149
+ export class Envelope extends PolyBase<MonoEnvelope> {
150
+ static moduleName = "Envelope";
151
+
153
152
  constructor(name: string, props: Partial<EnvelopeInterface>) {
154
- super(name, ModuleType.Envelope, PolyModuleType.Envelope, {
153
+ super(name, MonoEnvelope, {
155
154
  ...InitialProps,
156
155
  ...props,
157
156
  });
@@ -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 default class FreqEnvelope extends Base<FrequencyEnvelope> {
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, ModuleType.FreqEnvelope, new FrequencyEnvelope(), {
22
+ super(name, new FrequencyEnvelope(), {
25
23
  ...InitialProps,
26
24
  ...props,
27
25
  });
@@ -47,9 +45,11 @@ export default class FreqEnvelope extends Base<FrequencyEnvelope> {
47
45
  }
48
46
  }
49
47
 
50
- export class PolyFreqEnvelope extends PolyBase<FreqEnvelope> {
48
+ export default class FreqEnvelope extends PolyBase<MonoFreqEnvelope> {
49
+ static moduleName = "FreqEnvelope";
50
+
51
51
  constructor(name: string, props: Partial<EnvelopeInterface>) {
52
- super(name, ModuleType.FreqEnvelope, PolyModuleType.FreqEnvelope, props);
52
+ super(name, MonoFreqEnvelope, props);
53
53
 
54
54
  this.registerOutputs();
55
55
  }
@@ -1,3 +1,3 @@
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";