I have a question about utilizing multichannel setups. Is there a way to send a sound to a specific channel (the choice being dynamically allocated so its not just connecting sound generating unit to specific inlet of dac~)? Or is the only option sending all sounds to all channels and changing amplitudes of each channel separately?
thanks Oded
Hello Oded,
Oded Ben-Tal wrote:
I have a question about utilizing multichannel setups. Is there a way to send a sound to a specific channel (the choice being dynamically allocated so its not just connecting sound generating unit to specific inlet of dac~)? Or is the only option sending all sounds to all channels and changing amplitudes of each channel separately?
Do you mean channels of the soundcard? In that case, try:
[dac~ 1 2] [dac~ 3 4] [dac~ 5 6] etc etc
However, this doesn't sound like what you are asking. If you mean different channels internally, then check out:
[send~ "name"] / [receive~ "name"] [throw~ "name"] / [catch~ "name"]
[demux~]
and other such objects. For dynamic connections, you might also use local or global variables such as $0 or $1 in connection with send/receive or throw/catch pairs. See:
doc/2.control.examples/dollarsign.pd doc/2.control.examples/dollarsign2.pd doc/2.control.examples/14.dollarsigns.pd
I hope this answers your questions. If not, perhaps you could state the problem more clearly?
best, derek
I see that I didn't explain what I was looking for: One way of looking at it is a kind of [route~] i.e. sending signal to different output channels according to a control mechanism. A silly example can be taking an input sound modifying it and than rotating it to different channels (suppose the input consists of descrete attacks than I can send each note to different channel more or less). I hope it is a little clearer.
thanks Oded
-- ___________________________________________________ Oded Ben-Tal http://www-ccrma.stanford.edu/~oded oded@ccrma.stanford.edu
Oded Ben-Tal wrote:
One way of looking at it is a kind of [route~] i.e. sending signal to different output channels according to a control mechanism.
I think the hint of derek was the right one:
[adc~ 5] | [send~ mysig]
[receive~ mysig] | [pd process_ch1] | [dac 1]
[receive~ mysig] | [pd process_ch2] | [dac 2]
and so on for all channels you have...
A silly example can be taking an input sound modifying it and than rotating it to different channels (suppose the input consists of descrete attacks than I can send each note to different channel more or less). I hope it is a little clearer.
You can solve it with the structure above. Switching between channels, don't forget to cross fade the signals to avoid clicks...
br, Piotr
i think the attached patch will do what you are looking for...
On Tue, 2005-09-27 at 13:58 -0700, Oded Ben-Tal wrote:
I see that I didn't explain what I was looking for: One way of looking at it is a kind of [route~] i.e. sending signal to different output channels according to a control mechanism. A silly example can be taking an input sound modifying it and than rotating it to different channels (suppose the input consists of descrete attacks than I can send each note to different channel more or less). I hope it is a little clearer.
thanks Oded
-- ___________________________________________________ Oded Ben-Tal http://www-ccrma.stanford.edu/~oded oded@ccrma.stanford.edu
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Hi all
Don't know if this is what you're looking for, but you can send "set"
messages to throw~ and send~ objects to reroute their signals.
cheers dafydd
ahhh!
thanks for posting that dafydd!! that's an excellent solution to a problem i had.
Again, I would suggest looking at [demux~]. It does exactly what you describe--switching one input between several different output channels depending on a control number. It does not interpolate, however, so you will get clicks in a continuous signal (which is why volume control becomes important]. I've been told that [matrix~] uses interpolation for click-free switching, but I've been too lazy so far to sit down and figure out how it works.
Something could also be constructed with send~/receive~ pairs, although in the case you describe throw~/catch~ is more appropriate because you can have many [throw~ "name"] objects going to one [catch~ "name"]. With send~/receive~ it is the opposite: one [send~ "name"] objects for many [receive~ "name"] objects. If you were to apply crossfading between the various [throw~] objects, you wouldn't need discreet attacks. But your original question referred to ways other than changing volume, so I think you should have the answer now.
d.
Oded Ben-Tal wrote:
I see that I didn't explain what I was looking for: One way of looking at it is a kind of [route~] i.e. sending signal to different output channels according to a control mechanism. A silly example can be taking an input sound modifying it and than rotating it to different channels (suppose the input consists of descrete attacks than I can send each note to different channel more or less). I hope it is a little clearer.