@blibliki/engine 0.1.26 → 0.3.1

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 (121) hide show
  1. package/README.md +252 -76
  2. package/dist/index.cjs +2 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +765 -0
  5. package/dist/index.d.ts +765 -0
  6. package/dist/index.js +2 -0
  7. package/dist/index.js.map +1 -0
  8. package/package.json +19 -31
  9. package/src/Engine.ts +158 -177
  10. package/src/core/IO/AudioIO.ts +72 -0
  11. package/src/core/IO/Base.ts +118 -0
  12. package/src/core/IO/Collection.ts +123 -47
  13. package/src/core/IO/MidiIO.ts +43 -0
  14. package/src/core/IO/PolyAudioIO.ts +115 -0
  15. package/src/core/IO/index.ts +7 -61
  16. package/src/core/Note/frequencyTable.ts +144 -144
  17. package/src/core/Note/index.ts +49 -59
  18. package/src/core/Route.ts +79 -0
  19. package/src/core/Timing/Scheduler.ts +37 -0
  20. package/src/core/Timing/Time.ts +103 -0
  21. package/src/core/Timing/Transport.ts +104 -0
  22. package/src/core/Timing/index.ts +16 -0
  23. package/src/core/index.ts +36 -0
  24. package/src/core/midi/{ComputerKeyboardInput.ts → ComputerKeyboardDevice.ts} +31 -11
  25. package/src/core/midi/MidiDevice.ts +38 -31
  26. package/src/core/midi/MidiDeviceManager.ts +54 -55
  27. package/src/core/midi/MidiEvent.ts +36 -60
  28. package/src/core/module/Module.ts +233 -0
  29. package/src/core/module/PolyModule.ts +246 -0
  30. package/src/core/module/VoiceScheduler.ts +121 -0
  31. package/src/core/module/index.ts +3 -0
  32. package/src/core/schema.ts +41 -0
  33. package/src/index.ts +31 -9
  34. package/src/modules/BiquadFilter.ts +162 -0
  35. package/src/modules/Constant.ts +72 -0
  36. package/src/modules/Envelope.ts +178 -0
  37. package/src/modules/Filter.ts +109 -104
  38. package/src/modules/Gain.ts +78 -0
  39. package/src/modules/Inspector.ts +59 -0
  40. package/src/modules/Master.ts +18 -21
  41. package/src/modules/MidiSelector.ts +50 -50
  42. package/src/modules/Oscillator.ts +202 -148
  43. package/src/modules/Scale.ts +79 -0
  44. package/src/modules/StepSequencer.ts +61 -0
  45. package/src/modules/VirtualMidi.ts +33 -49
  46. package/src/modules/index.ts +159 -74
  47. package/src/nodePolyfill.ts +25 -0
  48. package/src/processors/filter-processor.ts +82 -0
  49. package/src/processors/index.ts +28 -0
  50. package/src/processors/scale-processor.ts +81 -0
  51. package/dist/build/Engine.d.ts +0 -82
  52. package/dist/build/core/IO/AudioNode.d.ts +0 -35
  53. package/dist/build/core/IO/Collection.d.ts +0 -13
  54. package/dist/build/core/IO/ForwardNode/Base.d.ts +0 -18
  55. package/dist/build/core/IO/ForwardNode/index.d.ts +0 -27
  56. package/dist/build/core/IO/ForwardNode.d.ts +0 -38
  57. package/dist/build/core/IO/MidiNode.d.ts +0 -30
  58. package/dist/build/core/IO/Node.d.ts +0 -40
  59. package/dist/build/core/IO/index.d.ts +0 -21
  60. package/dist/build/core/Module/MonoModule.d.ts +0 -67
  61. package/dist/build/core/Module/PolyModule.d.ts +0 -61
  62. package/dist/build/core/Module/index.d.ts +0 -6
  63. package/dist/build/core/Note/frequencyTable.d.ts +0 -4
  64. package/dist/build/core/Note/index.d.ts +0 -28
  65. package/dist/build/core/midi/ComputerKeyboardInput.d.ts +0 -11
  66. package/dist/build/core/midi/MidiDevice.d.ts +0 -29
  67. package/dist/build/core/midi/MidiDeviceManager.d.ts +0 -14
  68. package/dist/build/core/midi/MidiEvent.d.ts +0 -21
  69. package/dist/build/core/midi/index.d.ts +0 -5
  70. package/dist/build/index.d.ts +0 -9
  71. package/dist/build/modules/BitCrusher.d.ts +0 -16
  72. package/dist/build/modules/Delay.d.ts +0 -19
  73. package/dist/build/modules/Distortion.d.ts +0 -16
  74. package/dist/build/modules/Effect.d.ts +0 -19
  75. package/dist/build/modules/Envelope/AmpEnvelope.d.ts +0 -18
  76. package/dist/build/modules/Envelope/Base.d.ts +0 -66
  77. package/dist/build/modules/Envelope/FreqEnvelope.d.ts +0 -25
  78. package/dist/build/modules/Envelope/index.d.ts +0 -3
  79. package/dist/build/modules/Filter.d.ts +0 -42
  80. package/dist/build/modules/LFO.d.ts +0 -44
  81. package/dist/build/modules/Master.d.ts +0 -11
  82. package/dist/build/modules/MidiSelector.d.ts +0 -21
  83. package/dist/build/modules/Oscillator.d.ts +0 -55
  84. package/dist/build/modules/Reverb.d.ts +0 -19
  85. package/dist/build/modules/Sequencer.d.ts +0 -42
  86. package/dist/build/modules/VirtualMidi.d.ts +0 -32
  87. package/dist/build/modules/VoiceScheduler.d.ts +0 -44
  88. package/dist/build/modules/Volume.d.ts +0 -26
  89. package/dist/build/modules/index.d.ts +0 -17
  90. package/dist/build/routes.d.ts +0 -18
  91. package/dist/build/types.d.ts +0 -5
  92. package/dist/build/utils.d.ts +0 -1
  93. package/dist/main.cjs.js +0 -25
  94. package/dist/main.cjs.js.map +0 -1
  95. package/dist/main.esm.js +0 -25
  96. package/dist/main.esm.js.map +0 -1
  97. package/src/core/IO/AudioNode.ts +0 -82
  98. package/src/core/IO/ForwardNode/Base.ts +0 -99
  99. package/src/core/IO/ForwardNode/index.ts +0 -60
  100. package/src/core/IO/MidiNode.ts +0 -67
  101. package/src/core/IO/Node.ts +0 -118
  102. package/src/core/Module/MonoModule.ts +0 -219
  103. package/src/core/Module/PolyModule.ts +0 -218
  104. package/src/core/Module/index.ts +0 -15
  105. package/src/core/midi/index.ts +0 -5
  106. package/src/modules/BitCrusher.ts +0 -45
  107. package/src/modules/Delay.ts +0 -53
  108. package/src/modules/Distortion.ts +0 -45
  109. package/src/modules/Effect.ts +0 -46
  110. package/src/modules/Envelope/AmpEnvelope.ts +0 -23
  111. package/src/modules/Envelope/Base.ts +0 -176
  112. package/src/modules/Envelope/FreqEnvelope.ts +0 -64
  113. package/src/modules/Envelope/index.ts +0 -3
  114. package/src/modules/LFO.ts +0 -149
  115. package/src/modules/Reverb.ts +0 -53
  116. package/src/modules/Sequencer.ts +0 -178
  117. package/src/modules/VoiceScheduler.ts +0 -145
  118. package/src/modules/Volume.ts +0 -72
  119. package/src/routes.ts +0 -49
  120. package/src/types.ts +0 -3
  121. package/src/utils.ts +0 -18
