@grame/faustwasm 0.0.25

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 (111) hide show
  1. package/README.md +181 -0
  2. package/assets/standalone/faust-ui/index.css +414 -0
  3. package/assets/standalone/faust-ui/index.css.map +1 -0
  4. package/assets/standalone/faust-ui/index.d.ts +1 -0
  5. package/assets/standalone/faust-ui/index.js +3478 -0
  6. package/assets/standalone/faust-ui/index.js.map +1 -0
  7. package/assets/standalone/faustwasm/index.d.ts +1252 -0
  8. package/assets/standalone/faustwasm/index.js +3772 -0
  9. package/assets/standalone/faustwasm/index.js.map +7 -0
  10. package/assets/standalone/index.html +73 -0
  11. package/assets/standalone/index.js +198 -0
  12. package/assets/standalone/types.d.ts +9 -0
  13. package/dist/cjs/index.d.ts +1252 -0
  14. package/dist/cjs/index.js +3752 -0
  15. package/dist/cjs/index.js.map +7 -0
  16. package/dist/cjs-bundle/index.d.ts +1259 -0
  17. package/dist/cjs-bundle/index.js +11507 -0
  18. package/dist/cjs-bundle/index.js.map +7 -0
  19. package/dist/esm/index.d.ts +1252 -0
  20. package/dist/esm/index.js +3772 -0
  21. package/dist/esm/index.js.map +7 -0
  22. package/dist/esm-bundle/index.d.ts +1259 -0
  23. package/dist/esm-bundle/index.js +11495 -0
  24. package/dist/esm-bundle/index.js.map +7 -0
  25. package/fileutils.js +40 -0
  26. package/libfaust-wasm/libfaust-wasm.d.cts +3 -0
  27. package/libfaust-wasm/libfaust-wasm.d.ts +3 -0
  28. package/libfaust-wasm/libfaust-wasm.data +0 -0
  29. package/libfaust-wasm/libfaust-wasm.data.d.ts +2 -0
  30. package/libfaust-wasm/libfaust-wasm.js +21 -0
  31. package/libfaust-wasm/libfaust-wasm.wasm +0 -0
  32. package/libfaust-wasm/libfaust-wasm.wasm.d.ts +2 -0
  33. package/library.md +91 -0
  34. package/package.json +43 -0
  35. package/postbuild-bundled.js +11 -0
  36. package/postbuild.js +63 -0
  37. package/prebuild-bundled.js +11 -0
  38. package/rsrc/overview.png +0 -0
  39. package/rsrc/overview.xlsx +0 -0
  40. package/scripts/faust2sndfile.js +43 -0
  41. package/scripts/faust2svg.js +17 -0
  42. package/scripts/faust2wasm.js +29 -0
  43. package/src/FaustAudioWorkletNode.ts +264 -0
  44. package/src/FaustAudioWorkletProcessor.ts +273 -0
  45. package/src/FaustCompiler.ts +252 -0
  46. package/src/FaustDspGenerator.ts +498 -0
  47. package/src/FaustDspInstance.ts +141 -0
  48. package/src/FaustFFTAudioWorkletProcessor.ts +554 -0
  49. package/src/FaustOfflineProcessor.ts +141 -0
  50. package/src/FaustScriptProcessorNode.ts +80 -0
  51. package/src/FaustSvgDiagrams.ts +37 -0
  52. package/src/FaustWasmInstantiator.ts +202 -0
  53. package/src/FaustWebAudioDsp.ts +1060 -0
  54. package/src/LibFaust.ts +57 -0
  55. package/src/WavDecoder.ts +207 -0
  56. package/src/WavEncoder.ts +204 -0
  57. package/src/copyWebStandaloneAssets.d.ts +3 -0
  58. package/src/copyWebStandaloneAssets.js +20 -0
  59. package/src/exports-bundle.ts +5 -0
  60. package/src/exports.ts +24 -0
  61. package/src/faust2svgFiles.d.ts +3 -0
  62. package/src/faust2svgFiles.js +43 -0
  63. package/src/faust2wasmFiles.d.ts +5 -0
  64. package/src/faust2wasmFiles.js +93 -0
  65. package/src/faust2wavFiles.d.ts +3 -0
  66. package/src/faust2wavFiles.js +58 -0
  67. package/src/index-bundle-iife.ts +7 -0
  68. package/src/index-bundle.ts +5 -0
  69. package/src/index.ts +5 -0
  70. package/src/instantiateFaustModule.ts +32 -0
  71. package/src/instantiateFaustModuleFromFile.ts +57 -0
  72. package/src/types.ts +234 -0
  73. package/test/clarinet.dsp +1 -0
  74. package/test/faustlive-wasm/faust-ui/index.css +414 -0
  75. package/test/faustlive-wasm/faust-ui/index.css.map +1 -0
  76. package/test/faustlive-wasm/faust-ui/index.d.ts +1 -0
  77. package/test/faustlive-wasm/faust-ui/index.js +3478 -0
  78. package/test/faustlive-wasm/faust-ui/index.js.map +1 -0
  79. package/test/faustlive-wasm/faustwasm/index.d.ts +1252 -0
  80. package/test/faustlive-wasm/faustwasm/index.js +3772 -0
  81. package/test/faustlive-wasm/faustwasm/index.js.map +7 -0
  82. package/test/faustlive-wasm/index.css +97 -0
  83. package/test/faustlive-wasm/index.html +130 -0
  84. package/test/faustlive-wasm/index.js +638 -0
  85. package/test/guitar.dsp +1 -0
  86. package/test/guitar1.dsp +2 -0
  87. package/test/libfaust-in-worklet/index.html +13 -0
  88. package/test/libfaust-in-worklet/index.js +40 -0
  89. package/test/mono.dsp +8 -0
  90. package/test/node/test.js +17 -0
  91. package/test/noise.dsp +3 -0
  92. package/test/organ.dsp +5 -0
  93. package/test/organ1.dsp +6 -0
  94. package/test/osc.dsp +4 -0
  95. package/test/osc2.dsp +5 -0
  96. package/test/osc3.dsp +4 -0
  97. package/test/p-dj.dsp +4 -0
  98. package/test/poly.dsp +13 -0
  99. package/test/rev.dsp +2 -0
  100. package/test/t1.dsp +1 -0
  101. package/test/web/fft.html +87 -0
  102. package/test/web/fft1.html +88 -0
  103. package/test/web/fft2.html +114 -0
  104. package/test/web/fftw.js +1907 -0
  105. package/test/web/index.html +12 -0
  106. package/test/web/index.js +235 -0
  107. package/test/web/kissfft.js +904 -0
  108. package/test/web/mono.html +46 -0
  109. package/test/web/poly-key.html +62 -0
  110. package/test/web/poly.html +59 -0
  111. package/tsconfig.json +22 -0
