-
Notifications
You must be signed in to change notification settings - Fork 1
genish port
Graham Wakefield edited this page Feb 16, 2021
·
3 revisions
Switch over to using genish.js for audio synthesis, as it is a near parallel to gen~
Future: get genish running natively in node.js via simple audio buffer (e.g. miniaudio.h) For now: in a browser with GOT updates via socket
Requires:
- GOT -> genish translation. Basic MVP working.
- replacing grpah in an ongoing worklet (for now simulate w/ scriptprocessornode) Example codepen: XXX
- caching state ("stash") betweek graph changes, so that oscillators etc. keep going from where they left off. We have that basically working in a codepen: XXX
- possibly also mixer crossfade type of thing.
Questions/Challenges:
- dealing with multiple outlets; example of [counter], which has named .wrap as 2nd outlet. Can main outlet also be .out ???
- createCallback takes either a ugen or an array of length 2+ (why not array of length 1?)
- LEDs: we sketched a quick data-writer ugen to store outputs in a lookup table accessible outside of graph. We had a codepen kind of working that out: XXX
- want some kind of lookup table of shared data sent back to main thread
- GOT marks feedback paths as history=true, how we we write equivalent in genish safely?
- How params can work; code seems to assume you pass them in as args to the kernel callback, but that seems unworkable for very large graphs... is there a different way?
- param() still works with scriptprocessornode, but not with worklets currently
- multichannel outputs (multiple speakers)
Investigate worklets in Node:
- may be limited in terms of what can be accessed. Look into what we can do with sharedarraybuffer on asyncworklet thing.
Later:
- Spatializing audio: when we move to Node we could re-use oculus code; in web use webaudio.
Genish notes:
- History: look at ssd(), see "one delay line" example in http://www.charlie-roberts.com/genish/playground/