@@ -1,44 +0,0 @@
1
- import { LFO as LFOInternal } from "tone";
2
- import Module, { PolyModule, Startable } from "../core/Module";
3
- import { TWave } from "./Oscillator";
4
- import Note from "../core/Note";
5
- export interface LFOInterface {
6
- wave: TWave;
7
- frequency: number;
8
- min: number;
9
- max: number;
10
- amount: number;
11
- }
12
- declare class MonoLFO extends Module<LFOInternal, LFOInterface> implements Startable {
13
- constructor(params: {
14
- id?: string;
15
- name: string;
16
- props: Partial<LFOInterface>;
17
- });
18
- get wave(): TWave;
19
- set wave(value: TWave);
20
- get min(): number;
21
- set min(value: number);
22
- get max(): number;
23
- set max(value: number);
24
- get frequency(): number;
25
- set frequency(value: number);
26
- get amount(): number;
27
- set amount(value: number);
28
- start(time: number): void;
29
- stop(time?: number): void;
30
- triggerAttack: (_: Note, triggeredAt: number) => void;
31
- triggerRelease: () => void;
32
- private registerInputs;
33
- }
34
- export default class LFO extends PolyModule<MonoLFO, LFOInterface> {
35
- static moduleName: string;
36
- constructor(params: {
37
- id?: string;
38
- name: string;
39
- props: Partial<LFOInterface>;
40
- });
41
- start(time: number): void;
42
- stop(time?: number): void;
43
- }
44
- export {};
@@ -1,11 +0,0 @@
1
- import { Destination } from "tone";
2
- import Module from "../core/Module";
3
- export interface MasterInterface {
4
- }
5
- export default class Master extends Module<typeof Destination, MasterInterface> {
6
- static moduleName: string;
7
- constructor({ id }: {
8
- id?: string;
9
- });
10
- dispose(): void;
11
- }
@@ -1,21 +0,0 @@
1
- import Module, { DummnyInternalModule } from "../core/Module";
2
- import { MidiOutput } from "../core/IO";
3
- export interface MidiSelectorInterface {
4
- selectedId: string | null;
5
- }
6
- export default class MidiSelector extends Module<DummnyInternalModule, MidiSelectorInterface> {
7
- static moduleName: string;
8
- midiOutput: MidiOutput;
9
- constructor(params: {
10
- id?: string;
11
- name: string;
12
- props: Partial<MidiSelectorInterface>;
13
- });
14
- get selectedId(): string | null;
15
- set selectedId(value: string | null);
16
- dispose(): void;
17
- private registerOutputs;
18
- private addEventListener;
19
- private forwardMidiEvent;
20
- private removeEventListener;
21
- }
@@ -1,55 +0,0 @@
1
- import { Multiply, Oscillator as Osc } from "tone";
2
- import Note from "../core/Note";
3
- import Module, { PolyModule, Startable } from "../core/Module";
4
- export type TWave = "sine" | "triangle" | "square" | "sawtooth";
5
- export interface OscillatorInterface {
6
- noteName: string;
7
- fine: number;
8
- coarse: number;
9
- wave: TWave;
10
- volume: number;
11
- range: number;
12
- }
13
- declare class MonoOscillator extends Module<Osc, OscillatorInterface> implements Startable {
14
- private _note;
15
- private _fineSignal;
16
- constructor(params: {
17
- id?: string;
18
- name: string;
19
- props: Partial<OscillatorInterface>;
20
- });
21
- get note(): Note;
22
- setNoteAt(value: Note | string, time: number): void;
23
- set note(value: Note | string);
24
- get noteName(): string;
25
- set noteName(value: string);
26
- get fineSingal(): Multiply<"number">;
27
- get fine(): number;
28
- set fine(value: number);
29
- get coarse(): number;
30
- set coarse(value: number);
31
- get wave(): TWave;
32
- set wave(value: TWave);
33
- get volume(): number;
34
- set volume(value: number);
35
- get range(): number;
36
- set range(value: number);
37
- start(time: number): void;
38
- stop(time?: number): void;
39
- triggerAttack: (note: Note, triggeredAt: number) => void;
40
- triggerRelease: () => void;
41
- private updateFrequency;
42
- private getNote;
43
- private registerInputs;
44
- }
45
- export default class Oscillator extends PolyModule<MonoOscillator, OscillatorInterface> {
46
- static moduleName: string;
47
- constructor(params: {
48
- id?: string;
49
- name: string;
50
- props: Partial<OscillatorInterface>;
51
- });
52
- start(time: number): void;
53
- stop(time?: number): void;
54
- }
55
- export {};
@@ -1,19 +0,0 @@
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
- static moduleName: string;
9
- constructor(params: {
10
- id?: string;
11
- name: string;
12
- props: Partial<ReverbInterface>;
13
- });
14
- get decay(): number;
15
- set decay(value: number);
16
- get preDelay(): number;
17
- set preDelay(value: number);
18
- }
19
- export {};
@@ -1,42 +0,0 @@
1
- import Module, { DummnyInternalModule } from "../core/Module";
2
- import { INote } from "../core/Note";
3
- import { MidiOutput } from "../core/IO";
4
- export interface ISequence {
5
- active: boolean;
6
- time: string;
7
- notes: INote[];
8
- }
9
- interface ISequencer {
10
- sequences: ISequence[][];
11
- steps: number;
12
- bars: number;
13
- }
14
- export default class Sequencer extends Module<DummnyInternalModule, ISequencer> {
15
- static moduleName: string;
16
- midiOutput: MidiOutput;
17
- private part;
18
- constructor(params: {
19
- id?: string;
20
- name: string;
21
- props: Partial<ISequencer>;
22
- });
23
- get props(): ISequencer;
24
- set props(value: ISequencer);
25
- get steps(): number;
26
- set steps(value: number);
27
- get bars(): number;
28
- set bars(value: number);
29
- get sequences(): ISequence[][];
30
- set sequences(value: ISequence[][]);
31
- start(time: number): void;
32
- stop(): void;
33
- private registerOutputs;
34
- private initializePart;
35
- private adjust;
36
- private adjustNumberOfBars;
37
- private adjustNumberOfSteps;
38
- private updateBarParts;
39
- private get loopEnd();
40
- private onPartEvent;
41
- }
42
- export {};
@@ -1,32 +0,0 @@
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
- export interface VirtualMidiInterface {
6
- activeNotes: string[];
7
- }
8
- export default class VirtualMidi extends Module<DummnyInternalModule, VirtualMidiInterface> {
9
- static moduleName: string;
10
- midiOutput: MidiOutput;
11
- constructor(params: {
12
- id?: string;
13
- name: string;
14
- props: VirtualMidiInterface;
15
- });
16
- get activeNotes(): string[];
17
- set activeNotes(value: string[]);
18
- sendMidi(midiEvent: MidiEvent): void;
19
- triggerAttack: (note: Note, triggerAttack: number) => void;
20
- triggerRelease: (note: Note, triggerAttack: number) => void;
21
- serialize(): {
22
- activeNotes: string[];
23
- id: string;
24
- name: string;
25
- type: string;
26
- props: VirtualMidiInterface;
27
- inputs: import("../core/IO").IIOSerialize[];
28
- outputs: import("../core/IO").IIOSerialize[];
29
- };
30
- private registerInputs;
31
- private registerOutputs;
32
- }
@@ -1,44 +0,0 @@
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
- numberOfVoices: number;
25
- inputs: import("../core/IO").IIOSerialize[];
26
- outputs: import("../core/IO").IIOSerialize[];
27
- name: string;
28
- };
29
- private findFreeVoice;
30
- private registerInputs;
31
- private registerOutputs;
32
- }
33
- declare class Voice extends Module<DummnyInternalModule, VoiceSchedulerInterface> {
34
- midiEvent: MidiEvent | null;
35
- activeNote: string | null;
36
- triggeredAt: number;
37
- constructor(params: {
38
- id?: string;
39
- name: string;
40
- props: VoiceSchedulerInterface;
41
- });
42
- midiTriggered: (midiEvent: MidiEvent) => void;
43
- }
44
- export {};
@@ -1,26 +0,0 @@
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 {};
@@ -1,17 +0,0 @@
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
- numberOfVoices?: number;
14
- type: string;
15
- props: any;
16
- }
17
- export declare function createModule(params: ICreateModule): AudioModule;
@@ -1,18 +0,0 @@
1
- import { Optional } from "./types";
2
- export interface RouteProps {
3
- sourceId: string;
4
- sourceIOId: string;
5
- destinationId: string;
6
- destinationIOId: string;
7
- }
8
- export interface RouteInterface extends RouteProps {
9
- id: string;
10
- }
11
- export declare function createRoute(props: Optional<RouteInterface, "id">): {
12
- id: string;
13
- sourceId: string;
14
- destinationId: string;
15
- sourceIOId: string;
16
- destinationIOId: string;
17
- };
18
- export declare function applyRoutes(routes: RouteInterface[]): void;
@@ -1,5 +0,0 @@
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>;
@@ -1 +0,0 @@
1
- export declare function deterministicId(originalId: string, additionalString: string): string;