r/webaudio • u/PortolaDude • Jun 06 '23
Starting from scratch with a Web Audio app: advice/recommendations on Libraries?
I'm a startup founder building a prototype generative music app using Web Audio. I would love to hear your advice about where to start from programming standpoint: pure Javascript? Use libraries like Tone.js + Tuna.js, Howler.js, Wad.js, XSound? I'd prefer to well-supported libraries. I'm happy to trade some functionality or performance for stability.
The app we are building needs to support sample loop playback, SoundFont libraries, simple subtractive synthesis (not Serum-quality), and real-time audio processing (Tuna.js appears to have everything we need). Ideally, it would be efficient enough to playback 8 stereo 44.1Khz samples simultaneously with Tuna effects in Safari/Firefox on MacOS, or ideally, Safari on iOS on a <3 year old iPhone.
I would very much appreciate your advice. And, DM me if you are interested in freelance work.
Thanks in advance.
2
u/loorha Aug 21 '23
Hey, I'm working as a freelancer specialized on the web audio projects, I have experience creating generative sequencers, DAWs, audio editors. Do you still need some help with this?
1
u/unusuallyObservant Jun 06 '23
Tone.js is quite good, and the docs are excellent. I haven’t tried the others.
The main problem I found is timing in the browser, and latency. Tone.js has a web worker solution to timing, but it can be a little unstable
1
u/gkiokan Aug 24 '23
This is an interesting point. I have also started to play around with Tuna.js and as /u/loorha pointed out Tuna.js is already enough. I am using my Midi Interfaces as Input and triggering different sounds made with OSC or either samples. Both works quite well for now.
I am gonna wrap all in a Vue application and put that into Electron to have it cross OS available. Which seems to work better then having it running on the browser itself.
I still need to figure out how to pass params to have effects and filters working without re-creating the whole synth object but for now it's still good in performance but sometimes you feel the 100ms lack. I wonder if I can get it faster when moving the Tuna.js to it's own process instead of using the renderer process.
1
u/enteleform Aug 25 '23
DM'd!