It's a compromise of speed vs quality. You can do `oversample(8, ()-> ...)` to get an increase in quality on certain occassions but that will slow down the performance.
If anyone wants to contribute gens/filters[0] the code is open source under MIT.
Tysm! Technically, about the audio engine, the language is fully Turing complete, compiling bytecode which then gets swapped out in realtime and executed by a VM running in WebAssembly/AssemblyScript. All the gens/effects/filters are implemented in a custom DSL that gencodes AssemblyScript classes with all the permutations of parameters whether they're scalar or audio inputs in order to achieve the maximum performance possible. I had a lot of help from the LLMs but all of the components had been previously implemented by hand as well multiple times in previous versions, so I had a clear direction. If you have any questions feel free to ask, we also have a Discord you can find it in the homepage at the footer.
I recently switched to developing VST audio plugins and I'm loving it. Already done 3 [0][1][2] and I want to keep doing this if I manage to generate some income from it. I develop them in Typescript and then convert them to C++ with Webview, this way I have a web demo of the plugin that is almost identical to the one you get for the DAW.
Challenging would be an understatement. Had to create an editor from scratch in canvas to support the inline visuals, then a DSL that generates the code for each permutation of audio and scalar parameters, then the language itself which is Turing complete and controls the whole thing in a VM, choosing the optimal permutation for each case, and all the edits/recompilation be done in few ms to not distrupt the experience, all across a thread (the WebAudio AudioWorklet). The audio engine is in WebAssembly as it was the only way to get the performance needed. You can check out the code[0], the project is open-source!
If anyone wants to contribute gens/filters[0] the code is open source under MIT.
[0]: https://github.com/loopmaster-xyz/engine/tree/main/dsl
reply