Comments (2)
Hi, thanks for the feedback :)
Regarding your questions:
-
The best approach here is to use AudioWorklet which is what I use in this project. AudioWorklet renders buffers of 128 frames and send to the audio hardware ( via a AudioWorkletNode ). This is the approach used in this project to obtain low latency and realtime playback.
-
The AudioWorkletProcessor has to be written in JS but it can call into WASM for rendering the buffer of 128 frames.
-
The heart of the code generating the audio in this project is the
fillSampleBuffer
method ( https://github.com/petersalomonsen/javascriptmusic/blob/master/wasmaudioworklet/synth1/assembly/index.ts#L173 ). This code of course takes into account that you should be able to control the notes from the outside and also use multiple instruments. In order to just make the simple basic example, you'd just make sure that yourprocess
method of the AudioWorklet calls into WebAssembly ( or even just does it in JS ) to something that just returns samples of a sine. Also read about AudioWorklet here: https://developer.chrome.com/blog/audio-worklet/
from javascriptmusic.
Thanks for the great advice and links @petersalomonsen !
from javascriptmusic.
Related Issues (9)
- Great experiment! HOT 11
- Licensing HOT 1
- Questions! (Btw, this project is awesome!!) HOT 3
- Feedback, features propositions, more questions (time, duration, seeking, audio samples, etc) HOT 22
- Writing VST and native Audio plugins in AssemblyScript? HOT 2
- new related project HOT 8
- possible different or additional license? HOT 7
- mod, xm, s3m, it, MusicXML & verovio integration? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from javascriptmusic.