6 ms·
Maybe I'm missing something from my quick read, but the idea of using this for plugins seems like a real misfire. I'm curious whether the devs come from the pro
by iainctduncan 5y ago
Maybe I'm missing something from my quick read, but the idea of using this for plugins seems like a real misfire. I'm curious whether the devs come from the pro audio world at all. It's one area where prioritizing for development time by using high level garbage collected languages just isn't done because your user is always concerned with how many instances they can run and what the lowest latency they can get is, and that latency constraint is going to be applied across your entire system. So if there is one plugin that hoses the latency by needing a time slice big enough to run a GC in the audio dsp routine, pro audio buyers won't touch it.
It looks like a nice way to do interactive web audio work, but plugins are a different beast all together. If you want a place where old school skating-with-razor-blades pointer coding is still common practice, it's DSP code.
- ushakov 5y agoexactly users often have to bear the costs for developer productivity with audio software the performance aspect is critical to user and thus the cost of increased developer productivity is exceeding the reward you can’t make any compromise, because otherwise users won’t be buying the product and you go bankrupt this is one thing i wish has happened to Electron
- trypwire 5y agoHey, Nick from Elementary Audio here. You're totally right that in this domain you have to be extremely careful with performance and latency. Elementary takes great care to deliver that; it's a JavaScript "frontend" API but all of the actual handling of audio is done natively with high quality realtime constraints. The core engine is all native C/C++, and we run in the web by compiling to wasm and running inside a web worker. For delivering a desktop app or audio plugin, the native engine is compiled directly into the target binary. So, while JavaScript and garbage collectors can bring a performance concern, we're only using JavaScript there for handling the lightweight virtual representation of the underlying engine state, and for that role JavaScript is plenty fast enough and the garbage collector quite helpful!
- danuker 5y ago> by compiling to wasm TIL WASM bypasses JS completely, including its memory management.
- Flankk 5y agoThat's great on paper but how do I actually use it? If I want to play back a wavetable you have el.table() but it's missing the oversampling and decimation tools required for antialiasing. The el.lowpass() is a biquad which is not suited well for modulation. How can this compete with JUCE when the documentation and features are so sparse?
- iainctduncan 5y agoAh cool, after I posted I was wondering if this was the case. I was just thinking "maybe the renderer is in WASM"? That's pretty cool, it will be interesting to watch. I do something very vaguely similar in my computer music work where Scheme orchestrates C level objects. Personally, I wouldn't want to use JS as the high level orchestrator myself as it's such a dog's breakfast of a language, but I can see that many might.
- FractalHQ 5y ago> such a dog's breakfast of a language That’s why we have supersets like Typescript and Svelte!
- iainctduncan 5y agoYou should really fix the initial impressions you make from the site to get that front and centre though. Experienced audio devs are going to dismiss this unless you make it clear very quickly.
- trypwire 5y ago100%. I'm actively learning exactly this, haha :). It's helpful feedback, thank you!
- bricklebrack 5y ago
- replygirl 5y agomy friend is running an independent studio, i'm a bedroom musician, and we're planning some elementary plugins together. we tried some stuff with max and it wasn't expressive enough, we tried the steinberg sdks but they were too much of a lift, elementary is good enough for our workflows and in that perfect zone with enough control and enough familiarity that we feel we can be productive. we'll see in due time if it's too good to be true, but we're excited!
- worik 5y agoIf you can tolerate graphical programming, the successor to Max, Pure Data, really rocks.
- iainctduncan 5y agoor even if you can't! I use Max and to a lesser extent Pd, but > 90% of my actual work is done in Scheme or in C running inside them. Many advanced computer music people wind up doing this sort of thing because the graphical environments just can't be beat for quickly lashing together an environment for interaction, where interaction could be GUI, midi, network/OSC, customer hardware over serial, etc.
- worik 5y agoThat is interesting. I have not gotten that far yet.