package/README.md ADDED
@@ -0,0 +1,181 @@
1
+ # FaustWasm
2
+
3
+ WebAssembly version of [Faust Compiler](https://github.com/grame-cncm/faust) for [Node.js](https://nodejs.org) and web browsers, built with [Emscripten](https://emscripten.org/) 3.1.31
4
+
5
+ ## Usage
6
+
7
+ Please use a stable version of [Node.js](https://nodejs.org) 16+ to work with this project.
8
+
9
+ ### Use the command line interface
10
+
11
+ Clone and get into this project:
12
+ ```bash
13
+ git clone https://github.com/grame-cncm/faustwasm.git
14
+ cd faustwasm
15
+ ```
16
+
17
+ Build the files:
18
+ ```bash
19
+ npm run build
20
+ ```
21
+
22
+ #### Generate WebAssembly version of a Faust DSP
23
+ For example:
24
+ ```bash
25
+ rm -rf test/out # make sure you are under the faustwasm directory.
26
+ node scripts/faust2wasm.js test/mono.dsp test/out
27
+ ```
28
+ or
29
+ ```bash
30
+ rm -rf test/out # make sure you are under the faustwasm directory.
31
+ node scripts/faust2wasm.js test/poly.dsp test/out -poly
32
+ ```
33
+ You can create standalone DSP on a web page using the same command line
34
+ ```bash
35
+ rm -rf test/out # make sure you are under the faustwasm directory.
36
+ node scripts/faust2wasm.js test/rev.dsp test/out -standalone
37
+ ```
38
+
39
+ #### Generate SVG Diagrams of a Faust DSP
40
+ For example:
41
+ ```bash
42
+ rm -rf test/out # make sure you are under the faustwasm directory.
43
+ node scripts/faust2svg.js test/mono.dsp test/out
44
+ ```
45
+ The main diagram should be in `test/out/process.svg`.
46
+
47
+ #### Generate or process audio files
48
+ Options:
49
+ - `-bs <num>` to setup the rendering buffer size in frames (default: 64)
50
+ - `-bd 16|24|32` to setup the output file bit-depth (default: 16)
51
+ - `-c <samples>` to setup the output file length in frames, when -ct is not used (default: SR*5)
52
+ - `-in <inputWav.wav>` specify an input file to process
53
+ - `-sr <num>` to setup the output file sample rate (default: 44100)
54
+ See this help:
55
+
56
+ ```bash
57
+ node scripts/faust2sndfile.js -h
58
+ ```
59
+
60
+ For example:
61
+ ```bash
62
+ rm -rf test/out # make sure you are under the faustwasm directory.
63
+ mkdir test/out
64
+ node scripts/faust2sndfile.js test/p-dj.dsp test/out/p-dj.wav -c 192000 -sr 48000 -bd 24
65
+ ```
66
+ Now the `test/out/p-dj.wav` should be generated.
67
+
68
+ ```bash
69
+ node scripts/faust2sndfile.js test/rev.dsp test/out/p-dj-rev.wav -c 192000 -sr 48000 -bd 24 -in test/out/p-dj.wav
70
+ ```
71
+
72
+ ### Use the JavaScript Module
73
+
74
+ ```bash
75
+ npm i -D @shren/faustwasm
76
+ ```
77
+
78
+ In JavaScript:
79
+ ```JavaScript
80
+ const FaustWasm = require("@shren/faustwasm");
81
+ const path = require("path");
82
+ const fs = require("fs");
83
+
84
+ const {
85
+ instantiateFaustModuleFromFile,
86
+ LibFaust,
87
+ WavEncoder,
88
+ FaustMonoDspGenerator,
89
+ FaustCompiler,
90
+ FaustSvgDiagrams
91
+ } = FaustWasm;
92
+
93
+ (async () => {
94
+ const faustModulePath = path.join(__dirname, "../node_modules/@shren/faustwasm/ libfaust-wasm/libfaust-wasm.js");
95
+
96
+ // initialize the libfaust wasm
97
+ const faustModule = await instantiateFaustModuleFromFile(faustModulePath);
98
+
99
+ // Get the Faust compiler
100
+ const libFaust = new LibFaust(faustModule);
101
+ console.log(libFaust.version());
102
+ const compiler = new FaustCompiler(libFaust);
103
+ const generator = new FaustMonoDspGenerator();
104
+ const sampleRate = 48000;
105
+ const name = "Djembe"
106
+ const argv = ["-I", "libraries/"];
107
+ const code = `
108
+ import("stdfaust.lib");
109
+ process = ba.pulsen(1, 10000) : pm.djembe(60, 0.3, 0.4, 1);
110
+ `;
111
+ // Compile the DSP
112
+ await generator.compile(compiler, name, code, argv.join(" "));
113
+ const processor = await generator.createOfflineProcessor(sampleRate, 1024);
114
+
115
+ // Generate SVG diagrams.
116
+ const svgDiagrams = new FaustSvgDiagrams(compiler);
117
+ const svgs = svgDiagrams.from(name, code, argv.join(" "));
118
+ console.log(Object.keys(svgs));
119
+
120
+ const out = processor.render(null, 192000);
121
+ const wav = WavEncoder.encode(out, { sampleRate, bitDepth: 24 });
122
+
123
+ // The wav file is generated
124
+ fs.writeFileSync(`${__dirname}/out.wav`, new Uint8Array(wav));
125
+ })();
126
+ ```
127
+
128
+ ### Use in a web browser
129
+ ```JavaScript
130
+
131
+ (async () => {
132
+ const {
133
+ instantiateFaustModuleFromFile,
134
+ LibFaust,
135
+ WavEncoder,
136
+ FaustMonoDspGenerator,
137
+ FaustCompiler,
138
+ FaustSvgDiagrams
139
+ } = await import("../node_modules/@shren/faustwasm/dist/esm/index.js");
140
+
141
+ // initialize the libfaust wasm
142
+ const faustModule = await instantiateFaustModuleFromFile("../node_modules/@shren/faustwasm/libfaust-wasm/libfaust-wasm.js");
143
+
144
+ // Get the Faust compiler
145
+ const libFaust = new LibFaust(faustModule);
146
+ window.libFaust = libFaust;
147
+ console.log(libFaust.version());
148
+ const compiler = new FaustCompiler(libFaust);
149
+ const generator = new FaustMonoDspGenerator();
150
+ const sampleRate = 48000;
151
+ const name = "Djembe"
152
+ const argv = ["-I", "libraries/"];
153
+ const code = `
154
+ import("stdfaust.lib");
155
+ process = ba.pulsen(1, 10000) : pm.djembe(60, 0.3, 0.4, 1);
156
+ `;
157
+ // Compile the DSP
158
+ await generator.compile(compiler, name, code, argv.join(" "));
159
+ const processor = await generator.createOfflineProcessor(sampleRate, 1024);
160
+
161
+ // Generate SVG diagrams.
162
+ const svgDiagrams = new FaustSvgDiagrams(compiler);
163
+ const svgs = svgDiagrams.from(name, code, argv.join(" "));
164
+ console.log(Object.keys(svgs));
165
+
166
+ const out = processor.render(null, 192000);
167
+ const wav = WavEncoder.encode(out, { sampleRate, bitDepth: 24 });
168
+
169
+ // The wav file is generated
170
+ const blob = new Blob([wav], { type: "audio/wav" });
171
+ const player = document.createElement("audio");
172
+ player.controls = true;
173
+ player.src = URL.createObjectURL(blob);
174
+ document.body.appendChild(player);
175
+ const svg = document.createElement("div");
176
+ svg.innerHTML = svgs["process.svg"];
177
+ document.body.appendChild(svg);
178
+ })();
179
+ ```
180
+
181
+ The implementation description can be [read here](library.md).
@@ -0,0 +1,414 @@
1
+ /*!*******************************************************************************************************************!*\
2
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Base.scss ***!
3
+ \*******************************************************************************************************************/
4
+ .faust-ui-component {
5
+ display: flex;
6
+ position: absolute;
7
+ flex-direction: column;
8
+ overflow: hidden;
9
+ }
10
+ .faust-ui-component:focus {
11
+ outline: none;
12
+ }
13
+ .faust-ui-component > .faust-ui-component-label {
14
+ position: relative;
15
+ margin-top: 4px;
16
+ width: 100%;
17
+ user-select: none;
18
+ }
19
+ .faust-ui-component > .faust-ui-component-label > canvas {
20
+ position: relative;
21
+ display: block;
22
+ max-width: 100%;
23
+ max-height: 100%;
24
+ }
25
+ .faust-ui-component input {
26
+ box-shadow: none;
27
+ }
28
+ /*!**********************************************************************************************************************!*\
29
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/VSlider.scss ***!
30
+ \**********************************************************************************************************************/
31
+ .faust-ui-component.faust-ui-component-vslider {
32
+ align-items: center;
33
+ }
34
+ .faust-ui-component.faust-ui-component-vslider > .faust-ui-component-label {
35
+ flex: 0 0 auto;
36
+ }
37
+ .faust-ui-component.faust-ui-component-vslider > .faust-ui-component-vslider-flexdiv {
38
+ position: relative;
39
+ display: flex;
40
+ flex-direction: column;
41
+ flex: 1 1 auto;
42
+ width: 100%;
43
+ height: auto;
44
+ }
45
+ .faust-ui-component.faust-ui-component-vslider > .faust-ui-component-vslider-flexdiv > .faust-ui-component-vslider-canvasdiv {
46
+ position: relative;
47
+ display: block;
48
+ flex: 1 1 auto;
49
+ width: 100%;
50
+ }
51
+ .faust-ui-component.faust-ui-component-vslider > .faust-ui-component-vslider-flexdiv > .faust-ui-component-vslider-canvasdiv > canvas {
52
+ position: absolute;
53
+ display: block;
54
+ height: 100%;
55
+ width: 100%;
56
+ }
57
+ .faust-ui-component.faust-ui-component-vslider > .faust-ui-component-vslider-flexdiv input {
58
+ position: relative;
59
+ display: block;
60
+ flex: 0 1 auto;
61
+ text-align: center;
62
+ background-color: rgba(255, 255, 255, 0.25);
63
+ margin: 5px auto auto auto;
64
+ border-width: 0px;
65
+ border-radius: 4px;
66
+ height: 5%;
67
+ max-width: calc(100% - 8px);
68
+ padding: 2px 4px;
69
+ -moz-appearance: textfield;
70
+ }
71
+ .faust-ui-component.faust-ui-component-vslider > .faust-ui-component-vslider-flexdiv input::-webkit-inner-spin-button, .faust-ui-component.faust-ui-component-vslider > .faust-ui-component-vslider-flexdiv input::-webkit-outer-spin-button {
72
+ -webkit-appearance: none;
73
+ margin: 0;
74
+ }
75
+ /*!**********************************************************************************************************************!*\
76
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/HSlider.scss ***!
77
+ \**********************************************************************************************************************/
78
+ .faust-ui-component.faust-ui-component-hslider > .faust-ui-component-label {
79
+ flex: 0 0 auto;
80
+ }
81
+ .faust-ui-component.faust-ui-component-hslider > .faust-ui-component-hslider-flexdiv {
82
+ position: relative;
83
+ display: flex;
84
+ flex-direction: row-reverse;
85
+ flex: 1 1 auto;
86
+ width: 100%;
87
+ height: auto;
88
+ }
89
+ .faust-ui-component.faust-ui-component-hslider > .faust-ui-component-hslider-flexdiv > .faust-ui-component-hslider-canvasdiv {
90
+ position: relative;
91
+ display: block;
92
+ flex: 1 1 auto;
93
+ height: 100%;
94
+ margin: auto;
95
+ }
96
+ .faust-ui-component.faust-ui-component-hslider > .faust-ui-component-hslider-flexdiv > .faust-ui-component-hslider-canvasdiv > canvas {
97
+ position: absolute;
98
+ display: block;
99
+ height: 100%;
100
+ width: 100%;
101
+ }
102
+ .faust-ui-component.faust-ui-component-hslider > .faust-ui-component-hslider-flexdiv > input {
103
+ position: relative;
104
+ display: block;
105
+ flex: 0 1 auto;
106
+ text-align: center;
107
+ background-color: rgba(255, 255, 255, 0.25);
108
+ margin: auto 5px auto auto;
109
+ border-width: 0px;
110
+ border-radius: 4px;
111
+ width: calc(20% - 13px);
112
+ padding: 2px 4px;
113
+ -moz-appearance: textfield;
114
+ }
115
+ .faust-ui-component.faust-ui-component-hslider > .faust-ui-component-hslider-flexdiv > input::-webkit-inner-spin-button, .faust-ui-component.faust-ui-component-hslider > .faust-ui-component-hslider-flexdiv > input::-webkit-outer-spin-button {
116
+ -webkit-appearance: none;
117
+ margin: 0;
118
+ }
119
+ /*!*********************************************************************************************************************!*\
120
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Nentry.scss ***!
121
+ \*********************************************************************************************************************/
122
+ .faust-ui-component.faust-ui-component-nentry {
123
+ align-items: center;
124
+ }
125
+ .faust-ui-component.faust-ui-component-nentry input {
126
+ margin: 0px;
127
+ text-align: center;
128
+ border-width: 1px;
129
+ border-radius: 4px;
130
+ padding: 2px 4px;
131
+ width: calc(100% - 8px);
132
+ }
133
+ .faust-ui-component.faust-ui-component-nentry input::-webkit-inner-spin-button, .faust-ui-component.faust-ui-component-nentry input::-webkit-outer-spin-button {
134
+ opacity: 1;
135
+ }
136
+ /*!*********************************************************************************************************************!*\
137
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Button.scss ***!
138
+ \*********************************************************************************************************************/
139
+ .faust-ui-component.faust-ui-component-button > div {
140
+ display: flex;
141
+ position: relative;
142
+ cursor: pointer;
143
+ border-width: 1px;
144
+ text-align: center;
145
+ border-radius: 4px;
146
+ flex: 1 0 auto;
147
+ border-style: solid;
148
+ }
149
+ .faust-ui-component.faust-ui-component-button > div > span {
150
+ user-select: none;
151
+ margin: auto;
152
+ }
153
+ /*!***********************************************************************************************************************!*\
154
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Checkbox.scss ***!
155
+ \***********************************************************************************************************************/
156
+ .faust-ui-component.faust-ui-component-checkbox > div {
157
+ display: flex;
158
+ position: relative;
159
+ cursor: pointer;
160
+ border-width: 1px;
161
+ text-align: center;
162
+ border-radius: 1px;
163
+ flex: 1 0 auto;
164
+ border-style: solid;
165
+ }
166
+ .faust-ui-component.faust-ui-component-checkbox > div > span {
167
+ margin: auto;
168
+ user-select: none;
169
+ }
170
+ /*!*******************************************************************************************************************!*\
171
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Knob.scss ***!
172
+ \*******************************************************************************************************************/
173
+ .faust-ui-component.faust-ui-component-knob {
174
+ align-items: center;
175
+ }
176
+ .faust-ui-component.faust-ui-component-knob > canvas {
177
+ position: relative;
178
+ display: block;
179
+ flex: 1 1 auto;
180
+ min-height: 50%;
181
+ width: 100%;
182
+ }
183
+ .faust-ui-component.faust-ui-component-knob > input {
184
+ position: relative;
185
+ display: block;
186
+ flex: 0 1 auto;
187
+ text-align: center;
188
+ background-color: rgba(255, 255, 255, 0.25);
189
+ margin: 0px;
190
+ border-width: 0px;
191
+ border-radius: 4px;
192
+ max-width: calc(100% - 8px);
193
+ padding: 2px 4px;
194
+ -moz-appearance: textfield;
195
+ }
196
+ .faust-ui-component.faust-ui-component-knob > input::-webkit-inner-spin-button, .faust-ui-component.faust-ui-component-knob > input::-webkit-outer-spin-button {
197
+ -webkit-appearance: none;
198
+ margin: 0;
199
+ }
200
+ /*!*******************************************************************************************************************!*\
201
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Menu.scss ***!
202
+ \*******************************************************************************************************************/
203
+ .faust-ui-component.faust-ui-component-menu {
204
+ align-items: center;
205
+ }
206
+ .faust-ui-component.faust-ui-component-menu > select {
207
+ margin: 0px;
208
+ text-align: center;
209
+ border-width: 1px;
210
+ border-radius: 4px;
211
+ padding: 2px 4px;
212
+ width: calc(100% - 8px);
213
+ }
214
+ /*!********************************************************************************************************************!*\
215
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Radio.scss ***!
216
+ \********************************************************************************************************************/
217
+ .faust-ui-component.faust-ui-component-radio {
218
+ align-items: center;
219
+ }
220
+ .faust-ui-component.faust-ui-component-radio > .faust-ui-component-label {
221
+ flex: 0 0 auto;
222
+ margin-top: auto;
223
+ }
224
+ .faust-ui-component.faust-ui-component-radio > .faust-ui-component-radio-group {
225
+ flex: 0 0 auto;
226
+ margin-bottom: auto;
227
+ border-width: 1px;
228
+ border-radius: 4px;
229
+ padding: 2px 4px;
230
+ width: calc(100% - 8px);
231
+ }
232
+ .faust-ui-component.faust-ui-component-radio > .faust-ui-component-radio-group > div {
233
+ text-overflow: ellipsis;
234
+ white-space: nowrap;
235
+ overflow: hidden;
236
+ }
237
+ /*!******************************************************************************************************************!*\
238
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Led.scss ***!
239
+ \******************************************************************************************************************/
240
+ .faust-ui-component.faust-ui-component-led {
241
+ align-items: center;
242
+ }
243
+ .faust-ui-component.faust-ui-component-led > .faust-ui-component-label {
244
+ flex: 0 0 auto;
245
+ }
246
+ .faust-ui-component.faust-ui-component-led > .faust-ui-component-led-canvasdiv {
247
+ position: relative;
248
+ display: block;
249
+ flex: 1 1 auto;
250
+ width: 100%;
251
+ }
252
+ .faust-ui-component.faust-ui-component-led > .faust-ui-component-led-canvasdiv > canvas {
253
+ position: absolute;
254
+ display: block;
255
+ height: 100%;
256
+ width: 100%;
257
+ }
258
+ /*!************************************************************************************************************************!*\
259
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Numerical.scss ***!
260
+ \************************************************************************************************************************/
261
+ .faust-ui-component.faust-ui-component-numerical {
262
+ align-items: center;
263
+ }
264
+ .faust-ui-component.faust-ui-component-numerical > input {
265
+ position: relative;
266
+ display: block;
267
+ flex: 0 1 auto;
268
+ text-align: center;
269
+ background-color: rgba(255, 255, 255, 0.25);
270
+ margin: auto;
271
+ border-width: 0px;
272
+ border-radius: 4px;
273
+ width: calc(100% - 8px);
274
+ padding: 2px 4px;
275
+ }
276
+ /*!************************************************************************************************************************!*\
277
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/VBargraph.scss ***!
278
+ \************************************************************************************************************************/
279
+ .faust-ui-component.faust-ui-component-vbargraph {
280
+ align-items: center;
281
+ }
282
+ .faust-ui-component.faust-ui-component-vbargraph > .faust-ui-component-label {
283
+ flex: 0 0 auto;
284
+ }
285
+ .faust-ui-component.faust-ui-component-vbargraph > .faust-ui-component-vbargraph-flexdiv {
286
+ position: relative;
287
+ display: flex;
288
+ flex-direction: column;
289
+ flex: 1 1 auto;
290
+ width: 100%;
291
+ height: inherit;
292
+ }
293
+ .faust-ui-component.faust-ui-component-vbargraph > .faust-ui-component-vbargraph-flexdiv > .faust-ui-component-vbargraph-canvasdiv {
294
+ position: relative;
295
+ display: block;
296
+ flex: 1 1 auto;
297
+ width: 100%;
298
+ }
299
+ .faust-ui-component.faust-ui-component-vbargraph > .faust-ui-component-vbargraph-flexdiv > .faust-ui-component-vbargraph-canvasdiv > canvas {
300
+ position: absolute;
301
+ display: block;
302
+ height: 100%;
303
+ width: 100%;
304
+ }
305
+ .faust-ui-component.faust-ui-component-vbargraph > .faust-ui-component-vbargraph-flexdiv > input {
306
+ position: relative;
307
+ display: block;
308
+ flex: 0 1 auto;
309
+ text-align: center;
310
+ background-color: rgba(255, 255, 255, 0.25);
311
+ margin: 5px auto auto auto;
312
+ border-width: 0px;
313
+ border-radius: 4px;
314
+ height: 5%;
315
+ width: calc(100% - 8px);
316
+ padding: 2px 4px;
317
+ }
318
+ /*!************************************************************************************************************************!*\
319
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/HBargraph.scss ***!
320
+ \************************************************************************************************************************/
321
+ .faust-ui-component.faust-ui-component-hbargraph > .faust-ui-component-label {
322
+ flex: 0 0 auto;
323
+ }
324
+ .faust-ui-component.faust-ui-component-hbargraph > .faust-ui-component-hbargraph-flexdiv {
325
+ position: relative;
326
+ display: flex;
327
+ flex-direction: row-reverse;
328
+ flex: 1 1 auto;
329
+ width: 100%;
330
+ height: auto;
331
+ }
332
+ .faust-ui-component.faust-ui-component-hbargraph > .faust-ui-component-hbargraph-flexdiv > .faust-ui-component-hbargraph-canvasdiv {
333
+ position: relative;
334
+ display: block;
335
+ flex: 1 1 auto;
336
+ height: 100%;
337
+ margin: auto;
338
+ }
339
+ .faust-ui-component.faust-ui-component-hbargraph > .faust-ui-component-hbargraph-flexdiv > .faust-ui-component-hbargraph-canvasdiv > canvas {
340
+ position: absolute;
341
+ display: block;
342
+ height: 100%;
343
+ width: 100%;
344
+ }
345
+ .faust-ui-component.faust-ui-component-hbargraph > .faust-ui-component-hbargraph-flexdiv > input {
346
+ position: relative;
347
+ display: block;
348
+ flex: 0 1 auto;
349
+ text-align: center;
350
+ background-color: rgba(255, 255, 255, 0.25);
351
+ margin: auto 5px auto auto;
352
+ border-width: 0px;
353
+ border-radius: 4px;
354
+ width: calc(20% - 13px);
355
+ padding: 2px 4px;
356
+ }
357
+ /*!********************************************************************************************************************!*\
358
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/components/Group.scss ***!
359
+ \********************************************************************************************************************/
360
+ .faust-ui-group {
361
+ position: absolute;
362
+ display: block;
363
+ background-color: rgba(80, 80, 80, 0.75);
364
+ border-radius: 4px;
365
+ border: 1px rgba(255, 255, 255, 0.25) solid;
366
+ }
367
+ .faust-ui-group > .faust-ui-group-label {
368
+ position: relative;
369
+ margin: 4px;
370
+ width: calc(100% - 8px);
371
+ user-select: none;
372
+ }
373
+ .faust-ui-group > .faust-ui-group-label > canvas {
374
+ position: relative;
375
+ display: block;
376
+ max-width: 100%;
377
+ max-height: 100%;
378
+ }
379
+ .faust-ui-group .faust-ui-tgroup-tabs {
380
+ position: absolute;
381
+ display: inline-block;
382
+ }
383
+ .faust-ui-group .faust-ui-tgroup-tabs .faust-ui-tgroup-tab {
384
+ position: relative;
385
+ display: inline-block;
386
+ border-radius: 5px;
387
+ cursor: pointer;
388
+ text-overflow: ellipsis;
389
+ white-space: nowrap;
390
+ user-select: none;
391
+ margin: 10px;
392
+ text-align: center;
393
+ background-color: rgba(255, 255, 255, 0.5);
394
+ }
395
+ .faust-ui-group .faust-ui-tgroup-tabs .faust-ui-tgroup-tab:hover {
396
+ background-color: rgb(255, 255, 255);
397
+ }
398
+ .faust-ui-group .faust-ui-tgroup-tabs .faust-ui-tgroup-tab.active {
399
+ background-color: rgb(40, 40, 40);
400
+ color: white;
401
+ }
402
+ /*!*********************************************************************************************************!*\
403
+ !*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/index.scss ***!
404
+ \*********************************************************************************************************/
405
+ .faust-ui-root {
406
+ margin: 0px auto;
407
+ flex: 1 0 auto;
408
+ position: relative !important;
409
+ background-color: transparent !important;
410
+ border: none !important;
411
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
412
+ }
413
+
414
+ /*# sourceMappingURL=index.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.css","mappings":";;;AAAA;EACI;EACA;EACA;EACA;AACJ;AAAI;EACI;AAER;AAAI;EACI;EACA;EACA;EACA;AAER;AADQ;EACI;EACA;EACA;EACA;AAGZ;AAAI;EACI;AAER,C;;;;ACvBA;EACI;AACJ;AAAI;EACI;AAER;AAAI;EACI;EACA;EACA;EACA;EACA;EACA;AAER;AADQ;EACI;EACA;EACA;EACA;AAGZ;AAFY;EACI;EACA;EACA;EACA;AAIhB;AADQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAGZ;AAFY;EAEI;EACA;AAGhB,C;;;;AC1CI;EACI;AAAR;AAEI;EACI;EACA;EACA;EACA;EACA;EACA;AAAR;AACQ;EACI;EACA;EACA;EACA;EACA;AACZ;AAAY;EACI;EACA;EACA;EACA;AAEhB;AACQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACZ;AAAY;EAEI;EACA;AAChB,C;;;;ACxCA;EACI;AACJ;AAAI;EACI;EACA;EACA;EACA;EACA;EACA;AAER;AADQ;EAEI;AAEZ,C;;;;ACZI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAR;AACQ;EACI;EACA;AACZ,C;;;;ACZI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAR;AACQ;EACI;EACA;AACZ,C;;;;ACbA;EACI;AACJ;AAAI;EACI;EACA;EACA;EACA;EACA;AAER;AAAI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAER;AADQ;EAEI;EACA;AAEZ,C;;;;AC1BA;EACI;AACJ;AAAI;EACI;EACA;EACA;EACA;EACA;EACA;AAER,C;;;;ACVA;EACI;AACJ;AAAI;EACI;EACA;AAER;AAAI;EACI;EACA;EACA;EACA;EACA;EACA;AAER;AADQ;EACI;EACA;EACA;AAGZ,C;;;;ACnBA;EACI;AACJ;AAAI;EACI;AAER;AAAI;EACI;EACA;EACA;EACA;AAER;AADQ;EACI;EACA;EACA;EACA;AAGZ,C;;;;ACjBA;EACI;AACJ;AAAI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAER,C;;;;ACdA;EACI;AACJ;AAAI;EACI;AAER;AAAI;EACI;EACA;EACA;EACA;EACA;EACA;AAER;AADQ;EACI;EACA;EACA;EACA;AAGZ;AAFY;EACI;EACA;EACA;EACA;AAIhB;AADQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAGZ,C;;;;ACrCI;EACI;AAAR;AAEI;EACI;EACA;EACA;EACA;EACA;EACA;AAAR;AACQ;EACI;EACA;EACA;EACA;EACA;AACZ;AAAY;EACI;EACA;EACA;EACA;AAEhB;AACQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACZ,C;;;;AClCA;EACI;EACA;EACA;EACA;EACA;AAAJ;AACI;EACI;EACA;EACA;EACA;AACR;AAAQ;EACI;EACA;EACA;EACA;AAEZ;AACI;EACI;EACA;AACR;AAAQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEZ;AADY;EACI;AAGhB;AADY;EACI;EACA;AAGhB,C;;;;ACzCA;EACI;EACA;EACA;EACA;EACA;EACA;AACJ,C","sources":["webpack://@shren/faust-ui/./src/components/Base.scss","webpack://@shren/faust-ui/./src/components/VSlider.scss","webpack://@shren/faust-ui/./src/components/HSlider.scss","webpack://@shren/faust-ui/./src/components/Nentry.scss","webpack://@shren/faust-ui/./src/components/Button.scss","webpack://@shren/faust-ui/./src/components/Checkbox.scss","webpack://@shren/faust-ui/./src/components/Knob.scss","webpack://@shren/faust-ui/./src/components/Menu.scss","webpack://@shren/faust-ui/./src/components/Radio.scss","webpack://@shren/faust-ui/./src/components/Led.scss","webpack://@shren/faust-ui/./src/components/Numerical.scss","webpack://@shren/faust-ui/./src/components/VBargraph.scss","webpack://@shren/faust-ui/./src/components/HBargraph.scss","webpack://@shren/faust-ui/./src/components/Group.scss","webpack://@shren/faust-ui/./src/index.scss"],"sourcesContent":[".faust-ui-component {\n display: flex;\n position: absolute;\n flex-direction: column;\n overflow: hidden;\n &:focus {\n outline: none;\n }\n & > .faust-ui-component-label {\n position: relative;\n margin-top: 4px;\n width: 100%;\n user-select: none;\n & > canvas {\n position: relative;\n display: block;\n max-width: 100%;\n max-height: 100%;\n }\n }\n & input {\n box-shadow: none;\n }\n}",".faust-ui-component.faust-ui-component-vslider {\n align-items: center;\n & > .faust-ui-component-label {\n flex: 0 0 auto;\n }\n & > .faust-ui-component-vslider-flexdiv {\n position: relative;\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n width: 100%;\n height: auto;\n & > .faust-ui-component-vslider-canvasdiv {\n position: relative;\n display: block;\n flex: 1 1 auto;\n width: 100%;\n & > canvas {\n position: absolute;\n display: block;\n height: 100%;\n width: 100%;\n }\n }\n & input {\n position: relative;\n display: block;\n flex: 0 1 auto;\n text-align: center;\n background-color: rgba(255, 255, 255, 0.25);\n margin: 5px auto auto auto;\n border-width: 0px;\n border-radius: 4px;\n height: 5%;\n max-width: calc(100% - 8px);\n padding: 2px 4px;\n -moz-appearance:textfield;\n &::-webkit-inner-spin-button, \n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n }\n}",".faust-ui-component.faust-ui-component-hslider {\n & > .faust-ui-component-label {\n flex: 0 0 auto;\n }\n & > .faust-ui-component-hslider-flexdiv {\n position: relative;\n display: flex;\n flex-direction: row-reverse;\n flex: 1 1 auto;\n width: 100%;\n height: auto;\n & > .faust-ui-component-hslider-canvasdiv {\n position: relative;\n display: block;\n flex: 1 1 auto;\n height: 100%;\n margin: auto;\n & > canvas {\n position: absolute;\n display: block;\n height: 100%;\n width: 100%;\n }\n }\n & > input {\n position: relative;\n display: block;\n flex: 0 1 auto;\n text-align: center;\n background-color: rgba(255, 255, 255, 0.25);\n margin: auto 5px auto auto;\n border-width: 0px;\n border-radius: 4px;\n width: calc(20% - 13px);\n padding: 2px 4px;\n -moz-appearance:textfield;\n &::-webkit-inner-spin-button, \n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n }\n}\n",".faust-ui-component.faust-ui-component-nentry {\n align-items: center;\n & input {\n margin: 0px;\n text-align: center;\n border-width: 1px;\n border-radius: 4px;\n padding: 2px 4px;\n width: calc(100% - 8px);\n &::-webkit-inner-spin-button, \n &::-webkit-outer-spin-button {\n opacity: 1;\n }\n }\n}",".faust-ui-component.faust-ui-component-button {\n & > div {\n display: flex;\n position: relative;\n cursor: pointer;\n border-width: 1px;\n text-align: center;\n border-radius: 4px;\n flex: 1 0 auto;\n border-style: solid;\n & > span {\n user-select: none;\n margin: auto;\n }\n }\n}",".faust-ui-component.faust-ui-component-checkbox {\n & > div {\n display: flex;\n position: relative;\n cursor: pointer;\n border-width: 1px;\n text-align: center;\n border-radius: 1px;\n flex: 1 0 auto;\n border-style: solid;\n & > span {\n margin: auto;\n user-select: none;\n }\n }\n}",".faust-ui-component.faust-ui-component-knob {\n align-items: center;\n & > canvas {\n position: relative;\n display: block;\n flex: 1 1 auto;\n min-height: 50%;\n width: 100%;\n }\n & > input {\n position: relative;\n display: block;\n flex: 0 1 auto;\n text-align: center;\n background-color: rgba(255, 255, 255, 0.25);\n margin: 0px;\n border-width: 0px;\n border-radius: 4px;\n max-width: calc(100% - 8px);\n padding: 2px 4px;\n -moz-appearance:textfield;\n &::-webkit-inner-spin-button, \n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n}",".faust-ui-component.faust-ui-component-menu {\n align-items: center;\n & > select {\n margin: 0px;\n text-align: center;\n border-width: 1px;\n border-radius: 4px;\n padding: 2px 4px;\n width: calc(100% - 8px);\n }\n}",".faust-ui-component.faust-ui-component-radio {\n align-items: center;\n & > .faust-ui-component-label {\n flex: 0 0 auto;\n margin-top: auto;\n }\n & > .faust-ui-component-radio-group {\n flex: 0 0 auto;\n margin-bottom: auto;\n border-width: 1px;\n border-radius: 4px;\n padding: 2px 4px;\n width: calc(100% - 8px);\n & > div {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n }\n}",".faust-ui-component.faust-ui-component-led {\n align-items: center;\n & > .faust-ui-component-label {\n flex: 0 0 auto;\n }\n & > .faust-ui-component-led-canvasdiv {\n position: relative;\n display: block;\n flex: 1 1 auto;\n width: 100%;\n & > canvas {\n position: absolute;\n display: block;\n height: 100%;\n width: 100%;\n }\n }\n}\n",".faust-ui-component.faust-ui-component-numerical {\n align-items: center;\n & > input {\n position: relative;\n display: block;\n flex: 0 1 auto;\n text-align: center;\n background-color: rgba(255, 255, 255, 0.25);\n margin: auto;\n border-width: 0px;\n border-radius: 4px;\n width: calc(100% - 8px);\n padding: 2px 4px;\n }\n}",".faust-ui-component.faust-ui-component-vbargraph {\n align-items: center;\n & > .faust-ui-component-label {\n flex: 0 0 auto;\n }\n & > .faust-ui-component-vbargraph-flexdiv {\n position: relative;\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n width: 100%;\n height: inherit;\n & > .faust-ui-component-vbargraph-canvasdiv {\n position: relative;\n display: block;\n flex: 1 1 auto;\n width: 100%;\n & > canvas {\n position: absolute;\n display: block;\n height: 100%;\n width: 100%;\n }\n }\n & > input {\n position: relative;\n display: block;\n flex: 0 1 auto;\n text-align: center;\n background-color: rgba(255, 255, 255, 0.25);\n margin: 5px auto auto auto;\n border-width: 0px;\n border-radius: 4px;\n height: 5%;\n width: calc(100% - 8px);\n padding: 2px 4px;\n }\n }\n}\n",".faust-ui-component.faust-ui-component-hbargraph {\n & > .faust-ui-component-label {\n flex: 0 0 auto;\n }\n & > .faust-ui-component-hbargraph-flexdiv {\n position: relative;\n display: flex;\n flex-direction: row-reverse;\n flex: 1 1 auto;\n width: 100%;\n height: auto;\n & > .faust-ui-component-hbargraph-canvasdiv {\n position: relative;\n display: block;\n flex: 1 1 auto;\n height: 100%;\n margin: auto;\n & > canvas {\n position: absolute;\n display: block;\n height: 100%;\n width: 100%;\n }\n }\n & > input {\n position: relative;\n display: block;\n flex: 0 1 auto;\n text-align: center;\n background-color: rgba(255, 255, 255, 0.25);\n margin: auto 5px auto auto;\n border-width: 0px;\n border-radius: 4px;\n width: calc(20% - 13px);\n padding: 2px 4px;\n }\n }\n}","\n.faust-ui-group {\n position: absolute;\n display: block;\n background-color: rgba(80, 80, 80, 0.75);\n border-radius: 4px;\n border: 1px rgba(255, 255, 255, 0.25) solid;\n & > .faust-ui-group-label {\n position: relative;\n margin: 4px;\n width: calc(100% - 8px);\n user-select: none;\n & > canvas {\n position: relative;\n display: block;\n max-width: 100%;\n max-height: 100%;\n }\n }\n & .faust-ui-tgroup-tabs {\n position: absolute;\n display: inline-block;\n & .faust-ui-tgroup-tab {\n position: relative;\n display: inline-block;\n border-radius: 5px;\n cursor: pointer;\n text-overflow: ellipsis;\n white-space: nowrap;\n user-select: none;\n margin: 10px;\n text-align: center;\n background-color: rgba(255, 255, 255, 0.5);\n &:hover {\n background-color: rgba(255, 255, 255, 1);\n }\n &.active {\n background-color: rgba(40, 40, 40, 1);\n color: white;\n }\n }\n }\n}",".faust-ui-root {\n margin: 0px auto;\n flex: 1 0 auto;\n position: relative !important;\n background-color: transparent !important;\n border: none !important;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n}"],"names":[],"sourceRoot":""}
@@ -0,0 +1 @@
1
+ export * from "@shren/faust-ui";