New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multichannel Audio Recording/Routing on Windows 10 #4895
Comments
@tugrulsalci could you provide more details? Are you setting appropriate number of channels in |
Sure, I don't know much about Supercollider but I will try to explain. Basically this is how my startup file looks like:
And I am recording with command > |
I think I see what the problem is. You need to set server options before you call boot/reboot. Let me know if it works. |
Sever doesn't boot in this way... it just compiles the library |
Sorry I wasn't clear. You need to remove the BTW don't you also need to increase number of channels in This is the proper way to set the server options (i.e. before the boot). I did not change the (
// server options are only updated on reboot
// configure the sound server: here you could add hardware specific options
// see http://doc.sccode.org/Classes/ServerOptions.html
s.options.numBuffers = 1024 * 256; // increase this if you need to load more samples
s.options.memSize = 8192 * 32; // increase this if you get "alloc failed" messages
s.options.numWireBufs = 64; // increase this if you get "exceeded number of interconnect buffers" messages
s.options.maxNodes = 1024 * 32; // increase this if you are getting drop outs and the message "too many nodes"
s.options.numOutputBusChannels = 12; // set this to your hardware output channel size, if necessary
s.options.numInputBusChannels = 2; // set this to your hardware output channel size, if necessary
// boot the server and start SuperDirt
s.waitForBoot {
~dirt = SuperDirt(2, s); // two output channels, increase if you want to pan across more channels
~dirt.loadSoundFiles; // load samples (path containing a wildcard can be passed in)
// for example: ~dirt.loadSoundFiles("/Users/myUserName/Dirt/samples/*");
// s.sync; // optionally: wait for samples to be read
~dirt.start(57120, [0,2,4,6,8,10]);
(
~d1 = ~dirt.orbits[0]; ~d2 = ~dirt.orbits[1]; ~d3 = ~dirt.orbits[2];
~d4 = ~dirt.orbits[3]; ~d5 = ~dirt.orbits[4]; ~d6 = ~dirt.orbits[5];
~d7 = ~dirt.orbits[6]; ~d8 = ~dirt.orbits[7]; ~d9 = ~dirt.orbits[8];
~d10 = ~dirt.orbits[9]; ~d11 = ~dirt.orbits[10]; ~d12 = ~dirt.orbits[11];
);
s.meter;
s.latency = 0.3;
};
); |
Try removing
I believe this is expected. If your hardware interface allows 4 output channels, and you request 8 channels, then the first 4 will be connected to the hardware output channels but the other 4 will have nothing to connect to, hence silent. If I'm understanding you right, you want:
The usual approach to this case in SC is to use separately allocated buses for recording, and then mix down to the physical outputs. If SuperDirt requires a 1:1 map between orbits and output buses (and I don't know if it does or doesn't), that strikes me as a limitation within SuperDirt. It really shouldn't be designed that way. It should be:
It might be possible to work around by inserting mixing synths into the chain, but the order of synths will be very important and possibly fragile. (It wouldn't be fragile if SuperDirt manages it, but if that wasn't part of its design then it wouldn't.)
That... I'm puzzled... and curious. Let me check it on my computer later. |
The issue is that in macOS there is no such problem.
@dyfer @jamshark70 Thank you for your help but the result is the same, no sound after third orbit and same in the audio file output.
@jamshark70 Channels that I set exist in the file but there is no audio information after third channel*
@dyfer This stands for the stereo output. That's why orbits are arenged like this:
|
@jamshark70 Actually in the last file with the last changes, I have the audio info in the all channels set. :) On the other hand, still there is no sound while playing live... Would it be possible to mix all the channels for the speaker output and still being able to record the multichannel audio? |
Multiple output channels are used to drive multiple physical outputs/multiple speakers. Your ASIO device has only 2 outputs so you won't hear sound sent to other outputs.
Yes, but you should send your signal to another (multichannel) To hear all the channels in your stereo output, you should mix them, also per @jamshark70's suggestion. You can use a separate synth running at the end or after the main group for that |
I don't see a way for this to be the case but if you believe that's true, please provide a full reproducer. |
Right. To be more clear, I am guessing that the problem arises if SuperDirt assumes a 1:1 correspondence between channels that you hear in realtime and channels that you record. If I'm right about that, then SuperDirt's current design doesn't directly support the case of recording a different topology than is routed out to the speakers. SuperCollider is capable of handling both, but it has to be built into the SC code that is running. (In my work, I have separate MixerChannels for individual layers, mixed down into some submixes for recording, and finally down to stereo for the speakers.) So it should be added as a SuperDirt feature: each orbit should have a dedicated internal bus for recording, mixed down to an equal or smaller number of hardware buses. I'm not familiar with SuperDirt's design, so I don't know how hard it would be to implement. Ideally it wouldn't be hard at all. Very likely this doesn't require any code changes in SC. |
@tugrulsalci could you confirm whether you were able to solve this? As @jamshark70 pointed out this doesn't seem to be an issue with the SC code in itself. |
I've responded to the thread at the toplap forum where this is being discussed, asking whether SuperDirt has the required mixdown feature (only a couple hours ago, waiting for reply). |
any follow up on this? |
I think we can close it. It's more of a SuperDirt issue IMO -- nobody from Tidal has confirmed that, but I think it needs to be demonstrated that it's really a SuperCollider problem before taking more action here. |
I am trying to record multichannel audio on Supercollider. I am using Tidalcycles and I can see with s.meter that I get the audio multichannel in Supercollider. But I cannot hear any sound after third channel (after d3 or orbit 2) from speakers. Same with recording the audio, in the output file there is no more than 3 channels. I think it is because Windows has some kind of limitations and drivers give most 8 channels (so 4 stereo). Do you have any suggestions to solve this problem, including routing the audio to any daw?
Environment
The text was updated successfully, but these errors were encountered: