Patch veeery slow to behave smoothly
I have something like 280 loadbangs in my patch, and i thing this is the reason why it starts reacting properly after more than 60000 milliseconds. Which I know you know is a minute ;-)
I wish to have just onebang which drives sequentially the other ones,as i read this could speed up performance.
But If everything was in the same window, no problem: just a [t b b b b b b etc.] would have done it. But what if I have multiple subpatchers (so no direct patchords)? I don’t know what’s the best way to efficiently do that.
Ah… and I *hope* the slowdown is a loading issue and not another one…: 280 loadbangs to trigger in order is not a very fun game ;-)
In my biggest patch, I adopted a scheme that works pretty well for me.
In the upper left corner of my top-level patch, I have a sub-patcher
that receives a loadbang, and starts a process of counting to 100,
driven by a metro. I distribute this value via [s LoadPercent]. Then
in all my abstractions, bpatchers, and subpatchers, I have an [r
LoadPercent] and fire off my local initialization when the LoadPercent
exceeds some threshold.
This way I can determine the order in which things get initialized,
across a giant, sprawling, patch.
It adds a little time to my startup, but everything always starts up
in the proper order.
looks like a lot of different [>] made one by one, if I get it right
They probably don’t all need to be at different times, but yeah.
My implementation of Chris Muirs suggestion:
Save abstraction as "loadpercent.maxpat":
-- Pasted Max Patch, click to expand. --Copy all of the following text. Then, in Max, select New From Clipboard.----------begin_max5_patcher---------- 354.3ocoSErSCCCC8b6WQT3ZYpYZsSvGBWPnozFyVlRSpZRGCl1+NMNsiNnC FvEKYmme9Y+ZODGQKL6AKkbO4QRTzg3nHrjuPTedDshuuTwsHLpFdwTrklDd xA6cXYKnH2vFJaZcJv4dsFBTSK350zDBkRdpGhTf80w0s4Cs8rQ6z7JrI5CP ifq4CuUyckaj50qZfRWfUV1rzDxhPbtOxtaV5oInaqj5NYf5d9nQXkugifk1 0yIrAMG.6KdLN1GRtx6Rnc5W2trebCVl6iyyFhSuArIk5vBTZpp.cvKn+A4e AasgnLbQMzT1Q9pcbUKbQOdRuk8u7V1RLhF02Xto+FykM55fzQUR8m+G.Uju 94mLqos6Rzuu8qG4CQI.qSp4NoQOBS9YX1HEBPOV0BokWn.7lkNo0cspI+JT S1eTMgSEutdGzX6oDER22QaMM9z7DLUpCoHizFXmb.+hXOaGieGaJgv. -----------end_max5_patcher-----------
The loadpercent sender patch:
-- Pasted Max Patch, click to expand. --Copy all of the following text. Then, in Max, select New From Clipboard.----------begin_max5_patcher---------- 1020.3oc0Z01aaCBD9yI+Jrrz9xTVDfA+x9gruLMU4DyRoxFGYS55V09uOdw NIsK1gfSbcpTIEaBb2yycG2A804y7WU9Bs126qde2a1rWmOal9QpGLqo+L+h zWVmmVqGlOm9qxUO4uv7JA8Eg9w4koYEz5ZOHn8ck6D4Tg32aol42226GMuh ko+RxI5K3v1w+yRtfmVnGs+2nUYo7z12sMUr9QFeyCUz0ByzAQIKAK7zMQXU KT926WB9tBFWt9ZoFdzRTy9idIf.42Y+XMBqYvpG924yUMKrDUVWVTP4h+CV DrBpGi6USWWxyp8Dkx0E7I+SfCDWwgHMDfwKIRH.mbEQBfCHgbFVQq5zFfo. IO+Uo7Mm1b.MLyACLP.1gBaSqjqffV8.kmtJWuVfKAgPtfPm1C5y845nfsSB W.GgqPicBhnfqff9gKzs18Y0Ngnj2o12o0RPPOpX.JVoVnHsw.Zea+lDCWY5 IB4VZ0ZYXBUL.GTVribcKPX9HA0OYClrjMrOcDDMUIahKbsqgAawAPn5i3v6 TtFkziNhLp0TjqQDG3ZWig2fCvX78MWG0mNFRlrAwQNnqwtx0Fb.Fhtu4ZRe 5HFOYig6fp5ZgMMv.DC0k1jbuR039zQTvj0s1AU00cqafAHLYRP08fNZc+hA Fnyg6H6qsmDNQqsmwYBVZtZIOglG4ZgY3iJiM7CtXdW88Or0XmbafoMts8Cx yW3A7.m6zJ5p5anqg3SLA7HZtNDdEYYz0DZXdLmgFxf77Q.cfwX7zDZpo4mu F9EcbhmP7vrZZNnqnq3Y1bMgFui1L8gmSy2cxvifAYdD.L9LP388oclLLmDS 1S2iG1oLMK2C6FMHTKVGYIgLMirrtbGWbdKp1e6BhBGDDAihMmNLXYf5mv9P JxkfTXGPJQ4lM4zK9nwImWMMocaa0G84+byxOQtfUktcdwvgYCXtIova0UCn mN+bF+8W+nVhTO+sfUc4N4VJM5b6wl4cPpxn0BFOUvj4qdXPpyQ7nA8HKKix Ol3xX0JtLq6M.rUdT06ed4gLdxCxF4AOZxiJiPYT+9kG3HJOXKvGX3nIO1X9 .GOyGnMxiZLA8HNErrskx.zMt3IIppZQl7XgjjkAQmnOLzjZqLLRauChwUS+ hrvZ7bp2UDssDrGGtGaC2iQim7XSnd3aHzap3XSj02Iy2R4IvlHYpqJejjGh kr0HgN1vVAim7ntBnyuubz3En2F4ANdN6Pa3qwCdhrPZFuckSrgq.iaRBvAh NuKIA08doxJH1jUPj9BOeaOHPWaRf4e4MPxMIAAnMgwbs7BS0Ooa29LsptYJ 0RhrnvmJqTcCWn6x3lt5Yzuh9Lqc7xZoky1em+Of5BT4k -----------end_max5_patcher-----------
how did you know how to use patches attributes like – sel #1? is it discussed in some help file?
#1 is not strictly speaking an attribute, but rather an argument.
See Max Basic Tutorial 15 – Abstractions
thanks! thats great!
I implemented something very close to this, but I ran into a stumbling block.
Because I was having problems with pattr binds not being found, I decided to wait till the whole patch is done to load them. So I made a binding abstraction. Problem is, whatever percent I put this abstraction at, all instances fire at the same time. I’d like to space them out, because it’s several minutes before they all get themselves sorted out. But I’d rather not send each one a bang order externally.
I’m thinking there might be a way with a global variable that each instance can change? Maybe the first one to trigger at X% sets % back to x-1%….. thinking out loud here. (then it would have to flag itself as loaded the next time the % hit, I guess….)
I guess I can always embed bang% as an argument to the abstraction. Probably easier in the long run, and more precise. But in my case, I just need some things (pattrs/poly) in place before the binds, and some things to wait until they are done. I don’t think the actual order of the binds matters.
Forums > MaxMSP