@ingox Thanks for the explanations. I think that helps.
I think something is just wrong with this particular patch. I opened a few other patches and they worked ok and did do multi threading.
This one particular patch doesn't and it also has stack overflow problems. I have a feeling it's because it has stuff from older librairies when I made it and it's using newer libraries now, so things are a little messed up.
Anyway, I'm gonna say this one is solved and just trash this patch , or update it.
I had been using an Raspberry Pi 4 with 4 gigs of Ram for 3 or 4 months and it was working really great. One thing I noticed about it, which was different from every other Pi i've used was it seemed like it was doing multi-threading on it's own.
I would put " htop" in the terminal and I could see the different processors workload changing, increasing, decreasing, etc.
I upgraded to a Pi 4 with 8 gigs of Ram. One of the Pure Data pieces I was able to play pretty easily on the other pi with 4 gigs I am having a hard time doing on the Pi that is 8 gigs of Ram. I ran htop in the terminal and I was surprised that it's not multi threading. I had one processor doing almost all the work, and I am getting Stack Overflow in the Pd terminal, and the audio will sound crappy and just cut out sometimes.
My question is should I increase the buffer size? Will this make it less likely to have a stack overflow?
Also, is there some setting I need to do to get the multi threading that I don't know about?
Thank you for the help in advance.
By the way, I accidentally corrupted my Pi 4, 4 gigs of ram disc image so I can't go back and look at it. I know, stupid mistake.
In my experience, I think the success of using Pd on a Raspberry Pi is heavily dependent on what disc image you use.
The best one I've found is the Patchbox OS from BLokas.
I used to just download a generic Raspian and had problems connecting midi controllers to Pd, with one it was absolutely impossible to update Pd, and there have been other problems. With a good disc image, preferably one designed to make music, or has Pd preinstalled, all these problems go away and you can just start using it.
That solution worked. This is great.
I had to replace the sfruit/list-shuffle to zl scramble,because the list-shuffle wasn't working for me. Other than that it worked fine.
it looks like what is happening is you are actually scrambling the order of the list itself, and the route object remains unchanged. If that's what's happening that's an interesting approach I didn't consider.
I have a route object has 12 outputs. It takes a list and sends each element to the corresponding outlet.
So it looks like this: [route 0 1 2 3 4 5 6 7 8 9 10 11 ]
what I want to do is scramble up these outlets randomly. So that element 5 might go to output 7, element 7 might go to outlet 2, etc. And I can reset it back to normal, so element 1 goes to outlet 1, element 2 goes to outlet 2, etc.
How would I do this?
In Max there is a router object where I can have 12 inputs and 12 outputs. I can use a matrix control object to route the inputs and outputs.
In the Else library there is a [router] object and a [mtx.ctl] object. But the router doesn’t work the same. You can choose which outlet you want, but not actually re-route things ( it seems).
I was thinking I could take a list [ 0 1 2 3 4 5 6 7 8 9 10 11 ( and send it to zl scramble, then send it to the route object, but that didn’t work either.
let me know if anyone has any ideas I can try for this.
I have a problem I've dealt with in max, using an "if" object. I always assumed there was one in Pd, but I can't find one.
I'm trying to resolve this with regular vanilla type objects, but the solution is escaping me.
I have 5 number boxes, each one is sending mostly 0. When a non-zero number comes from one of the number boxes I want that to be output, and all the zeros be ignored.
In Max, in my "if" object I have this:
[if ($i1 == 0) && ($i2 == 0) && ($i3 == 0) && ($i4 == 0) && ($i5 == 0) then zero else out2 $i1 $i2 $i3 $i4 $i5]
The object has 5 inlets and two outlets, one for zeros and one for all the other values.
I guess I could do this with a [sel 0] object and take the right outlet, to filter out all the zeros. But just curious if there is a more elegant way someone can think of.
Hey @seb-harmonik.ar and anyone else following this thread.
Just wanted to update you. I found a way way easier way to have a drum sequencer, store beat patterns, etc.
In the else library there is an object called drum.seq. Wow. it just made my life a lot easier. I think its pretty amazing does what I've been trying to figure out here with barely any objects and no text files.
Thank you everyone for the help with this issue!
@emviveros Hey. This tutorial worked for me. The only thing that didn't work was step 3.
I had to leave out the link to msp.ucsp.edu. etc.
I intalled everything else. They I went to the site on a browser and downloaded the file. Then I moved it to /home/pi/src then I did all the other steps, and pd opened.
In some crazy way I made a desktop file that opens to Pd, but I sort of did it on accident. Anyway thank you again for this great tutorial and now I am up to date.