This is jsynth with webworkers, and it is somewhat different because your function needs to return your function, for proper context scoping. Becuz this uses webworkers, there is also a method for changing your DSP function.
Pass your audio context, and your DSP function to the constructor. Optionally pass a 3rd param, a buffer size. See the Web Audio API for about that. A default is provided for the buffer size.
It will return a Web Audio Script Processing Node, which can be connected to any other Web Audio Node on the graph.
Simple use, generate a tone:
var master = ;var jsynth = require'jsynth-ww';/*the following returns the function that will be used for audio process.It is encapsulated in a function for scoped variable definitions.This is because the whole thing is going in a webworker scope.*/varvar tau = MathPI * 2;var f = 444returnreturn Mathsintime * tau * fvar synth = jsynthmaster sineGenerator 4096; // returns a web audio nodesynthconnectmasterdestination// later, change the functionsynthupdatenewGeneratorFunction
Your function will be called with the following arguments:
You function should return a float between [-1, 1]-ish, but don't be afraid to multiply amplitudes.
npm install jsynth
On mobile safari webkit (iOS), you can only initiate web audio API sounds from within a user event context, such as a click.
to run the example, use opa
npm install -g watchify opa
(watchify is browserify + file a file watcher) Then:
git clone email@example.com:NHQ/jsynth.gitcd jsynthopa -e example.js -o public/bundle.js
open your browser to http://localhost:11001