Closed gogins closed 7 months ago
Summary for FR:
csoundn
in csoundac.mjs
does. I.e., csoundn
is scheduled at exactly the same time as the silent WebAudio output. It does not use a trigger as csound
does. I surmise that only at the point of real-time audio output can the queries of Strudel actually be matched with stateful values. Also, the scheduling only works if csoundn
has access to timing information from Cyclist in order to schedule notes within cycles, so I exposed Cyclist as a singleton in globalThis.__cyclist__.
pianoroll
also doesn't work out of the box. Either it doesn't show up, or it shows a flat line of notes that jumps at every cycle boundary. I added also a global Hap buffer in globalThis.haps_from_outputs
; csoundn
pushes all the Haps it actually plays onto this buffer.pianoroll
pushes the Haps from csoundn
in the global buffer onto the haps
parameter, which is full of extraneous Haps from queries. The global buffer is then filtered and assigned to the regular haps
object in pianoroll.
Which then displays properly. If I knew more about the innards of Strudel perhaps I could get rid of these extraneous Haps. However, they don't seem to cause a big performance hit.Here are the pull requests I am contemplating:
csound
and csoundm
to send certain custom Strudel control parameters to Csound control channels.On second thought, I am going to try to avoid this.