Re: [PD] Fwd: random routing of 8 audio-streams to 8 outputs
I do this using throw~ and catch~ where the mapping happens in an abstraction within a clone object. I've used this heavily for spatialized projects at work up for up to 64 channels. Here is a simple solution using Han's c_urn suggestion to do the random number generation: https://github.com/danomatika/BangYourHead/tree/master/3.Audio/rand8player <https://github.com/danomatika/BangYourHead/tree/master/3.Audio/rand8player> This could be further cleaned by using an output abstraction that wraps a [dac~] without creation args so you can set the output channel. You could also integrate the [dac~] into the existing channel map abstraction too, but I figured it was easier to read using a single doc~ object as an example. if you want further heavy usage of this approach with multiple mapping layers, see https://github.com/zkmkarlsruhe/ZirkoniumSpatializationServer <https://github.com/zkmkarlsruhe/ZirkoniumSpatializationServer> > On Oct 5, 2021, at 4:12 AM, pd-list-requ...@lists.iem.at wrote: > > Message: 1 > Date: Tue, 5 Oct 2021 00:08:22 +0200 > From: Simon Iten mailto:itensi...@gmail.com>> > To: Pd-list mailto:pd-list@lists.iem.at>> > Subject: [PD] Fwd: random routing of 8 audio-streams to 8 outputs > Message-ID: ><mailto:cap9nqknmyn6ojsfp9ujbcf-znykr5qrp6qnbxa60pocblsu...@mail.gmail.com>> > Content-Type: text/plain; charset="utf-8" > > is there a somewhat elegant way to route 8 audio outputs (from readsf~) to > 8 dac~ outputs randomly (on a bang for example)? > > i.e. out1 to dac4, out2 to dac7 etc. > > each output is allowed to one dac~ channel only. > > mathematically speaking that would be 8! 8x7x6x5x4x3x2x1 (40320) > possibilites, but i don?t see an easy way to program this in puredata. > > some way of dynamic patching maybe? or a throw~ and catch~ approach? i get > stuck on the random logic, since every ?step? that chooses a destinations > changes the subsequent outputs that are still allowed to be chosen. Dan Wilcox @danomatika <http://twitter.com/danomatika> danomatika.com <http://danomatika.com/> robotcowboy.com <http://robotcowboy.com/> ___ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Re: [PD] Fwd: random routing of 8 audio-streams to 8 outputs
This could be a way of doing it in Vanilla using [random] and some features of the [text] object - if I understood correctly what you are tying to do :-) (in this example the audio sources aren't [readsf~] but just some random 'different enough' sources - in your case you should replace each of the sources with the specific [readsf~] you need to route) Hope this helps. Lorenzo On 05/10/2021 00:08, Simon Iten wrote: is there a somewhat elegant way to route 8 audio outputs (from readsf~) to 8 dac~ outputs randomly (on a bang for example)? i.e. out1 to dac4, out2 to dac7 etc. each output is allowed to one dac~ channel only. mathematically speaking that would be 8! 8x7x6x5x4x3x2x1 (40320) possibilites, but i don’t see an easy way to program this in puredata. some way of dynamic patching maybe? or a throw~ and catch~ approach? i get stuck on the random logic, since every “step” that chooses a destinations changes the subsequent outputs that are still allowed to be chosen. ___ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list #N canvas 558 116 1285 901 16; #X obj 986 21 text define urn; #X msg 888 22 bang; #X obj 888 56 t b b; #X msg 983 93 -1; #X obj 983 134 text delete urn; #X obj 888 135 until; #X obj 888 206 change; #X msg 888 91 ; #X obj 888 245 t f f; #X obj 974 293 text search urn; #X obj 888 363 spigot; #X obj 974 327 == -1; #X obj 888 171 random 8; #X obj 930 452 text insert urn 1e+09; #X obj 888 403 t b f; #X obj 888 493 text size urn; #X obj 1157 293 sel 8; #X obj 1155 361 s done_rand; #X obj 1157 328 del 0.1; #X obj 45 197 r done_rand; #X obj 45 305 until; #X obj 45 230 t b b; #X obj 87 438 text get urn; #X msg 45 265 8; #X obj 45 344 f; #X obj 98 344 + 1; #X obj 11 95 *~ 0.1; #X msg 143 305 0; #X obj 45 382 t f f; #X obj 45 480 pack f f; #X msg 45 639 set s\$1; #X msg 141 640 set s\$1; #X obj 45 682 r~; #X obj 141 683 r~; #X msg 234 639 set s\$1; #X msg 330 640 set s\$1; #X msg 458 639 set s\$1; #X msg 554 640 set s\$1; #X msg 647 639 set s\$1; #X msg 742 640 set s\$1; #X obj 45 534 route 0 1 2 3 4 5 6 7; #X obj 10 140 s~ s0; #X obj 113 55 *~ 0.1; #X obj 113 13 osc~ 200; #X obj 112 140 s~ s1; #X obj 318 49 *~ 0.1; #X obj 517 94 *~ 0.1; #X obj 620 53 *~ 0.1; #X obj 732 53 *~ 0.1; #X obj 732 12 osc~ 850; #X obj 206 139 s~ s2; #X obj 317 139 s~ s3; #X obj 414 139 s~ s4; #X obj 516 139 s~ s5; #X obj 619 137 s~ s6; #X obj 731 137 s~ s7; #X obj 296 535 print; #X obj 44 789 *~; #X obj 140 789 *~; #X obj 942 544 r done_rand; #X obj 848 686 f 0, f 6; #X obj 848 546 loadbang; #X obj 234 685 r~; #X obj 330 685 r~; #X obj 233 792 *~; #X obj 329 791 *~; #X obj 458 684 r~; #X obj 457 790 *~; #X obj 554 685 r~; #X obj 553 791 *~; #X obj 651 687 r~; #X obj 650 793 *~; #X obj 742 687 r~; #X obj 741 793 *~; #X obj 11 13 noise~; #X obj 206 13 phasor~ 800; #X obj 206 55 *~ 0.08; #X obj 848 714 lop~ 1; #X obj 943 590 t b b; #X msg 943 629 0; #X obj 999 623 del 50; #X msg 999 652 1; #X obj 318 13 osc~ 600; #X obj 415 13 osc~ 4000; #X obj 415 54 *~ 0.08; #X obj 517 13 noise~; #X obj 1054 587 print ; #X obj 42 842 dac~ 1 2 3 4 5 6 7 8, f 78; #X obj 620 11 phasor~ 50; #X obj 517 52 lop~ 400; #X obj 12 51 hip~ 4000; #X obj 318 111 *~; #X obj 343 80 osc~ 1; #X connect 1 0 2 0; #X connect 2 0 7 0; #X connect 2 1 3 0; #X connect 3 0 4 0; #X connect 5 0 12 0; #X connect 6 0 8 0; #X connect 7 0 5 0; #X connect 8 0 10 0; #X connect 8 1 9 0; #X connect 9 0 11 0; #X connect 10 0 14 0; #X connect 11 0 10 1; #X connect 12 0 6 0; #X connect 14 0 15 0; #X connect 14 1 13 0; #X connect 15 0 16 0; #X connect 16 0 5 1; #X connect 16 0 18 0; #X connect 18 0 17 0; #X connect 19 0 21 0; #X connect 20 0 24 0; #X connect 21 0 23 0; #X connect 21 1 27 0; #X connect 22 0 29 1; #X connect 23 0 20 0; #X connect 24 0 25 0; #X connect 24 0 28 0; #X connect 25 0 24 1; #X connect 26 0 41 0; #X connect 27 0 24 1; #X connect 28 0 29 0; #X connect 28 1 22 0; #X connect 29 0 40 0; #X connect 29 0 56 0; #X connect 30 0 32 0; #X connect 31 0 33 0; #X connect 32 0 57 0; #X connect 33 0 58 0; #X connect 34 0 62 0; #X connect 35 0 63 0; #X connect 36 0 66 0; #X connect 37 0 68 0; #X connect 38 0 70 0; #X connect 39 0 72 0; #X connect 40 0 30 0; #X connect 40 1 31 0; #X connect 40 2 34 0; #X connect 40 3 35 0; #X connect 40 4 36 0; #X connect 40 5 37 0; #X connect 40 6 38 0; #X connect 40 7 39 0; #X connect 42 0 44 0; #X connect 43 0 42 0; #X connect 45 0 91 0; #X connect 46 0 53 0; #X connect 47 0 54 0; #X connect 48 0 55 0; #X connect 49 0 48 0; #X connect 57 0 87 0; #X connect 58 0 87 1; #X connect 59 0 78 0; #X connect 59 0 86 0; #X connect 60 0 77 0; #X connect 61 0 60 0; #X connect 62 0 64 0; #X connect 63 0 65 0; #X connect 64 0 87 2; #X connect 65 0 87 3; #X connect 66 0 67 0; #X connect 67 0 87 4; #X connect 68 0 69 0; #X connect 69 0 87 5; #X connect 70 0 71 0; #X connect 71 0 87 6; #X connect
Re: [PD] Fwd: random routing of 8 audio-streams to 8 outputs
you could use jmmmp/matrixctrl as a gui for it, with the OR mode turned on. On Tue, 2021-10-05 at 00:08 +0200, Simon Iten wrote: is there a somewhat elegant way to route 8 audio outputs (from readsf~) to 8 dac~ outputs randomly (on a bang for example)? You could use [mtx_*~ 8 8] from iemmatrix for the signal routing part. For feeding it, you could send '8' to [mtx_randperm] which creates an 8x8 matrix that maps each input randomly to exactly one output. Roman ___ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list -- Manteuffelstr. 19 10997 Berlin (Deutschland) Tel +49 30 74921288 | Mob +49 176 98476769 jmmmp...@gmail.com | skype: jmmmpjmmmp https://www.facebook.com/jmmmpais ___ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Re: [PD] Fwd: random routing of 8 audio-streams to 8 outputs
On Tue, 2021-10-05 at 00:08 +0200, Simon Iten wrote: > > > > is there a somewhat elegant way to route 8 audio outputs (from > readsf~) to 8 dac~ outputs randomly (on a bang for example)? You could use [mtx_*~ 8 8] from iemmatrix for the signal routing part. For feeding it, you could send '8' to [mtx_randperm] which creates an 8x8 matrix that maps each input randomly to exactly one output. Roman signature.asc Description: This is a digitally signed message part ___ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
[PD] Fwd: random routing of 8 audio-streams to 8 outputs
is there a somewhat elegant way to route 8 audio outputs (from readsf~) to 8 dac~ outputs randomly (on a bang for example)? i.e. out1 to dac4, out2 to dac7 etc. each output is allowed to one dac~ channel only. mathematically speaking that would be 8! 8x7x6x5x4x3x2x1 (40320) possibilites, but i don’t see an easy way to program this in puredata. some way of dynamic patching maybe? or a throw~ and catch~ approach? i get stuck on the random logic, since every “step” that chooses a destinations changes the subsequent outputs that are still allowed to be chosen. ___ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list