@blibliki/engine 0.1.17 → 0.1.19

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 (161) hide show
  1. package/README.md +13 -1
  2. package/{build → dist/build}/Engine.d.ts +14 -22
  3. package/dist/build/core/IO/AudioNode.d.ts +35 -0
  4. package/dist/build/core/IO/Collection.d.ts +13 -0
  5. package/dist/build/core/IO/ForwardNode.d.ts +38 -0
  6. package/dist/build/core/IO/MidiNode.d.ts +30 -0
  7. package/dist/build/core/IO/Node.d.ts +36 -0
  8. package/dist/build/core/IO/index.d.ts +12 -0
  9. package/dist/build/core/Module/MonoModule.d.ts +67 -0
  10. package/dist/build/core/Module/PolyModule.d.ts +57 -0
  11. package/dist/build/core/Module/index.d.ts +6 -0
  12. package/{build → dist/build/core}/Note/index.d.ts +3 -0
  13. package/{build → dist/build/core/midi}/MidiDevice.d.ts +1 -1
  14. package/dist/build/core/midi/MidiEvent.d.ts +21 -0
  15. package/dist/build/core/midi/index.d.ts +5 -0
  16. package/dist/build/index.d.ts +9 -0
  17. package/{build/Module → dist/build/modules}/BitCrusher.d.ts +5 -1
  18. package/{build/Module → dist/build/modules}/Delay.d.ts +5 -1
  19. package/{build/Module → dist/build/modules}/Distortion.d.ts +5 -1
  20. package/{build/Module → dist/build/modules}/Effect.d.ts +7 -2
  21. package/{build/Module → dist/build/modules}/Envelope/AmpEnvelope.d.ts +10 -2
  22. package/{build/Module → dist/build/modules}/Envelope/Base.d.ts +30 -11
  23. package/{build/Module → dist/build/modules}/Envelope/FreqEnvelope.d.ts +10 -3
  24. package/{build/Module → dist/build/modules}/Filter.d.ts +13 -13
  25. package/{build/Module → dist/build/modules}/Master.d.ts +5 -2
  26. package/{build/Module → dist/build/modules}/MidiSelector.d.ts +9 -5
  27. package/{build/Module → dist/build/modules}/Oscillator.d.ts +15 -9
  28. package/{build/Module → dist/build/modules}/Reverb.d.ts +5 -1
  29. package/{build/Module → dist/build/modules}/Sequencer.d.ts +9 -5
  30. package/{build/Module → dist/build/modules}/VirtualMidi.d.ts +12 -8
  31. package/dist/build/modules/VoiceScheduler.d.ts +43 -0
  32. package/dist/build/modules/Volume.d.ts +26 -0
  33. package/dist/build/modules/index.d.ts +16 -0
  34. package/{build → dist/build}/routes.d.ts +6 -5
  35. package/dist/build/types.d.ts +5 -0
  36. package/dist/build/utils.d.ts +1 -0
  37. package/dist/main.cjs.js +33 -0
  38. package/dist/main.cjs.js.map +1 -0
  39. package/dist/main.esm.js +33 -0
  40. package/dist/main.esm.js.map +1 -0
  41. package/package.json +26 -22
  42. package/src/Engine.ts +27 -36
  43. package/src/core/IO/AudioNode.ts +77 -0
  44. package/src/core/IO/Collection.ts +76 -0
  45. package/src/core/IO/ForwardNode.ts +192 -0
  46. package/src/core/IO/MidiNode.ts +67 -0
  47. package/src/core/IO/Node.ts +117 -0
  48. package/src/core/IO/index.ts +47 -0
  49. package/src/core/Module/MonoModule.ts +219 -0
  50. package/src/core/Module/PolyModule.ts +206 -0
  51. package/src/core/Module/index.ts +15 -0
  52. package/src/{Note → core/Note}/index.ts +19 -4
  53. package/src/{MidiDeviceManager.ts → core/midi/MidiDeviceManager.ts} +20 -15
  54. package/src/core/midi/MidiEvent.ts +91 -0
  55. package/src/core/midi/index.ts +5 -0
  56. package/src/index.ts +8 -12
  57. package/src/{Module → modules}/BitCrusher.ts +15 -4
  58. package/src/{Module → modules}/Delay.ts +15 -4
  59. package/src/{Module → modules}/Distortion.ts +15 -4
  60. package/src/{Module → modules}/Effect.ts +10 -6
  61. package/src/modules/Envelope/AmpEnvelope.ts +23 -0
  62. package/src/{Module → modules}/Envelope/Base.ts +50 -31
  63. package/src/{Module → modules}/Envelope/FreqEnvelope.ts +18 -23
  64. package/src/{Module → modules}/Filter.ts +18 -46
  65. package/src/{Module → modules}/Master.ts +8 -2
  66. package/src/{Module → modules}/MidiSelector.ts +18 -14
  67. package/src/{Module → modules}/Oscillator.ts +27 -16
  68. package/src/{Module → modules}/Reverb.ts +15 -4
  69. package/src/{Module → modules}/Sequencer.ts +17 -13
  70. package/src/{Module → modules}/VirtualMidi.ts +16 -12
  71. package/src/modules/VoiceScheduler.ts +145 -0
  72. package/src/{Module → modules}/Volume.ts +23 -15
  73. package/src/{Module → modules}/index.ts +14 -21
  74. package/src/routes.ts +19 -18
  75. package/src/types.ts +3 -0
  76. package/src/utils.ts +18 -0
  77. package/build/Engine.js +0 -165
  78. package/build/Engine.js.map +0 -1
  79. package/build/MidiDevice.js +0 -45
  80. package/build/MidiDevice.js.map +0 -1
  81. package/build/MidiDeviceManager.js +0 -59
  82. package/build/MidiDeviceManager.js.map +0 -1
  83. package/build/MidiEvent.d.ts +0 -18
  84. package/build/MidiEvent.js +0 -64
  85. package/build/MidiEvent.js.map +0 -1
  86. package/build/Module/Base.d.ts +0 -63
  87. package/build/Module/Base.js +0 -138
  88. package/build/Module/Base.js.map +0 -1
  89. package/build/Module/BitCrusher.js +0 -22
  90. package/build/Module/BitCrusher.js.map +0 -1
  91. package/build/Module/DataSequencer.d.ts +0 -26
  92. package/build/Module/DataSequencer.js +0 -91
  93. package/build/Module/DataSequencer.js.map +0 -1
  94. package/build/Module/Delay.js +0 -30
  95. package/build/Module/Delay.js.map +0 -1
  96. package/build/Module/Distortion.js +0 -22
  97. package/build/Module/Distortion.js.map +0 -1
  98. package/build/Module/Effect.js +0 -22
  99. package/build/Module/Effect.js.map +0 -1
  100. package/build/Module/Envelope/AmpEnvelope.js +0 -14
  101. package/build/Module/Envelope/AmpEnvelope.js.map +0 -1
  102. package/build/Module/Envelope/Base.js +0 -106
  103. package/build/Module/Envelope/Base.js.map +0 -1
  104. package/build/Module/Envelope/FreqEnvelope.js +0 -50
  105. package/build/Module/Envelope/FreqEnvelope.js.map +0 -1
  106. package/build/Module/Envelope/index.js +0 -4
  107. package/build/Module/Envelope/index.js.map +0 -1
  108. package/build/Module/Filter.js +0 -100
  109. package/build/Module/Filter.js.map +0 -1
  110. package/build/Module/IO.d.ts +0 -39
  111. package/build/Module/IO.js +0 -59
  112. package/build/Module/IO.js.map +0 -1
  113. package/build/Module/Master.js +0 -12
  114. package/build/Module/Master.js.map +0 -1
  115. package/build/Module/MidiSelector.js +0 -50
  116. package/build/Module/MidiSelector.js.map +0 -1
  117. package/build/Module/Oscillator.js +0 -136
  118. package/build/Module/Oscillator.js.map +0 -1
  119. package/build/Module/PolyModule.d.ts +0 -49
  120. package/build/Module/PolyModule.js +0 -175
  121. package/build/Module/PolyModule.js.map +0 -1
  122. package/build/Module/Reverb.js +0 -30
  123. package/build/Module/Reverb.js.map +0 -1
  124. package/build/Module/Sequencer.js +0 -131
  125. package/build/Module/Sequencer.js.map +0 -1
  126. package/build/Module/VirtualMidi.js +0 -53
  127. package/build/Module/VirtualMidi.js.map +0 -1
  128. package/build/Module/VoiceScheduler.d.ts +0 -38
  129. package/build/Module/VoiceScheduler.js +0 -130
  130. package/build/Module/VoiceScheduler.js.map +0 -1
  131. package/build/Module/Volume.d.ts +0 -20
  132. package/build/Module/Volume.js +0 -48
  133. package/build/Module/Volume.js.map +0 -1
  134. package/build/Module/index.d.ts +0 -14
  135. package/build/Module/index.js +0 -66
  136. package/build/Module/index.js.map +0 -1
  137. package/build/Note/frequencyTable.js +0 -146
  138. package/build/Note/frequencyTable.js.map +0 -1
  139. package/build/Note/index.js +0 -81
  140. package/build/Note/index.js.map +0 -1
  141. package/build/index.d.ts +0 -8
  142. package/build/index.js +0 -5
  143. package/build/index.js.map +0 -1
  144. package/build/routes.js +0 -31
  145. package/build/routes.js.map +0 -1
  146. package/jest.config.js +0 -19
  147. package/src/MidiEvent.ts +0 -93
  148. package/src/Module/Base.ts +0 -223
  149. package/src/Module/DataSequencer.ts +0 -121
  150. package/src/Module/Envelope/AmpEnvelope.ts +0 -17
  151. package/src/Module/IO.ts +0 -85
  152. package/src/Module/PolyModule.ts +0 -234
  153. package/src/Module/VoiceScheduler.ts +0 -161
  154. package/test/Module/Oscillator.test.ts +0 -9
  155. package/tsconfig.json +0 -22
  156. /package/{build → dist/build/core}/Note/frequencyTable.d.ts +0 -0
  157. /package/{build → dist/build/core/midi}/MidiDeviceManager.d.ts +0 -0
  158. /package/{build/Module → dist/build/modules}/Envelope/index.d.ts +0 -0
  159. /package/src/{Note → core/Note}/frequencyTable.ts +0 -0
  160. /package/src/{MidiDevice.ts → core/midi/MidiDevice.ts} +0 -0
  161. /package/src/{Module → modules}/Envelope/index.ts +0 -0
