Skip to content

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:

Clone this wiki locally