@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,130 +0,0 @@
1
- import Module, { DummnyInternalModule } from "./Base";
2
- import PolyModule from "./PolyModule";
3
- export default class VoiceScheduler extends PolyModule {
4
- static moduleName = "VoiceScheduler";
5
- midiOutput;
6
- numberOfVoicesOut;
7
- constructor(name, props) {
8
- super({
9
- name,
10
- child: Voice,
11
- props,
12
- });
13
- this.registerInputs();
14
- this.registerOutputs();
15
- this.polyNumber = this.numberOfVoices;
16
- }
17
- set polyNumber(value) {
18
- super.numberOfVoices = value;
19
- if (!this.numberOfVoicesOut)
20
- return;
21
- this.numberOfVoicesOut.connections.forEach((input) => {
22
- if (input.audioModule instanceof Module)
23
- return;
24
- input.audioModule.numberOfVoices = value;
25
- });
26
- }
27
- get polyNumber() {
28
- return this.numberOfVoices;
29
- }
30
- midiTriggered = (midiEvent) => {
31
- let voices;
32
- switch (midiEvent.type) {
33
- case "noteOn":
34
- voices = this.findFreeVoices(midiEvent.notes.length);
35
- break;
36
- case "noteOff":
37
- voices = midiEvent.notes.map((note) => {
38
- return this.audioModules.find((v) => v.activeNote === note.fullName);
39
- });
40
- break;
41
- default:
42
- throw Error("This type is not a note");
43
- }
44
- if (voices.length === 0)
45
- return;
46
- voices.forEach((voice, i) => {
47
- if (!voice)
48
- return;
49
- voice.midiTriggered(midiEvent, i);
50
- this.midiOutput.connections.forEach((input) => {
51
- input.pluggable(midiEvent, voice.voiceNo, i);
52
- });
53
- });
54
- };
55
- serialize() {
56
- const serialize = super.serialize();
57
- delete serialize.props.voiceNo;
58
- return {
59
- ...serialize,
60
- props: { ...serialize.props, polyNumber: this.polyNumber },
61
- };
62
- }
63
- findFreeVoices(num = 1) {
64
- let voices = this.audioModules.filter((v) => !v.activeNote).slice(0, num);
65
- if (voices.length === 0) {
66
- voices = this.audioModules
67
- .sort((a, b) => {
68
- if (!a || !b)
69
- return 0;
70
- return a.triggeredAt - b.triggeredAt;
71
- })
72
- .slice(0, num);
73
- }
74
- return voices;
75
- }
76
- registerInputs() {
77
- this.registerInput({
78
- name: "midi in",
79
- pluggable: this.midiTriggered,
80
- });
81
- }
82
- registerOutputs() {
83
- this.numberOfVoicesOut = this.registerOutput({
84
- name: "number of voices",
85
- onPlug: (input) => {
86
- if (input.audioModule instanceof Module)
87
- return;
88
- input.audioModule.numberOfVoices = this.numberOfVoices;
89
- },
90
- });
91
- this.midiOutput = this.registerOutput({ name: "midi out" });
92
- }
93
- }
94
- class Voice extends Module {
95
- midiEvent;
96
- activeNote;
97
- triggeredAt;
98
- midiOutput;
99
- constructor(name, props) {
100
- super(new DummnyInternalModule(), {
101
- name,
102
- props,
103
- });
104
- }
105
- midiTriggered = (midiEvent, noteIndex) => {
106
- if (this.voiceNo === undefined)
107
- throw Error("Voice without voiceNo");
108
- if (noteIndex === undefined)
109
- return;
110
- const { triggeredAt, notes, type } = midiEvent;
111
- const note = notes[noteIndex];
112
- if (!note)
113
- return;
114
- const noteName = note.fullName;
115
- switch (type) {
116
- case "noteOn":
117
- this.activeNote = noteName;
118
- this.triggeredAt = triggeredAt;
119
- this.midiEvent = midiEvent;
120
- break;
121
- case "noteOff":
122
- this.activeNote = null;
123
- this.midiEvent = null;
124
- break;
125
- default:
126
- throw Error("This type is not a note");
127
- }
128
- };
129
- }
130
- //# sourceMappingURL=VoiceScheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoiceScheduler.js","sourceRoot":"","sources":["../../src/Module/VoiceScheduler.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { Volume as Vol } from "tone";
2
- import Module, { Voicable } from "./Base";
3
- import PolyModule from "./PolyModule";
4
- import Note from "../Note";
5
- export interface VolumeInterface extends Voicable {
6
- volume: number;
7
- }
8
- declare class MonoVolume extends Module<Vol, VolumeInterface> {
9
- constructor(name: string, props: Partial<VolumeInterface>);
10
- get volume(): number;
11
- set volume(value: number);
12
- triggerAttack: (note: Note, triggeredAt: number) => void;
13
- triggerRelease: (note: Note, triggeredAt: number) => void;
14
- }
15
- export default class Volume extends PolyModule<MonoVolume, VolumeInterface> {
16
- static moduleName: string;
17
- constructor(name: string, props: Partial<VolumeInterface>);
18
- private registerInputs;
19
- }
20
- export {};
@@ -1,48 +0,0 @@
1
- import { Volume as Vol } from "tone";
2
- import Module from "./Base";
3
- import PolyModule from "./PolyModule";
4
- const InitialProps = {
5
- volume: -Infinity,
6
- };
7
- class MonoVolume extends Module {
8
- constructor(name, props) {
9
- super(new Vol(), {
10
- name,
11
- props: { ...InitialProps, ...props },
12
- });
13
- }
14
- get volume() {
15
- return this._props["volume"];
16
- }
17
- set volume(value) {
18
- this._props = { ...this.props, volume: value };
19
- this.internalModule.volume.value = this.volume;
20
- }
21
- triggerAttack = (note, triggeredAt) => {
22
- const db = 20 * Math.log10(note.velocity);
23
- this.internalModule.volume.exponentialRampToValueAtTime(db, triggeredAt);
24
- };
25
- triggerRelease = (note, triggeredAt) => {
26
- // Do nothing
27
- };
28
- }
29
- export default class Volume extends PolyModule {
30
- static moduleName = "Volume";
31
- constructor(name, props) {
32
- super({
33
- name,
34
- child: MonoVolume,
35
- props: { ...InitialProps, ...props },
36
- });
37
- this.registerBasicInputs();
38
- this.registerBasicOutputs();
39
- this.registerInputs();
40
- }
41
- registerInputs() {
42
- this.registerInput({
43
- name: "midi in",
44
- pluggable: this.midiTriggered,
45
- });
46
- }
47
- }
48
- //# sourceMappingURL=Volume.js.map
@@ -1 +0,0 @@
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;AAOtC,MAAM,YAAY,GAAoB;IACpC,MAAM,EAAE,CAAC,QAAQ;CAClB,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;IAED,aAAa,GAAG,CAAC,IAAU,EAAE,WAAmB,EAAE,EAAE;QAClD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,4BAA4B,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC3E,CAAC,CAAC;IAEF,cAAc,GAAG,CAAC,IAAU,EAAE,WAAmB,EAAE,EAAE;QACnD,aAAa;IACf,CAAC,CAAC;CACH;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;QAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,aAAa,CAAC;YACjB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,IAAI,CAAC,aAAa;SAC9B,CAAC,CAAC;IACL,CAAC"}
@@ -1,14 +0,0 @@
1
- import Module, { Connectable } from "./Base";
2
- import PolyModule from "./PolyModule";
3
- export { default } from "./Base";
4
- export { default as PolyModule } from "./PolyModule";
5
- export type { ModuleInterface, Connectable, Triggerable } from "./Base";
6
- export { default as Filter } from "./Filter";
7
- export { default as Oscillator } from "./Oscillator";
8
- export { default as Sequencer } from "./Sequencer";
9
- export { default as DataSequencer } from "./DataSequencer";
10
- export type { ISequence } from "./Sequencer";
11
- export type { IDataSequence } from "./DataSequencer";
12
- export { Envelope, AmpEnvelope, FreqEnvelope, EnvelopeStages, } from "./Envelope";
13
- export declare type AudioModule = Module<Connectable, any> | PolyModule<Module<Connectable, any>, any>;
14
- export declare function createModule(name: string, type: string, props: any): AudioModule;
@@ -1,66 +0,0 @@
1
- import { camelCase, upperFirst } from "lodash";
2
- import Oscillator from "./Oscillator";
3
- import { Envelope, AmpEnvelope, FreqEnvelope } from "./Envelope";
4
- import Filter from "./Filter";
5
- import Master from "./Master";
6
- import VoiceScheduler from "./VoiceScheduler";
7
- import MidiSelector from "./MidiSelector";
8
- import Volume from "./Volume";
9
- import VirtualMidi from "./VirtualMidi";
10
- import Reverb from "./Reverb";
11
- import Delay from "./Delay";
12
- import Distortion from "./Distortion";
13
- import BitCrusher from "./BitCrusher";
14
- import Sequencer from "./Sequencer";
15
- import DataSequencer from "./DataSequencer";
16
- export { default } from "./Base";
17
- export { default as PolyModule } from "./PolyModule";
18
- export { default as Filter } from "./Filter";
19
- export { default as Oscillator } from "./Oscillator";
20
- export { default as Sequencer } from "./Sequencer";
21
- export { default as DataSequencer } from "./DataSequencer";
22
- export { Envelope, AmpEnvelope, FreqEnvelope, EnvelopeStages, } from "./Envelope";
23
- export function createModule(name, type, props) {
24
- const klass = moduleClassFromType(type);
25
- return new klass(name, props);
26
- }
27
- function moduleClassFromType(type) {
28
- type = upperFirst(camelCase(type));
29
- switch (type) {
30
- case Oscillator.moduleName:
31
- return Oscillator;
32
- case Envelope.moduleName:
33
- return Envelope;
34
- case AmpEnvelope.moduleName:
35
- return AmpEnvelope;
36
- case FreqEnvelope.moduleName:
37
- return FreqEnvelope;
38
- case Filter.moduleName:
39
- return Filter;
40
- case Volume.moduleName:
41
- return Volume;
42
- case Master.moduleName:
43
- return Master;
44
- case VoiceScheduler.moduleName:
45
- return VoiceScheduler;
46
- case MidiSelector.moduleName:
47
- return MidiSelector;
48
- case VirtualMidi.moduleName:
49
- return VirtualMidi;
50
- case Reverb.moduleName:
51
- return Reverb;
52
- case Delay.moduleName:
53
- return Delay;
54
- case Distortion.moduleName:
55
- return Distortion;
56
- case BitCrusher.moduleName:
57
- return BitCrusher;
58
- case Sequencer.moduleName:
59
- return Sequencer;
60
- case DataSequencer.moduleName:
61
- return DataSequencer;
62
- default:
63
- throw Error(`Unknown module type ${type}`);
64
- }
65
- }
66
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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;AACtC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,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,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAI3D,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,KAAK,SAAS,CAAC,UAAU;YACvB,OAAO,SAAS,CAAC;QACnB,KAAK,aAAa,CAAC,UAAU;YAC3B,OAAO,aAAa,CAAC;QACvB;YACE,MAAM,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;KAC9C;AACH,CAAC"}
@@ -1,146 +0,0 @@
1
- const frequencyTable = {
2
- C0: 16.35,
3
- "C#0": 17.32,
4
- Db0: 17.32,
5
- D0: 18.35,
6
- "D#0": 19.45,
7
- Eb0: 19.45,
8
- E0: 20.6,
9
- F0: 21.83,
10
- "F#0": 23.12,
11
- Gb0: 23.12,
12
- G0: 24.5,
13
- "G#0": 25.96,
14
- Ab0: 25.96,
15
- A0: 27.5,
16
- "A#0": 29.14,
17
- Bb0: 29.14,
18
- B0: 30.87,
19
- C1: 32.7,
20
- "C#1": 34.65,
21
- Db1: 34.65,
22
- D1: 36.71,
23
- "D#1": 38.89,
24
- Eb1: 38.89,
25
- E1: 41.2,
26
- F1: 43.65,
27
- "F#1": 46.25,
28
- Gb1: 46.25,
29
- G1: 49.0,
30
- "G#1": 51.91,
31
- Ab1: 51.91,
32
- A1: 55.0,
33
- "A#1": 58.27,
34
- Bb1: 58.27,
35
- B1: 61.74,
36
- C2: 65.41,
37
- "C#2": 69.3,
38
- Db2: 69.3,
39
- D2: 73.42,
40
- "D#2": 77.78,
41
- Eb2: 77.78,
42
- E2: 82.41,
43
- F2: 87.31,
44
- "F#2": 92.5,
45
- Gb2: 92.5,
46
- G2: 98.0,
47
- "G#2": 103.83,
48
- Ab2: 103.83,
49
- A2: 110.0,
50
- "A#2": 116.54,
51
- Bb2: 116.54,
52
- B2: 123.47,
53
- C3: 130.81,
54
- "C#3": 138.59,
55
- Db3: 138.59,
56
- D3: 146.83,
57
- "D#3": 155.56,
58
- Eb3: 155.56,
59
- E3: 164.81,
60
- F3: 174.61,
61
- "F#3": 185.0,
62
- Gb3: 185.0,
63
- G3: 196.0,
64
- "G#3": 207.65,
65
- Ab3: 207.65,
66
- A3: 220.0,
67
- "A#3": 233.08,
68
- Bb3: 233.08,
69
- B3: 246.94,
70
- C4: 261.63,
71
- "C#4": 277.18,
72
- Db4: 277.18,
73
- D4: 293.66,
74
- "D#4": 311.13,
75
- Eb4: 311.13,
76
- E4: 329.63,
77
- F4: 349.23,
78
- "F#4": 369.99,
79
- Gb4: 369.99,
80
- G4: 392.0,
81
- "G#4": 415.3,
82
- Ab4: 415.3,
83
- A4: 440.0,
84
- "A#4": 466.16,
85
- Bb4: 466.16,
86
- B4: 493.88,
87
- C5: 523.25,
88
- "C#5": 554.37,
89
- Db5: 554.37,
90
- D5: 587.33,
91
- "D#5": 622.25,
92
- Eb5: 622.25,
93
- E5: 659.26,
94
- F5: 698.46,
95
- "F#5": 739.99,
96
- Gb5: 739.99,
97
- G5: 783.99,
98
- "G#5": 830.61,
99
- Ab5: 830.61,
100
- A5: 880.0,
101
- "A#5": 932.33,
102
- Bb5: 932.33,
103
- B5: 987.77,
104
- C6: 1046.5,
105
- "C#6": 1108.73,
106
- Db6: 1108.73,
107
- D6: 1174.66,
108
- "D#6": 1244.51,
109
- Eb6: 1244.51,
110
- E6: 1318.51,
111
- F6: 1396.91,
112
- "F#6": 1479.98,
113
- Gb6: 1479.98,
114
- G6: 1567.98,
115
- "G#6": 1661.22,
116
- Ab6: 1661.22,
117
- A6: 1760.0,
118
- "A#6": 1864.66,
119
- Bb6: 1864.66,
120
- B6: 1975.53,
121
- C7: 2093.0,
122
- "C#7": 2217.46,
123
- Db7: 2217.46,
124
- D7: 2349.32,
125
- "D#7": 2489.02,
126
- Eb7: 2489.02,
127
- E7: 2637.02,
128
- F7: 2793.83,
129
- "F#7": 2959.96,
130
- Gb7: 2959.96,
131
- G7: 3135.96,
132
- "G#7": 3322.44,
133
- Ab7: 3322.44,
134
- A7: 3520.0,
135
- "A#7": 3729.31,
136
- Bb7: 3729.31,
137
- B7: 3951.07,
138
- C8: 4186.01,
139
- "C#8": 4434.92,
140
- Db8: 4434.92,
141
- D8: 4698.64,
142
- "D#8": 4978.03,
143
- Eb8: 4978.03,
144
- };
145
- export default frequencyTable;
146
- //# sourceMappingURL=frequencyTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frequencyTable.js","sourceRoot":"","sources":["../../src/Note/frequencyTable.ts"],"names":[],"mappings":"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"}
@@ -1,81 +0,0 @@
1
- import frequencyTable from "./frequencyTable";
2
- const Notes = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"];
3
- const NotesLength = Notes.length;
4
- export default class Note {
5
- static _notes;
6
- name;
7
- octave;
8
- velocity = 1;
9
- duration;
10
- frequency;
11
- constructor(eventOrString) {
12
- if (typeof eventOrString === "number") {
13
- this.fromFrequency(eventOrString);
14
- }
15
- else if (typeof eventOrString === "string") {
16
- this.fromString(eventOrString);
17
- }
18
- else if (eventOrString instanceof MIDIMessageEvent) {
19
- this.fromEvent(eventOrString);
20
- }
21
- else {
22
- this.fromProps(eventOrString);
23
- }
24
- }
25
- static notes(octave = 3) {
26
- return Notes.map((note) => new Note(`${note}${octave}`));
27
- }
28
- get isSemi() {
29
- return this.name.slice(-1) === "#";
30
- }
31
- get fullName() {
32
- return `${this.name}${this.octave}`;
33
- }
34
- adjustFrequency(range = 0, coarse = 0) {
35
- if (this.frequency)
36
- return this.frequency;
37
- let newOctave = this.octave + range;
38
- let coarseIndex = Notes.indexOf(this.name) + coarse;
39
- let nameIndex = coarseIndex;
40
- if (coarseIndex >= NotesLength) {
41
- newOctave++;
42
- nameIndex = coarseIndex % NotesLength;
43
- }
44
- else if (coarseIndex < 0) {
45
- newOctave--;
46
- nameIndex = NotesLength + nameIndex;
47
- }
48
- const newName = Notes[nameIndex];
49
- return frequencyTable[`${newName}${newOctave}`];
50
- }
51
- valueOf() {
52
- return this.fullName;
53
- }
54
- serialize() {
55
- return {
56
- note: this.fullName,
57
- frequency: this.frequency,
58
- velocity: this.velocity,
59
- duration: this.duration,
60
- };
61
- }
62
- fromFrequency(frequency) {
63
- this.frequency = frequency;
64
- }
65
- fromString(string) {
66
- const matches = string.match(/(\w#?)(\d)?/) || [];
67
- this.name = matches[1];
68
- this.octave = matches[2] ? parseInt(matches[2]) : 1;
69
- }
70
- fromEvent(event) {
71
- this.name = Notes[event.data[1] % 12];
72
- this.octave = Math.floor(event.data[1] / 12) - 2;
73
- }
74
- fromProps(props) {
75
- Object.assign(this, props);
76
- if (!props.note)
77
- throw Error("note props is mandatory");
78
- this.fromString(props.note);
79
- }
80
- }
81
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Note/index.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export { default } from "./Engine";
2
- export { default as MidiDevice } from "./MidiDevice";
3
- export { default as MidiDeviceManager } from "./MidiDeviceManager";
4
- export { default as Note } from "./Note";
5
- export type { INote } from "./Note";
6
- export type { MidiDeviceInterface } from "./MidiDevice";
7
- export type { ModuleInterface, AudioModule, ISequence, IDataSequence, } from "./Module";
8
- export type { SerializeInterface as IOProps } from "./Module/IO";
package/build/index.js DELETED
@@ -1,5 +0,0 @@
1
- export { default } from "./Engine";
2
- export { default as MidiDevice } from "./MidiDevice";
3
- export { default as MidiDeviceManager } from "./MidiDeviceManager";
4
- export { default as Note } from "./Note";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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/build/routes.js DELETED
@@ -1,31 +0,0 @@
1
- import { v4 as uuidv4 } from "uuid";
2
- import Engine from "./";
3
- export function createRoute(props) {
4
- const id = uuidv4();
5
- return { ...props, id };
6
- }
7
- export function applyRoutes(routes) {
8
- Object.values(Engine.modules).forEach((m) => m.unplugAll());
9
- const succesedConnections = routes
10
- .sort((r1, r2) => {
11
- if (r1.outputName === "number of voices")
12
- return -1;
13
- if (r2.outputName === "number of voices")
14
- return 1;
15
- return 0;
16
- })
17
- .map((route) => {
18
- const { sourceId, outputName, destinationId, inputName } = route;
19
- const source = Engine.findById(sourceId);
20
- const destination = Engine.findById(destinationId);
21
- source.plug(destination, outputName, inputName);
22
- return true;
23
- });
24
- if (succesedConnections.every((v) => v)) {
25
- console.log("######## Routes succesfully applied");
26
- }
27
- else {
28
- console.log("######## Routes partialy applied");
29
- }
30
- }
31
- //# sourceMappingURL=routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,MAAM,MAAM,IAAI,CAAC;AAaxB,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAEpB,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAwB;IAClD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAE5D,MAAM,mBAAmB,GAAG,MAAM;SAC/B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,EAAE,CAAC,UAAU,KAAK,kBAAkB;YAAE,OAAO,CAAC,CAAC,CAAC;QACpD,IAAI,EAAE,CAAC,UAAU,KAAK,kBAAkB;YAAE,OAAO,CAAC,CAAC;QAEnD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAEjE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAEnD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEL,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;KACpD;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;KACjD;AACH,CAAC"}
package/jest.config.js DELETED
@@ -1,19 +0,0 @@
1
- /** @type {import('ts-jest').JestConfigWithTsJest} */
2
- module.exports = {
3
- preset: "ts-jest",
4
- testEnvironment: "node",
5
- rootDir: "test",
6
- moduleNameMapper: {
7
- "^src/(.*)$": "<rootDir>/../src/$1",
8
- },
9
- transform: {
10
- // '^.+\\.[tj]sx?$' to process js/ts with `ts-jest`
11
- // '^.+\\.m?[tj]sx?$' to process js/ts/mjs/mts with `ts-jest`
12
- "^.+\\.tsx?$": [
13
- "ts-jest",
14
- {
15
- diagnostics: false,
16
- },
17
- ],
18
- },
19
- };