karaokaze is always up for a challenge.

  • So I've been stuck for a while w/ a certain aspect of my patch and I've kind of lost steam on the project as a result. I've tried several times over the last few weeks to attack it, but to no avail. So....I think its time to ask for help.

    We're dealing with Stretta's monosequencer (maxforlive) which has a bank of Presets. My controller is coming along great. As long as I stay on Preset 1. :)

    There are several live.step objects. Essentially, each live.step represents a row on the monome and I have everything set up really nicely on preset 1, but as soon as I recall data from another preset, my monome feedback goes down the toilet.

    Would anyone be kind enough and willing to take a peek inside the patch and nudge me in the right direction? UNfortuneatly I can't paste the max code here..it told me my post was something like 126,000 characters too long :P

    http://monome.org/community/uploads/FileUpload/eb/d11c5fb1c2fe2bbdbe74a187297cac.zip

    *--patch details--*

    I believe the main storage of the patch is handled with [dict ---mseq] Which you can find within the main patcher (middle-right hand side of the patch)

    All monome stuff is within grid-behavior.maxpat. That bpatcher is located at the top of the main patch. Look for serialosc as a landmark. Once inside grid-behavior: there is a patcher called [p rows] which contains all monome row behavior.

    I have been looking at row 8 as a start. This row represents all the on/off 'steps' within the sequencer. This is where once switched to another Preset, my grid functionality breaks.

    For initial grid behavior I'm already using pattrstorage/autopattr catchnames technique.

    My gap in know-how lies in how exactly to make the existing dict ---mseq Pattern recall of the Mono Sequencer jive with how my Row 8 monome data is recalled when I switch presets.

  • I can provide some more direction...it would have made sense for me to do so in the first post, sorry. As for the commenting, there is more once you dive a little further into the monome stuff that I've added.

    I believe the main storage of the patch is handled with [dict ---mseq] Which you can find within the main patcher (middle-right hand side of the patch)

    All monome stuff is within grid-behavior.maxpat. That bpatcher is located at the top of the main patch. Look for serialosc as a landmark. Once inside grid-behavior: there is a patcher called [p rows] which contains all monome row behavior.

    I have been looking at row 8 as a start. This row represents all the on/off 'steps' within the sequencer. This is where once switched to another Preset, my grid functionality breaks.

    For initial grid behavior I'm already using pattrstorage/autopattr catchnames technique.

    My gap in know-how lies in how exactly to make the existing dict ---mseq Pattern recall of the Mono Sequencer jive with how my Row 8 monome data is recalled when I switch presets.

    Let me know if I can provide any other info...I appreciate the assistance!

  • I feel like I know a little bit more.

    I'm dealing with the live.step object and it's easy to send it a 'get extra1' message and get a dump of the current step data.

    The only technique that seems feasible to me (probably because of my lack of knowledge with storage and data recall) is

    -> Waiting until the preset is changed, the right data gets populated in the live.step object

    -> Poll live.step with the 'get extra1', and use the return data to send my monome row press/led values.

  • I don't think you've misunderstood my problem at all, like you said this patch is a beast. hacking away at this thing has been like a cross between decoding the rosetta stone and flying in the tardis. I'll pursue using the live.step object to get my row values.

    Lastly, no. I is totally dumb when it comes to preset stuff...

    So I should leave the auttopattr catchnames in each row# subpatcher, but just have 1 pattrstorage outside of that or do I need to have 8 of those outside? Below is the configuration I have now inside of each row subpatcher.


    ----------begin_max5_patcher----------
    832.3ocyXtsaiBCDF9ZxSABsWlMBCXCs2s6qwpUQFvahi3PjwIM6V0280dLm
    ZaHIkBQ8hBhAGyLe9elwtOuvxIt7Dqxw9Q6eYaY87BKKvj1fU8yVN4zSIYzJ
    XXNErmJi24rz7JI6jDLmwOxVI2xqRYG4Irl2+mxBYE+eL8XPtqbqMWbHmWjw
    jvTh5LVdP1X0u15dpLYKuXyZAKQZbzn.rZlr8wg5agOnuhhV4Z+65eiYZj+c
    Oy7CbhoEabVZ6vKjM2ZGLOEB.UP8c+P29NdAMGl.meH3zL6eVlk5ne6KKVnu
    r7yQLoMxN9rbx6ivIuqxo.DAvUf9pm6k3TMe.bcN.4ghFFPigM4rpJ5F16fi
    fQSseZKc0tpxhOBj7NKjPW.RDsrzFi.YTD95hoySlv6DYdRvkrYkHj.PoP7L
    YYjwRjH2okHCjGAZ14DGd9f.I.zI9dqv2RVzYKufmXhDePJ6ROtghEWJLQAl
    7fvlxDWKLGrJgO1aLQSRYdNqawrcAtRVJXO1RNwlXs4tlIiu1o6EvgKPffG.
    4ev6wQek9ztpNDGTNGMK6dCh.S0.rKxzK4RfvGim3T9C4wLwr1jL.2u9O18y
    2jTsujKPgVOQnrKYh0rBZbFLB2ulDh3GZHDYxHDw89QngZjBkUr+F5tz7fXR
    hBFYuTeBZN6kdjJZmR0ltdGpTAlTn4khi18Fv3kaWGYjPyVwbuA81.Ly65hL
    5AsJ.jBMQ+q1xYE8HKcsZ5Tt2ZME3pdtlCLY0hVKmjLtphc+pJpRkveHcHDP
    ZbvAj0Murlw8lHDx0yLWHRHvCrBDvvgk7lEd3CnNEVwaOMGPXs8WqFpJOHRZ
    3W6Yer6fbphJ7BpjqfQ2nfC.zaTa4oorh9sPR4U5vJc3z0a1izh9q5Qvx7cy
    itEFAaySc3t6hGo60LALJmmtuTU1tpoo3C5s4hifaDyldgm59RSXL3cyT8Ns
    Niuo042nOmSOBNL0WpbA3.uSuxKhTq7fp+sJObux+SXLflmXP0mG7Z+Wk83O
    KYOlX.cs51gistsowBc+9iLQU8jBNiZCE6JE5GIKgG4ElGgd6pSqbj2Ld3+k
    mCUnZ0KUc1NT2r8TDQs2E024kE+GWkFtfA
    -----------end_max5_patcher-----------




  • ----------begin_max5_patcher----------
    2261.3oc6bstiihqD92oeJrhVoLsTl9fM2Bi1+b1WiViZ4.NIdFBNBbRlYWs
    u6a4Kj.cHWnCgcVIj1oIXLlhu5xWUVE6e8znwyE+fULF8EzqnQi9qmFMROjZ
    fQ1yGMdM8GwozB8zFGKVulkIGO0bMI6GR83+9mKXRDMCwyR363IaooHw7uwh
    knEhbzFpTlC+XOMOAIEnBVl93Bddg7SaK3YKQSTCNAslUTPWxP64xUpEjlub
    q5QhDKPxUrxUMitF9c9T3ABCyKPwzB6MUrcN77hWwxKlVNcXfUOOUs.Y1GNr
    TkOJ4pbw1kqpKk6WwiWgrmUf3Rk7ptqhMrX9BNKwt1uTBFo7LVrXalFQ7sCt
    PjIK3+ISMFl7hic3rsq4YoLoFUw1A0RM.EukCKqQq3GEB2CxyAqN353nND5+
    hC5qGWIwVY4RUt97DsZAjvOSviqHKJbSeo+eNmlNVcg+9omT+Y5cZB3+LJNk
    G+cMHMYIHPRQNKYGMcK6nZcNKUrGzqInTg36Gf9UvfZ0X47xYfAUA5aaKjvh
    kySvSPF6D6LJf4SkHPZ.6fsRisgFHTVJZUoR.z5WkxBzdSppfm7o2ogSnRJZ
    NU8BHzlWkJ3hme4kWPzTPvUOek8LXhoEO0SxHo+uJF9w.NmKRUW0tBn4+zNQ
    Dnulyxa1nwsaLZlEnrRvtZiEe+HsEzrVYy3zO1LdOiRYzcJX80MH7WQhMfC5
    dv0kg9oXK3TqbWYf22TT7JZl1YkYTUZGevIlJy4+HVlm9oDQ1DIZuHO+mH5b
    kQgxBPs3f2KcIkmM0XjwsFVpHQJKOpcwetQsBoK0JQ9ZGYiasqWaTJ3n9Qo3
    9rF2XFGL.lq5LMonzPtHUHQDiC83tDhB8p.QDmVAQy5GHh7LJImtGUnh9XsF
    szCGsGUPm1ptSQGeWM5X.oVhNg8C5fAzQrcdJ6yFBAQlMzaY.48qnSrLA5jA
    ziHASqb1RdgD79S5TLykn+af+G.yB5GLSk.kh0aA7xmECFUh3iYNcfHS.ApX
    JDEhscfGLk+8SIbUTVF9RcDOchQ04+zAWWwR2XhzZ4rNkY6SmlRW4jWjKVCA
    OsYDEWKxfgm64GZxQ91rhzLbDEEWaSNB60sp2L1dXYOQ69monLPAbHSLiPI+
    4Fl4MY73ov+NH12BtPNOt34FXRZzbH5JV8jFfE2tEVr1pmfK5Tw+sK.KcFjD
    ZBADFcLFJ97oDga.RH8hkhDA4OB4DkiRunwhdNs2pAeUqFWeOSZiWwpwsAHB
    2KPDTwfTEpjBEoky0+LFxN+x9VS+H9XW.sbIQFlESt1lCW.t7Z.tb5E3pZP+
    NxQ6RwjwlBVciJCFeQXoAGsn9AUf5BjcTRFDrwVv0qLo91lkwr9Iba8bDP1c
    I4KeQWeMh73CCShzbzXSXXbXP6iCG9HMO1QyOrjVz4U2udpwCxqMlNNW.PHF
    .QWpN4CTwykROs5ikkaAAKJ.2.OksikWvEYUf5Qioa1TY3QUtEEz8MQdkL3T
    CwyLCgOLTNaGu79iLCBJjmJu3gPE5W5Hs6RfmiYWJp7xCptkoh3uyRp7tOZb
    BaQaVC0NJbb95YT6O0mIOSmCaljJsu.Uetzsox2ZViW+5KnwrydyMpkFMV4D
    JxTBQs6TMb4i6UDVGPE6WUt0yHitogaVJDoyo4J0ATNVM0L3VPy3P0pLI2HO
    DmC2GesI9X00hkQg0XUQLj4eZskxbkcMbkDvRHlsmmHWoWqinUscdtpMVUG1
    ZieIG2SbdoakBnlRupW+f6q5hZVQTSS61xe3BN+mk63rAA70ImRLkohwtuOL
    v4ym3jMta76DulM1LNhZtfJPcEr1XU4YcZlp+OzWObYcP15+xDx8inIOtiIm
    SaZjkKoiR4ERk9QerFrEKR2tNynFB9fJHakklvyl7iIduS8jK1exR0XcVmjF
    33Fvxid2pBmsNJVEPYrzwEzcrj2L0j+lxdlOGxLt38A5gfnyooVVfCX5g3NM
    Fu5QEj6ZAQOCotEZ5btcRSb6tcD2NNhbeb69Cb6Cb6Cb6mga28131cG31aja
    28WHtc2At8At8tlaG2D2Noq318CtOtcuAt8At8At8yvsStMtcx.2dib6jeg3
    1ICb6Cb6cL2dCD63thXm3beD63Ah8Ah8Ah8yPriuMhc7.wdiD6XqQmlXG9aX
    4OvDyu92kqGOv0Ov02IsmQJeG6EUmKZBXc1NSXNMaoxlR2LGlCM2qBNsuen7
    vF2d8AaGKLqM8Cka3E5vGzeHRS5zFGCileVbxhOZ3pyZXLK.Qv2TauPZ5SSo
    mZ7ESyhsh9x2JfjHd7canY2gHdZhiY9suKWHg8Dxn6ftGOhfCmYRn1zigef9
    9gLqeZWtJsEVidQcVqPYZZLhodCHSC+11nbt9cLh.LSxK3dTO3ws2bblBpN9
    4bz92SRW1o85jr9RG05eXy2gA17Y834z95EI8y2WfoGY6pWayKJdlNxeIOYa
    dqc886XuY8maP+x+YhhEYZobm1S+45G9edPf3Z5k9nfOLJD3zSerA5Ops93q
    MnL1tmoU58ZOama.tu5yUHsnl6Y7JesVO99FurGpcra+1GgmHfb88d6FqGy9
    tWsg+C.BZOOHcNnDUHtO4X4ewobHja0HClY56A0m6hqLyMzbPpjr72LaQSsR
    yzWjmwkqEIlqbZYU5kpZ8lkZeMjpFutMPgXadboxp7azPsMAV3HgUH4YG1as
    WOzB9ni.+JdRRsswZ7ZdxFADMoVMumXP1JQhbEQR842zmxDDSB4dMYB2+3jy
    0jI29Ulb6dyIuPeUxvdlceymDb3r6UXI2..1VgExAx+v+CZnTXUmcmBqNZ10
    U2NsSbUeuA9pxMz0a35d7r6TbCuAg88uROZiyaCBm0qxjdKOtpGit7+dWp5b
    8mGjOnpr1.W8Aism9r6UdCeLxafuQBMe1Zkxq+c6Lq27htWdwyB0RXTPU7Uc
    18543eaxa+R.p1HfaPp7c5Yo5gD6y2ZJFUy0I59UsAN2LHh6wP03eEIPBuEr
    58AOamTAm72O8Or07PhC
    -----------end_max5_patcher-----------



  • Something definitely weird going on with with my attachment showing up -- i could see it when I edited my post but not when viewing the thread. Anyway, I re-uploaded it now and it looks ok. http://monome.org/community/discussion/16318/new-controller-app-for-mono-sequencer-maxforlive#Item_1

    Excellent little autopattr/pattrstorage tutorial patch, thanks man! I took some time yesterday, did some reading, and I have a much better understanding of what's going on now. I'm going to take a crack at your suggestions as well as some other things on the grid side that I've been re-inspired to hash out.

    I also need to get back to the Arc side -- If I can work out some cool way to utilize the Arc for live.step data entry this thing will be a bit more powerful as a monome controller.

  • @karaokaze I'm trying to tackle the first task of replacing unnecessary matrixcntrl objects which I think is actually all of them (considering i'm not really using the objects for any UI) all they basically do is visually represent button presses and lights within the patch.

    I can populate a monome row with /grid/led/row but I'm wondering how I can easily/efficiently turn the values live.step is sending..for example: 1 0 1 1 1 0 1 1 0 0 0 0 1 1 1 0 into numbers that serialosc will like: 0 0 255 255

    I could send 16 separate /grid/led/set messages, I suppose. There's got to be a better way!

  • somethin like this:


    ----------begin_max5_patcher----------
    884.3oc0Y00aaBCE84jeEVn81RS8mPXpureGSUSjfG0a7kBNpcsp+2G1PZSa
    IjKjL2DEIP13XN2y8dt9ZySSm3sr3AYkG5aneflL4ooSlX6xzwj11S7xhdXU
    ZTkcXdqJxxj4ZuYMOSKePa6+lqJ1nK27xCJizqtSkm7y0xU5lW.mxmimg3Dh
    4lPXtRwywnaa+O4axpmjTo19pvs8phsufhk+9JVv1o+WE45J0iRyiHz43WmA
    U91IfryXyixri066qUQodlG77zolKyNZCWke.6NLzXpDN0Z99ivt8+7r6LYU
    UTh7C1ckTiv8X0zvFGL25sYAVJXwdsZRGVsX6z2LN8eKkMysm2KyBDBgdRIj
    b480n6C7wUHROrAy2R.LKDQL5bQuw.cwF78xFp5vxyOBobsrTlGitNYsJ95T
    Y70qKtGg6MngispCleqhgc.sRW7D8DE03NYzWHGlRHKr2ZXjApiHmk5n2wHc
    kBgE1rfAcGFXf1N9RJGRYzePJjBf.gaWJUvGt9fFdIwHZTJZYuoLXrljDDXq
    tx5fQB1OiLC4sLJOwbevYYItffRhzRDEAHCBCCKlg1AC42KC8YF2nKRRRkG1
    5ouFYLXEi.1Juu04eJ0.K6MmPqBfIXfpsnC+KYwdsvy6n+nUq1jAfZBB.kbn
    CmOI3zU1EyETxM2.fOX3wVFJAegUFpFQfndngiV8zeDxYq14wTT0lk8uqkVt
    IvFtHvCekCNYLqbPlKBEjEAepkc.fXH9zwFzz+JpmmQLeERYFz.9XysHtvRs
    TqfRVWroDs.PnxB6dY7Yin5qy1hu12lZI0aymX+gau17qsO.rU69b8GwwF41
    c6ZmRuTU96OFUqwY5+s7WUwl0q1BnsYHQuZdwxJsJORqJx2YPAuYL2ohik46
    dVgYp3xhZQRKFP21oyDJjLkCV6m5GRlBi1YPNASXHXxc7T.DHgcJjD.fjY2b
    NDRTHXR31.bLDO2B2ho.ntN2I57g.I2xR.PjaCu8AjqjQFFjXh1i5r8ClIL0
    RYacjfkAg+ntULxn.vj4bbcXfu4PROLlbanOEjZLz8Xh.ASDmtp7AEjb2Fhy
    gVofCCwgrdCm31vIH9tgldpMYJkiMYQaSlZacrnEhdLv8DH8PA+Ck.8CsTFy
    2by7YD115XkEh+C0z2hOVPyMN8kVuAs0Mdd5+XhYtuI
    -----------end_max5_patcher-----------


    (edit: could be made more efficient(ex: don't need 'pak', could use 'pack' for just one single message at the right time(using 'sel 1' on the toggle ...er somen like that...))... and for 256 you may need to add for x y offsets...)

  • Wow, that rocks. Thanks sir.