@@ -1,20 +1,19 @@
1
1
  import { Filter as InternalFilter, FilterRollOff } from "tone";
2
- import { FreqEnvelope, MonoFreqEnvelope } from "./Envelope";
3
- import Module, { Voicable } from "./Base";
4
- import PolyModule from "./PolyModule";
5
- interface FilterInterface extends Voicable {
2
+ import Module, { PolyModule } from "../core/Module";
3
+ interface FilterInterface {
6
4
  cutoff: number;
7
5
  filterType: BiquadFilterType;
8
6
  resonance: number;
9
7
  slope: FilterRollOff;
10
8
  envelopeAmount: number;
11
- voiceNo?: number;
12
- }
13
- interface FilterProps extends Partial<FilterInterface> {
14
9
  }
10
+ type FilterProps = Partial<FilterInterface>;
15
11
  declare class MonoFilter extends Module<InternalFilter, FilterInterface> {
16
- private _envelope;
17
- constructor(name: string, props: FilterProps);
12
+ constructor(params: {
13
+ id?: string;
14
+ name: string;
15
+ props: FilterProps;
16
+ });
18
17
  get cutoff(): number;
19
18
  set cutoff(value: number);
20
19
  get filterType(): BiquadFilterType;
@@ -26,12 +25,13 @@ declare class MonoFilter extends Module<InternalFilter, FilterInterface> {
26
25
  set resonance(value: number);
27
26
  get envelopeAmount(): number;
28
27
  set envelopeAmount(value: number);
29
- conntectedEnvelope(envelope: MonoFreqEnvelope): void;
30
28
  }
31
29
  export default class Filter extends PolyModule<MonoFilter, FilterInterface> {
32
30
  static moduleName: string;
33
- constructor(name: string, props: Partial<FilterInterface>);
34
- private registerInputs;
35
- conntectedEnvelope(freqEnvelope: FreqEnvelope): void;
31
+ constructor(params: {
32
+ id?: string;
33
+ name: string;
34
+ props: Partial<FilterInterface>;
35
+ });
36
36
  }
37
37
  export {};
@@ -1,8 +1,11 @@
1
1
  import { Destination } from "tone";
2
- import Module from "./Base";
2
+ import Module from "../core/Module";
3
3
  export interface MasterInterface {
4
4
  }
5
5
  export default class Master extends Module<typeof Destination, MasterInterface> {
6
6
  static moduleName: string;
7
- constructor();
7
+ constructor({ id }: {
8
+ id?: string;
9
+ });
10
+ dispose(): void;
8
11
  }
@@ -1,17 +1,21 @@
1
- import Module, { DummnyInternalModule } from "./Base";
2
- import { Output } from "./IO";
1
+ import Module, { DummnyInternalModule } from "../core/Module";
2
+ import { MidiOutput } from "../core/IO";
3
3
  export interface MidiSelectorInterface {
4
4
  selectedId: string | null;
5
5
  }
6
6
  export default class MidiSelector extends Module<DummnyInternalModule, MidiSelectorInterface> {
7
7
  static moduleName: string;
8
- midiOutput: Output;
9
- constructor(name: string, props: Partial<MidiSelectorInterface>);
8
+ midiOutput: MidiOutput;
9
+ constructor(params: {
10
+ id?: string;
11
+ name: string;
12
+ props: Partial<MidiSelectorInterface>;
13
+ });
10
14
  get selectedId(): string | null;
11
15
  set selectedId(value: string | null);
12
16
  dispose(): void;
13
17
  private registerOutputs;
14
- private onMidiEvent;
15
18
  private addEventListener;
19
+ private _onMidiEvent;
16
20
  private removeEventListener;
17
21
  }
@@ -1,8 +1,7 @@
1
1
  import { Oscillator as Osc } from "tone";
2
- import Note from "../Note";
3
- import Module, { Voicable } from "./Base";
4
- import PolyModule from "./PolyModule";
5
- export interface OscillatorInterface extends Voicable {
2
+ import Note from "../core/Note";
3
+ import Module, { PolyModule, Startable } from "../core/Module";
4
+ export interface OscillatorInterface {
6
5
  noteName: string;
7
6
  fine: number;
8
7
  coarse: number;
@@ -10,9 +9,13 @@ export interface OscillatorInterface extends Voicable {
10
9
  volume: number;
11
10
  range: number;
12
11
  }
13
- declare class MonoOscillator extends Module<Osc, OscillatorInterface> {
12
+ declare class MonoOscillator extends Module<Osc, OscillatorInterface> implements Startable {
14
13
  private _note;
15
- constructor(name: string, props: Partial<OscillatorInterface>);
14
+ constructor(params: {
15
+ id?: string;
16
+ name: string;
17
+ props: Partial<OscillatorInterface>;
18
+ });
16
19
  get note(): Note;
17
20
  setNoteAt(value: Note | string, time: number): void;
18
21
  set note(value: Note | string);
@@ -31,15 +34,18 @@ declare class MonoOscillator extends Module<Osc, OscillatorInterface> {
31
34
  start(time: number): void;
32
35
  stop(time?: number): void;
33
36
  triggerAttack: (note: Note, triggeredAt: number) => void;
34
- triggerRelease: (note: Note, triggeredAt: number) => void;
37
+ triggerRelease: () => void;
35
38
  private updateFrequency;
36
39
  private getNote;
37
40
  }
38
41
  export default class Oscillator extends PolyModule<MonoOscillator, OscillatorInterface> {
39
42
  static moduleName: string;
40
- constructor(name: string, props: Partial<OscillatorInterface>);
43
+ constructor(params: {
44
+ id?: string;
45
+ name: string;
46
+ props: Partial<OscillatorInterface>;
47
+ });
41
48
  start(time: number): void;
42
49
  stop(time?: number): void;
43
- private registerInputs;
44
50
  }
45
51
  export {};
@@ -6,7 +6,11 @@ interface ReverbInterface extends EffectInterface {
6
6
  }
7
7
  export default class Reverb extends Effect<InternalReverb, ReverbInterface> {
8
8
  static moduleName: string;
9
- constructor(name: string, props: Partial<ReverbInterface>);
9
+ constructor(params: {
10
+ id?: string;
11
+ name: string;
12
+ props: Partial<ReverbInterface>;
13
+ });
10
14
  get decay(): number;
11
15
  set decay(value: number);
12
16
  get preDelay(): number;
@@ -1,6 +1,6 @@
1
- import Module, { DummnyInternalModule } from "./Base";
2
- import { INote } from "../Note";
3
- import { Output } from "./IO";
1
+ import Module, { DummnyInternalModule } from "../core/Module";
2
+ import { INote } from "../core/Note";
3
+ import { MidiOutput } from "../core/IO";
4
4
  export interface ISequence {
5
5
  active: boolean;
6
6
  time: string;
@@ -13,9 +13,13 @@ interface ISequencer {
13
13
  }
14
14
  export default class Sequencer extends Module<DummnyInternalModule, ISequencer> {
15
15
  static moduleName: string;
16
- midiOutput: Output;
16
+ midiOutput: MidiOutput;
17
17
  private part;
18
- constructor(name: string, props: Partial<ISequencer>);
18
+ constructor(params: {
19
+ id?: string;
20
+ name: string;
21
+ props: Partial<ISequencer>;
22
+ });
19
23
  get props(): ISequencer;
20
24
  set props(value: ISequencer);
21
25
  get steps(): number;
@@ -1,14 +1,18 @@
1
- import MidiEvent from "../MidiEvent";
2
- import Note from "../Note";
3
- import Module, { DummnyInternalModule } from "./Base";
4
- import { Output } from "./IO";
1
+ import { MidiEvent } from "../core/midi";
2
+ import Note from "../core/Note";
3
+ import Module, { DummnyInternalModule } from "../core/Module";
4
+ import { MidiOutput } from "../core/IO";
5
5
  export interface VirtualMidiInterface {
6
6
  activeNotes: string[];
7
7
  }
8
8
  export default class VirtualMidi extends Module<DummnyInternalModule, VirtualMidiInterface> {
9
9
  static moduleName: string;
10
- midiOutput: Output;
11
- constructor(name: string, props: VirtualMidiInterface);
10
+ midiOutput: MidiOutput;
11
+ constructor(params: {
12
+ id?: string;
13
+ name: string;
14
+ props: VirtualMidiInterface;
15
+ });
12
16
  get activeNotes(): string[];
13
17
  set activeNotes(value: string[]);
14
18
  sendMidi(midiEvent: MidiEvent): void;
@@ -20,8 +24,8 @@ export default class VirtualMidi extends Module<DummnyInternalModule, VirtualMid
20
24
  name: string;
21
25
  type: string;
22
26
  props: VirtualMidiInterface;
23
- inputs: import("./IO").SerializeInterface[];
24
- outputs: import("./IO").SerializeInterface[];
27
+ inputs: import("../core/IO").IIOSerialize[];
28
+ outputs: import("../core/IO").IIOSerialize[];
25
29
  };
26
30
  private registerInputs;
27
31
  private registerOutputs;
@@ -0,0 +1,43 @@
1
+ import { MidiEvent } from "../core/midi";
2
+ import Module, { PolyModule, DummnyInternalModule } from "../core/Module";
3
+ import { MidiOutput } from "../core/IO";
4
+ export interface VoiceSchedulerInterface {
5
+ polyNumber: number;
6
+ }
7
+ export default class VoiceScheduler extends PolyModule<Voice, VoiceSchedulerInterface> {
8
+ static moduleName: string;
9
+ midiOutput: MidiOutput;
10
+ constructor(params: {
11
+ id?: string;
12
+ name: string;
13
+ props: VoiceSchedulerInterface;
14
+ });
15
+ set polyNumber(value: number);
16
+ get polyNumber(): number;
17
+ onMidiEvent: (midiEvent: MidiEvent) => void;
18
+ serialize(): {
19
+ props: {
20
+ polyNumber: number;
21
+ };
22
+ id: string;
23
+ type: string;
24
+ inputs: import("../core/IO").IIOSerialize[];
25
+ outputs: import("../core/IO").IIOSerialize[];
26
+ name: string;
27
+ };
28
+ private findFreeVoice;
29
+ private registerInputs;
30
+ private registerOutputs;
31
+ }
32
+ declare class Voice extends Module<DummnyInternalModule, VoiceSchedulerInterface> {
33
+ midiEvent: MidiEvent | null;
34
+ activeNote: string | null;
35
+ triggeredAt: number;
36
+ constructor(params: {
37
+ id?: string;
38
+ name: string;
39
+ props: VoiceSchedulerInterface;
40
+ });
41
+ midiTriggered: (midiEvent: MidiEvent) => void;
42
+ }
43
+ export {};
@@ -0,0 +1,26 @@
1
+ import { Volume as Vol } from "tone";
2
+ import Module, { PolyModule } from "../core/Module";
3
+ import Note from "../core/Note";
4
+ export interface VolumeInterface {
5
+ volume: number;
6
+ }
7
+ declare class MonoVolume extends Module<Vol, VolumeInterface> {
8
+ constructor(params: {
9
+ id?: string;
10
+ name: string;
11
+ props: Partial<VolumeInterface>;
12
+ });
13
+ get volume(): number;
14
+ set volume(value: number);
15
+ triggerAttack: (note: Note, triggeredAt: number) => void;
16
+ triggerRelease: () => void;
17
+ }
18
+ export default class Volume extends PolyModule<MonoVolume, VolumeInterface> {
19
+ static moduleName: string;
20
+ constructor(params: {
21
+ id?: string;
22
+ name: string;
23
+ props: Partial<VolumeInterface>;
24
+ });
25
+ }
26
+ export {};
@@ -0,0 +1,16 @@
1
+ import { AudioModule } from "../core/Module";
2
+ export { default as Master } from "./Master";
3
+ export { default as Filter } from "./Filter";
4
+ export { default as Oscillator } from "./Oscillator";
5
+ export { default as VirtualMidi } from "./VirtualMidi";
6
+ export { default as VoiceScheduler } from "./VoiceScheduler";
7
+ export { default as Sequencer } from "./Sequencer";
8
+ export type { ISequence } from "./Sequencer";
9
+ export { Envelope, AmpEnvelope, FreqEnvelope, EnvelopeStages, } from "./Envelope";
10
+ export interface ICreateModule {
11
+ id?: string;
12
+ name: string;
13
+ type: string;
14
+ props: any;
15
+ }
16
+ export declare function createModule(params: ICreateModule): AudioModule;
@@ -1,17 +1,18 @@
1
+ import { Optional } from "./types";
1
2
  export interface RouteProps {
2
3
  sourceId: string;
3
- outputName: string;
4
+ sourceIOId: string;
4
5
  destinationId: string;
5
- inputName: string;
6
+ destinationIOId: string;
6
7
  }
7
8
  export interface RouteInterface extends RouteProps {
8
9
  id: string;
9
10
  }
10
- export declare function createRoute(props: RouteProps): {
11
+ export declare function createRoute(props: Optional<RouteInterface, "id">): {
11
12
  id: string;
12
13
  sourceId: string;
13
- outputName: string;
14
+ sourceIOId: string;
14
15
  destinationId: string;
15
- inputName: string;
16
+ destinationIOId: string;
16
17
  };
17
18
  export declare function applyRoutes(routes: RouteInterface[]): void;
@@ -0,0 +1,5 @@
1
+ export type AnyObject = {
2
+ [Key: string]: any;
3
+ };
4
+ export type AtLeast<T, K extends keyof T> = Partial<T> & Pick<T, K>;
5
+ export type Optional<T, K extends keyof T> = Partial<Pick<T, K>> & Omit<T, K>;
@@ -0,0 +1 @@
1
+ export declare function deterministicId(originalId: string, additionalString: string): string;