hey, im trying to implement feedback fm crossmodulation together with granulation via Impulse / PulseDivider / Sweep for the grain windows and therefore creating numChannels * 2 LocalIn channels and route (0…4) channels to sigs and (5…9) channels to mods. Afterwards im just using sigs multiply it by the grainwindows, pan the grains and sum them to get a stereo output signal.
It seems to work but im not sure about [mods, sigs].flat and the routing of the channels? is this correct? thanks.
In my implementation freqsA and freqsB are both a multichannel demand signal with numChannels.
var numChannels = 5;
var fbIn = LocalIn.ar(numChannels * 2);
var fbInA = (numChannels..numChannels * 2 - 1).collect{ |chan| fbIn[chan] };
var fbInB = (0..numChannels - 1).collect{|chan| fbIn[chan] };
var mods = SinOsc.ar(freqsA + (fbInA * modA));
var sigs = SinOsc.ar(freqsB + (fbInB * modB));
LocalOut.ar([mods, sigs].flat);
sigs = sigs * grainWindows;
sigs = PanAz.ar(2, sigs);
sigs = sigs.sum;