No, I don't think you're just whining! Right now, chuck is built around
the idea of having multiple programs synced together in time. It would
be awesome if you could share more things between the programs. Public
ugens, public variables, public events, and - as you said - busses.
Exactly. Public events for straightforward sequencing (in any sense of the word) would be great as well. We do have public classes and they are great for what they do but I dislike them for impulsive sessions as you only get to define them once so you can't extend them.
Because the DAC already also works as a internal bus, in a way (dac => LiSa l => dac; //is fine) I imagine adding something called "bus" that operates exactly like a dac aside from not sending data to the soundcard should be a more or less straightforward addition. The one issue (difference) I see right now is that for the DAC we need to set the max amount of channels at startup but that might mainly be a matter of communicating with the soundcard.
If we would have public Ugens the whole issue would become moot as you could simply go;
public Gain bus1 => blackhole;
But I wonder how hard that would be to implement. If it were easy we probably wouldn't have the current situation with static members of public classes....
Yours,
Kas.