Earlier quoted context omitted.
Hey, 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 we…
You 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.
Elementary Audio: a modern platform for writing high performance audio software
31–40 of 110 posts
Re: Elementary Audio: a modern platform for writing high performance audio software
#32Earlier quoted context omitted.
Hey, 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 we…
This is my new favorite comment for illustrating the perilous future of general computing and how it needs to be taken away from JavaScript if we have any chance of survival. Electron, Webassembly fetishism, the pursuit of language synchrony at the expense of common sense, it all gets you this. This comment. Right here. This is the future of software and it should scare the shit out of you. Let me get this straight:…
Re: Elementary Audio: a modern platform for writing high performance audio software
#33Earlier quoted context omitted.
Hey, 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 we…
This is my new favorite comment for illustrating the perilous future of general computing and how it needs to be taken away from JavaScript if we have any chance of survival. Electron, Webassembly fetishism, the pursuit of language synchrony at the expense of common sense, it all gets you this. This comment. Right here. This is the future of software and it should scare the shit out of you. Let me get this straight:…
Re: Elementary Audio: a modern platform for writing high performance audio software
#34For the audio part, I think it would be very interesting to compare it with my project Glicol (https://glicol.org) from many aspects.
From Web Audio aspect, Glicol recommands users to add only two lines of code to the project:
```html
" rel="nofollow">https://cdn.jsdelivr.net/gh/chaosprint/glicol@latest/js/src/...
```
Then:
```js
run(out: `sin 440`)
```
For params updating, just call the `run` again:
```js
run(out: `sin 220`)
```
And Glicol engine will use LCS to analyse the difference, and avoid updating the whole graph.
Since Glicol uses Rust, WASM and SharedArrayBuffer, there is no GC, and support sample level control.
I haven't checked the source code of your project, but since I know CodePen quite well, it looks like that you need to add SAB, although it requires CORS during deployment.
Also, I think it may need more consideration to promote it with "Write once, run anywhere" at this stage. For example, how about Teensy? For Glicol, although it has POC to show that it can run as VST or on Bela board (https://github.com/chaosprint/glicol), there are still a long way to go (for both of us). I need to have Rust no_std from some of Glicol's dependencies. Yet I don't know how JS can be used in Teensy/STM32. But this is definitely not the end of the world. Sometimes, to have a better scope is actually a good thing for a project. If I would be to promote Elementary Audio, I would call it a Tone.js alternative. It would still be a significant contribution, since Tone.js has been so influential in Web Audio, especially for beginners. How do you think?
I think for Tone.js, the time management and scheduling is not very satisfying, perhaps you can introduce more on this topic for Elementary?
All being said, I think it is very exciting to see a new project in audio community. Good luck and please feel free to discuss more.
Re: Elementary Audio: a modern platform for writing high performance audio software
#35What a crazy coincidence. I just spent the last couple of days doing a survey of audio engines with a mind to find those that could run in wasm. Did you write your own engine or are you built on top of csound, supercollider, ChucK or something else? How do you compare against the higher level or pattern based implementations like Sonic Pi, Tidal Cycles, Overtone and Cabbage Audio? How about libraries like LibPD or ev…
Re: Elementary Audio: a modern platform for writing high performance audio software
#36What a crazy coincidence. I just spent the last couple of days doing a survey of audio engines with a mind to find those that could run in wasm. Did you write your own engine or are you built on top of csound, supercollider, ChucK or something else? How do you compare against the higher level or pattern based implementations like Sonic Pi, Tidal Cycles, Overtone and Cabbage Audio? How about libraries like LibPD or ev…
You should check Glicol: https://github.com/chaosprint/glicol For the marketing part, frankly speaking, I don't know. Since most of these projects you mentioned are based on academics, including myself.
The other small project that was interesting to me (that seems to have partially disappeared) was Sporth. The webpage for that has an unfortunate message saying the project was taken down to respect csound community.
Re: Elementary Audio: a modern platform for writing high performance audio software
#37Earlier quoted context omitted.
Hey, 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 we…
Ah 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 m…
That’s why we have supersets like Typescript and Svelte!
Re: Elementary Audio: a modern platform for writing high performance audio software
#38Re: Elementary Audio: a modern platform for writing high performance audio software
#39Earlier quoted context omitted.
You should check Glicol: https://github.com/chaosprint/glicol For the marketing part, frankly speaking, I don't know. Since most of these projects you mentioned are based on academics, including myself.
I definitely did checkout Glicol, sorry I didn't call it out along with the others but I wanted to focus one the "uses existing old-school C/C++ audio engine compiled to wasm as a server" question. I understand you wrote your own custom engine in Rust. I saw your post in the comment section related to Overtone and was actually going to reply saying to you that I appreciated your work. I think I watched all of your Yo…
For the topic you are interested (C++ audio engine as WASM), you should check these two: https://github.com/frantic0/sema-engine https://github.com/micknoise/Maximilian
For those language you mentioned csound, supercollider, Chuck (should add Faust here), I think these languages focus more on different music programming philosophy. Of course, SC is probably the most famous for reusing its audio engine for other high-level langs like the Tidal, Sonic Pi you mentioned. Also, SuperCollider's scsynth can run in browsers now: https://scsynth.org/t/webassembly-support/3037
If you are interested, https://strudel.tidalcycles.org/ is an ongoing work to port Tidal to browsers. Perhaps at some point it can be connected with Glicol audio engine.
Re: Elementary Audio: a modern platform for writing high performance audio software
#40so this is basically a paid Web Audio API wrapper?
It does say you can make plugins, but the link doesn't work. It would be huge if you could make cross-platform AU/VST*/AAX without the costs of JUCE, but I suspect that isn't on offer here.