Re: [PD] Fwd: random routing of 8 audio-streams to 8 outputs

2021-10-07 Thread Dan Wilcox
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

2021-10-05 Thread Lorenzo Sutton
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

2021-10-04 Thread João Pais

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

2021-10-04 Thread Roman Haefeli
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

2021-10-04 Thread Simon Iten
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