@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 +0,0 @@
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,MAAM,CAAC,UAAU,GAAG,cAAc,CAAC;IACnC,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"}
@@ -1,136 +0,0 @@
1
- import { now, Oscillator as Osc } from "tone";
2
- import Engine from "../Engine";
3
- import Note from "../Note";
4
- import Module from "./Base";
5
- import PolyModule from "./PolyModule";
6
- const InitialProps = {
7
- noteName: "C3",
8
- fine: 0,
9
- coarse: 0,
10
- wave: "sine",
11
- range: 0,
12
- volume: 0,
13
- };
14
- class MonoOscillator extends Module {
15
- _note;
16
- constructor(name, props) {
17
- super(new Osc(), {
18
- name,
19
- props: { ...InitialProps, ...props },
20
- });
21
- this.start(now());
22
- }
23
- get note() {
24
- return this._note;
25
- }
26
- setNoteAt(value, time) {
27
- this._note = this.getNote(value);
28
- this.updateFrequency(time);
29
- }
30
- set note(value) {
31
- this._note = this.getNote(value);
32
- this.updateFrequency();
33
- }
34
- get noteName() {
35
- return this._props["noteName"];
36
- }
37
- set noteName(value) {
38
- this._props = { ...this.props, noteName: value };
39
- this.note = new Note(this.noteName);
40
- }
41
- get fine() {
42
- return this._props["fine"];
43
- }
44
- set fine(value) {
45
- this._props = { ...this.props, fine: Math.floor(value) };
46
- this.internalModule.detune.value = this.fine;
47
- }
48
- get coarse() {
49
- return this._props["coarse"];
50
- }
51
- set coarse(value) {
52
- this._props = { ...this.props, coarse: Math.floor(value) };
53
- this.updateFrequency();
54
- }
55
- get wave() {
56
- return this._props["wave"];
57
- }
58
- set wave(value) {
59
- this._props = { ...this.props, wave: value };
60
- this.internalModule.type = this.wave;
61
- }
62
- get volume() {
63
- return this._props["volume"];
64
- }
65
- set volume(value) {
66
- this._props = { ...this.props, volume: value };
67
- this.internalModule.volume.value = this.volume;
68
- }
69
- get range() {
70
- return this._props["range"];
71
- }
72
- set range(value) {
73
- this._props = { ...this.props, range: value };
74
- this.updateFrequency();
75
- }
76
- start(time) {
77
- if (!Engine.isStarted)
78
- return;
79
- const oscState = this.internalModule.state;
80
- if (oscState === "started") {
81
- this.internalModule.restart(time);
82
- }
83
- else {
84
- this.internalModule.start(time);
85
- }
86
- }
87
- stop(time) {
88
- this.internalModule.stop(time);
89
- }
90
- triggerAttack = (note, triggeredAt) => {
91
- this.setNoteAt(note, triggeredAt);
92
- this.start(triggeredAt);
93
- };
94
- triggerRelease = (note, triggeredAt) => {
95
- // Do nothing
96
- };
97
- updateFrequency(time) {
98
- if (!this.note)
99
- return;
100
- const freq = this.note.adjustFrequency(this.range, this.coarse);
101
- if (time) {
102
- this.internalModule.frequency.linearRampToValueAtTime(freq, time);
103
- }
104
- else {
105
- this.internalModule.frequency.value = freq;
106
- }
107
- }
108
- getNote(note) {
109
- return note instanceof Note ? note : new Note(note);
110
- }
111
- }
112
- export default class Oscillator extends PolyModule {
113
- static moduleName = "Oscillator";
114
- constructor(name, props) {
115
- super({
116
- name,
117
- child: MonoOscillator,
118
- props: { ...InitialProps, ...props },
119
- });
120
- this.registerBasicOutputs();
121
- this.registerInputs();
122
- }
123
- start(time) {
124
- this.audioModules.forEach((audioModule) => audioModule.start(time));
125
- }
126
- stop(time) {
127
- this.audioModules.forEach((audioModule) => audioModule.stop(time));
128
- }
129
- registerInputs() {
130
- this.registerInput({
131
- name: "midi in",
132
- pluggable: this.midiTriggered,
133
- });
134
- }
135
- }
136
- //# sourceMappingURL=Oscillator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Oscillator.js","sourceRoot":"","sources":["../../src/Module/Oscillator.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- import MidiEvent from "../MidiEvent";
2
- import Module, { Connectable, Voicable } from "./Base";
3
- import { Input, Output, IOInterface } from "./IO";
4
- import { AudioModule } from "../Module";
5
- interface PolyModuleInterface<MonoAudioModule, PropsInterface> {
6
- name: string;
7
- child: new (name: string, props: PropsInterface) => MonoAudioModule;
8
- props: PropsInterface;
9
- }
10
- export default abstract class PolyModule<MonoAudioModule extends Module<Connectable, any>, PropsInterface extends Voicable> {
11
- static readonly moduleName: string;
12
- readonly id: string;
13
- readonly child: new (name: string, props: PropsInterface) => MonoAudioModule;
14
- _name: string;
15
- audioModules: MonoAudioModule[];
16
- inputs: Input[];
17
- outputs: Output[];
18
- private _numberOfVoices;
19
- constructor(params: PolyModuleInterface<MonoAudioModule, PropsInterface>);
20
- get name(): string;
21
- set name(value: string);
22
- get props(): PropsInterface;
23
- set props(value: PropsInterface);
24
- get numberOfVoices(): number;
25
- set numberOfVoices(value: number);
26
- plug(audioModule: AudioModule, from: string, to: string): void;
27
- unplugAll(): void;
28
- dispose(): void;
29
- midiTriggered: (midiEvent: MidiEvent, voiceNo?: number, noteIndex?: number) => void;
30
- serialize(): {
31
- id: string;
32
- type: string;
33
- inputs: import("./IO").SerializeInterface[];
34
- outputs: import("./IO").SerializeInterface[];
35
- name: string;
36
- props: any;
37
- };
38
- protected connect: (inputAudioModule: AudioModule, attribute?: string) => void;
39
- protected disconnect: (inputAudioModule: AudioModule, attribute?: string) => void;
40
- protected registerInput(props: IOInterface): Input;
41
- protected registerOutput(props: IOInterface): Output;
42
- protected find(callback: (audioModule: MonoAudioModule) => boolean): MonoAudioModule;
43
- protected findVoice(voiceNo: number): MonoAudioModule | undefined;
44
- protected registerBasicOutputs(): void;
45
- protected registerBasicInputs(): void;
46
- private registerNumberOfVoicesInput;
47
- private adjustNumberOfModules;
48
- }
49
- export {};
@@ -1,175 +0,0 @@
1
- import { v4 as uuidv4 } from "uuid";
2
- import { Input, Output } from "./IO";
3
- export default class PolyModule {
4
- static moduleName;
5
- id;
6
- child;
7
- _name;
8
- audioModules;
9
- inputs = [];
10
- outputs = [];
11
- _numberOfVoices;
12
- constructor(params) {
13
- this.id = uuidv4();
14
- this.audioModules = [];
15
- const { child, props: extraProps, ...basicProps } = params;
16
- this.child = child;
17
- Object.assign(this, basicProps);
18
- this.numberOfVoices = 1;
19
- Object.assign(this, { props: extraProps });
20
- this.registerNumberOfVoicesInput();
21
- }
22
- get name() {
23
- return this._name;
24
- }
25
- set name(value) {
26
- this._name = value;
27
- this.audioModules.forEach((m) => (m.name = value));
28
- }
29
- get props() {
30
- if (this.audioModules.length === 0) {
31
- throw Error("There isn't any initialized module");
32
- }
33
- return this.audioModules[0].props;
34
- }
35
- set props(value) {
36
- Object.assign(this, value);
37
- this.audioModules.forEach((m) => (m.props = value));
38
- }
39
- get numberOfVoices() {
40
- return this._numberOfVoices;
41
- }
42
- set numberOfVoices(value) {
43
- this._numberOfVoices = value;
44
- this.adjustNumberOfModules();
45
- }
46
- plug(audioModule, from, to) {
47
- const output = this.outputs.find((i) => i.name === from);
48
- if (!output)
49
- throw Error(`Output ${from} not exist`);
50
- const input = audioModule.inputs.find((i) => i.name === to);
51
- if (!input)
52
- throw Error(`Input ${to} in module ${audioModule.name} not exist`);
53
- output.plug(input);
54
- }
55
- unplugAll() {
56
- this.outputs.forEach((o) => o.unPlugAll());
57
- }
58
- dispose() {
59
- this.audioModules.forEach((m) => {
60
- m.dispose();
61
- });
62
- }
63
- midiTriggered = (midiEvent, voiceNo = 0, noteIndex) => {
64
- const audioModule = this.findVoice(voiceNo);
65
- audioModule?.midiTriggered(midiEvent, noteIndex);
66
- };
67
- serialize() {
68
- if (this.audioModules.length === 0)
69
- throw Error("There isn't any initialized module");
70
- const klass = this.constructor;
71
- return {
72
- ...this.audioModules[0].serialize(),
73
- id: this.id,
74
- type: klass.moduleName,
75
- inputs: this.inputs.map((i) => i.serialize()),
76
- outputs: this.outputs.map((i) => i.serialize()),
77
- };
78
- }
79
- connect = (inputAudioModule, attribute = "internalModule") => {
80
- if (inputAudioModule instanceof PolyModule) {
81
- inputAudioModule.audioModules.forEach((m) => {
82
- if (m.voiceNo === undefined)
83
- throw Error("Voice error");
84
- const audioModule = this.findVoice(m.voiceNo);
85
- audioModule?.connect(m, attribute);
86
- });
87
- return;
88
- }
89
- this.audioModules.forEach((m) => m.connect(inputAudioModule, attribute));
90
- };
91
- disconnect = (inputAudioModule, attribute = "internalModule") => {
92
- if (inputAudioModule instanceof PolyModule) {
93
- inputAudioModule.audioModules.forEach((m) => {
94
- if (m.voiceNo === undefined)
95
- throw Error("Voice error");
96
- const audioModule = this.findVoice(m.voiceNo);
97
- try {
98
- audioModule?.disconnect(m, attribute);
99
- }
100
- catch (e) {
101
- console.log(e);
102
- }
103
- });
104
- return;
105
- }
106
- try {
107
- this.audioModules.forEach((m) => m.disconnect(inputAudioModule, attribute));
108
- }
109
- catch (e) {
110
- console.log(e);
111
- }
112
- };
113
- registerInput(props) {
114
- const input = new Input(this, props);
115
- this.inputs.push(input);
116
- return input;
117
- }
118
- registerOutput(props) {
119
- const output = new Output(this, props);
120
- this.outputs.push(output);
121
- return output;
122
- }
123
- find(callback) {
124
- const audioModule = this.audioModules.find(callback);
125
- if (!audioModule)
126
- throw Error(`Audio module not found`);
127
- return audioModule;
128
- }
129
- findVoice(voiceNo) {
130
- return this.audioModules.find((m) => m.voiceNo === voiceNo);
131
- }
132
- registerBasicOutputs() {
133
- this.registerOutput({
134
- name: "output",
135
- onPlug: (output) => {
136
- this.connect(output.audioModule);
137
- },
138
- onUnPlug: (output) => {
139
- this.disconnect(output.audioModule);
140
- },
141
- });
142
- }
143
- registerBasicInputs() {
144
- this.registerInput({
145
- name: "input",
146
- });
147
- }
148
- registerNumberOfVoicesInput() {
149
- this.registerInput({
150
- name: "number of voices",
151
- });
152
- }
153
- adjustNumberOfModules() {
154
- if (this.audioModules.length === this.numberOfVoices)
155
- return;
156
- if (this.audioModules.length > this.numberOfVoices) {
157
- const audioModule = this.audioModules.pop();
158
- audioModule?.dispose();
159
- }
160
- else {
161
- const props = this.audioModules.length
162
- ? this.props
163
- : {};
164
- const audioModule = new this.child(this.name, {
165
- ...props,
166
- voiceNo: this.audioModules.length,
167
- });
168
- if (audioModule instanceof PolyModule)
169
- throw Error("Polymodule not supported");
170
- this.audioModules.push(audioModule);
171
- }
172
- this.adjustNumberOfModules();
173
- }
174
- }
175
- //# sourceMappingURL=PolyModule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PolyModule.js","sourceRoot":"","sources":["../../src/Module/PolyModule.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
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
- static moduleName = "Reverb";
9
- constructor(name, props) {
10
- super(name, new InternalReverb(), {
11
- ...InitialProps,
12
- ...props,
13
- });
14
- }
15
- get decay() {
16
- return this._props["decay"];
17
- }
18
- set decay(value) {
19
- this._props = { ...this.props, decay: value };
20
- this.internalModule.decay = this.decay;
21
- }
22
- get preDelay() {
23
- return this._props["preDelay"];
24
- }
25
- set preDelay(value) {
26
- this._props = { ...this.props, preDelay: value };
27
- this.internalModule.preDelay = this.preDelay;
28
- }
29
- }
30
- //# sourceMappingURL=Reverb.js.map
@@ -1 +0,0 @@
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,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;IAE7B,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"}
@@ -1,131 +0,0 @@
1
- import { now, Part } from "tone";
2
- import Module, { DummnyInternalModule } from "./Base";
3
- import MidiEvent from "../MidiEvent";
4
- import Engine from "../Engine";
5
- const InitialProps = () => ({
6
- sequences: [],
7
- steps: 16,
8
- bars: 1,
9
- });
10
- export default class Sequencer extends Module {
11
- static moduleName = "Sequencer";
12
- midiOutput;
13
- part;
14
- constructor(name, props) {
15
- super(new DummnyInternalModule(), {
16
- name,
17
- props: { ...InitialProps(), ...props },
18
- });
19
- this.initializePart();
20
- this.start(now());
21
- this.registerOutputs();
22
- }
23
- get props() {
24
- return super.props;
25
- }
26
- set props(value) {
27
- if (!this.sequences)
28
- this._props["sequences"] = [];
29
- super.props = { ...this.props, ...value };
30
- this.adjust();
31
- }
32
- get steps() {
33
- return this._props["steps"];
34
- }
35
- set steps(value) {
36
- this._props = { ...this.props, steps: value };
37
- }
38
- get bars() {
39
- return this.props["bars"];
40
- }
41
- set bars(value) {
42
- this._props = { ...this.props, bars: value };
43
- }
44
- get sequences() {
45
- return this._props["sequences"];
46
- }
47
- set sequences(value) {
48
- const sequences = value;
49
- this._props = { ...this.props, sequences };
50
- }
51
- start(time) {
52
- if (!Engine.isStarted)
53
- return;
54
- this.part.start(time);
55
- }
56
- stop() {
57
- this.part.stop();
58
- }
59
- registerOutputs() {
60
- this.midiOutput = this.registerOutput({ name: "midi out" });
61
- }
62
- initializePart() {
63
- this.part = new Part(this.onPartEvent, []);
64
- this.part.loop = true;
65
- this.part.loopEnd = this.loopEnd;
66
- }
67
- adjust() {
68
- if (!this.part)
69
- return;
70
- this.adjustNumberOfBars();
71
- this.adjustNumberOfSteps();
72
- this.updateBarParts();
73
- }
74
- adjustNumberOfBars() {
75
- const currentBar = this.sequences.length;
76
- const num = currentBar - this.bars;
77
- const sequences = [...this.sequences];
78
- if (num === 0)
79
- return;
80
- if (num > 0) {
81
- sequences.pop();
82
- }
83
- else {
84
- sequences.push([]);
85
- }
86
- this.sequences = sequences;
87
- this.adjustNumberOfBars();
88
- }
89
- adjustNumberOfSteps(bar = 0) {
90
- if (!this.bars)
91
- return;
92
- const allSequences = [...this.sequences];
93
- const sequences = [...allSequences[bar]];
94
- const num = sequences.length - this.steps;
95
- if (num === 0) {
96
- if (bar === this.bars - 1)
97
- return;
98
- this.adjustNumberOfSteps(bar + 1);
99
- return;
100
- }
101
- if (num > 0) {
102
- sequences.pop();
103
- }
104
- else {
105
- const index = sequences.length;
106
- sequences.push({ active: false, time: `${bar}:0:${index}`, notes: [] });
107
- }
108
- allSequences[bar] = sequences;
109
- this.sequences = allSequences;
110
- this.adjustNumberOfSteps(bar);
111
- }
112
- updateBarParts() {
113
- this.part.clear();
114
- this.sequences.forEach((barSeqs, _) => {
115
- barSeqs.forEach((seq) => this.part.add(seq.time, seq));
116
- });
117
- this.part.loopEnd = this.loopEnd;
118
- }
119
- get loopEnd() {
120
- return `${this.bars}:0:0`;
121
- }
122
- onPartEvent = (time, sequence) => {
123
- if (!sequence.active)
124
- return;
125
- const event = MidiEvent.fromSequence(sequence, time);
126
- this.midiOutput.connections.forEach((input) => {
127
- input.pluggable(event);
128
- });
129
- };
130
- }
131
- //# sourceMappingURL=Sequencer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Sequencer.js","sourceRoot":"","sources":["../../src/Module/Sequencer.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- import Engine from "../Engine";
2
- import Module, { DummnyInternalModule } from "./Base";
3
- const InitialProps = {
4
- activeNotes: [],
5
- };
6
- export default class VirtualMidi extends Module {
7
- static moduleName = "VirtualMidi";
8
- midiOutput;
9
- constructor(name, props) {
10
- super(new DummnyInternalModule(), {
11
- name,
12
- props: { ...InitialProps, ...props },
13
- });
14
- this.registerInputs();
15
- this.registerOutputs();
16
- }
17
- get activeNotes() {
18
- return this._props["activeNotes"];
19
- }
20
- // can't set externaly
21
- set activeNotes(value) {
22
- this._props = { ...this.props, activeNotes: value };
23
- }
24
- sendMidi(midiEvent) {
25
- this.midiOutput.connections.forEach((input) => {
26
- input.pluggable(midiEvent);
27
- });
28
- }
29
- triggerAttack = (note) => {
30
- this.activeNotes = [...this.activeNotes, note.fullName];
31
- Engine._triggerPropsUpdate(this.id, this.props);
32
- };
33
- triggerRelease = (note) => {
34
- this.activeNotes = this.activeNotes.filter((name) => name !== note.fullName);
35
- Engine._triggerPropsUpdate(this.id, this.props);
36
- };
37
- serialize() {
38
- return {
39
- ...super.serialize(),
40
- activeNotes: this.activeNotes,
41
- };
42
- }
43
- registerInputs() {
44
- this.registerInput({
45
- name: "midi in",
46
- pluggable: this.midiTriggered,
47
- });
48
- }
49
- registerOutputs() {
50
- this.midiOutput = this.registerOutput({ name: "midi out" });
51
- }
52
- }
53
- //# sourceMappingURL=VirtualMidi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VirtualMidi.js","sourceRoot":"","sources":["../../src/Module/VirtualMidi.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAG/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,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;IAClC,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,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,GAAG,CAAC,IAAU,EAAE,EAAE;QAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,cAAc,GAAG,CAAC,IAAU,EAAE,EAAE;QAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CACjC,CAAC;QACF,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,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"}
@@ -1,38 +0,0 @@
1
- import Module, { DummnyInternalModule, Voicable } from "./Base";
2
- import MidiEvent from "../MidiEvent";
3
- import { Output } from "./IO";
4
- import PolyModule from "./PolyModule";
5
- export interface VoiceSchedulerInterface extends Voicable {
6
- polyNumber: number;
7
- }
8
- export default class VoiceScheduler extends PolyModule<Voice, VoiceSchedulerInterface> {
9
- static moduleName: string;
10
- midiOutput: Output;
11
- numberOfVoicesOut: Output;
12
- constructor(name: string, props: VoiceSchedulerInterface);
13
- set polyNumber(value: number);
14
- get polyNumber(): number;
15
- midiTriggered: (midiEvent: MidiEvent) => void;
16
- serialize(): {
17
- props: any;
18
- id: string;
19
- type: string;
20
- inputs: import("./IO").SerializeInterface[];
21
- outputs: import("./IO").SerializeInterface[];
22
- name: string;
23
- };
24
- private findFreeVoices;
25
- private registerInputs;
26
- private registerOutputs;
27
- }
28
- export interface VoiceInterface extends Voicable {
29
- }
30
- declare class Voice extends Module<DummnyInternalModule, VoiceInterface> {
31
- midiEvent: MidiEvent | null;
32
- activeNote: string | null;
33
- triggeredAt: number;
34
- midiOutput: Output;
35
- constructor(name: string, props: VoiceInterface);
36
- midiTriggered: (midiEvent: MidiEvent, noteIndex?: number) => void;
37
- }
38
- export {};