Hey! I have a Bela Mini with the multichannel expander and I am trying to run a project with supercollider but there is no sound. Even the supercollider hello example does not produce any sound. A C++ project works fine, however. The DigitalOut example works fine too with supercollider.
Do you have any ideas why?
Thanks and all the best,
Jürgen
SuperCollider & Multichannel Expander
I think the basic sc example has a mono output. Can you double check it's not an issue withbthe listening system not reproducing the left channel?
Hey, thanks for your quick response! No, both channels work when I try the c++ sinetone example for instance. It seems like only C++ is working, neither SuperCollider, nor PureData, nor Csound expamles give any sound.
I am running v0.3.8h, 5 January 2023
What device have you got exactly and what channels are you listening to? The C++ example is the only one that writes audio to all output channels, while the Pd/Sc/Cs examples use 1 or 2 channels instead. These will come out only of the channels on the Bela/BelaMini cape, but not of any of the expanders.
Create a new Pd project and use this patch, does it work?
Okay, thanks, that worked! But I am still struggling with SuperCollider, I tried
s = Server.default;
// Set up options for the Bela
s.options.numAnalogInChannels = 2;
s.options.numAnalogOutChannels = 2;
s.options.numDigitalChannels = 0;
s.options.maxLogins = 4;
s.options.bindAddress = "0.0.0.0"; // allow anyone on the network connect to this server
s.options.blockSize = 16;
s.options.numInputBusChannels = 2;
s.options.numOutputBusChannels = 8;
s.waitForBoot {
// Your code goes here.
{
var sig;
sig = SinOsc.ar(220.0, 0.0, 0.3);
sig = SplayAz.ar(8, sig);
}.play;
};
ServerQuit.add({ 0.exit }); // quit if the button is pressed
Do I miss something?
I have the bela mini with the multichannel expander, my speakers are plugged in to the 0-1 and 2-3 outputs on the expander.
Thanks for your help!
Sorry it will take me till thursday before I am back with an audio expander so I can troubleshoot this properly.
Okay, thanks for looking into it!
OK it is indeed a bug due to a change of API between the Supercollider build and the Bela core code. I need to work on that, it will have to be early next week, sorry about the further delay.
- Edited
OK, first off, I know next to nothing about Supercollider, but it seems that your Sc code is wrong. I tried a few different options.
Any of these works (only showing the content of the s.waitForBoot{}
block for brevity, the rest of the document it's identical to the one you posted above):
SynthDef("multitest",{ // one oscillator per output channel
Out.ar(0, SinOsc.ar(200) * 1);
Out.ar(1, SinOsc.ar(300) * 1);
Out.ar(2, SinOsc.ar(400) * 1);
Out.ar(3, SinOsc.ar(500) * 1);
Out.ar(4, SinOsc.ar(600) * 1);
Out.ar(5, SinOsc.ar(700) * 1);
Out.ar(6, SinOsc.ar(800) * 1);
Out.ar(7, SinOsc.ar(900) * 1);
}).send(s);
s.sync;
Synth.new("multitest", target: s);
or
{ Out.ar(4, PinkNoise.ar(0.1)) }.play // noise out of channel 4
or
{ // one oscillator duplicated to all outputs
var sig;
sig = SinOsc.ar(220.0, 0.0, 0.3);
sig.dup(8);
}.play;
or
{ // one oscillator spread to all outputs
var sig;
sig = SinOsc.ar(220.0, 0.0, 0.3);
sig = SplayAz.ar(8, sig, width: 8);
}.play;
Looking at the last one, crucially you were using the wrong width
for SplayAz
. This value, according to the docs, means Over how much of the channels each signal is distributed.
and - while I appreciate that this is not necessarily the correct way of expressing that in English - it seems to mean in practice "Over how many channels each signal is distributed". Setting it to 8
seems to have the intended result.
giuliomoro OK it is indeed a bug due to a change of API between the Supercollider build and the Bela core code.
This is a separate issue that doesn't actually affect the pre-built version of Supercollider that is bundled with Bela, so the above should suffice.
giuliomoro Thank you very much! That worked!