Simple way of polling audio busses from the client?

Although this seems like such a basic question, I can’t find the answer.

Bus.get and friends seem to work only for control busses.

Ndef(\kr2, { SinOsc.kr([440, 550]) });
Ndef(\kr2).bus.get
// Bus control index: 4 values: [ -0.5443629026413, 0.65901893377304 ].

But for audio, it seems those always return zeroes:

Ndef(\ar2, { SinOsc.ar([440, 550]) });
Ndef(\ar2).bus.get
// Bus audio index: 4 values: [ 0.0, 0.0 ].

Reads zeroes no matter how many times I eval the last line.

So, is there a simple method to find out on the client if anything is being sent to a server audio bus? I can obviously write a SynthDef that does that and sends OSC back to the client, but am I missing some existing facility?

No – there is no OSC command to get the value of an audio bus. /c_get is only for control buses. (“c” is for “control” – /b_get is for buffer data.)

Audio signals fluctuate rapidly. You could, for instance, have a full-scale sinewave with an exact integer number of cycles within a control block, and if the phase is 0 at the control block boundary, a hypothetical /abus_get command would retrieve 0 no matter when you called it, even though the signal is full-scale. That’s a contrived scenario, of course, but it demonstrates that it may be more meaningful to get RMS values rather than individual samples from audio buses – and the user might want to have control over the RMS window size. So it’s probably better to leave it to users to preprocess the audio signals in a way that’s meaningful for their specific use case, before retrieving.

hjh