Help me with my max noobness!

  • Ive recently became max obsessed and im working on a 'performance' suite for myself.

    Ive made this app which saves the midi cc's from my nord modular using the nord ctrl snapshot feature, i can then twiddle and send the original cc back to the synth.

    The patch recieves CC 101-118 on channels 1,2,3,4. Ive organised this through patchers for the ins and outs.

    This has taken me hours and i beleive there is a much easier way to do this?

    Can you guys take a look and advise?

    It would be much appreciated.

    Dean


    EDIT: it wont let me upload...how do you guys copy the patches as text?

  • It was too large to post :( but ive pasted it into a text file :)

  • I'll check later tonight, but I'm guessing you need to read a quick "encapsulation" tutorial. It will shave months off of your development time.


    Quick example...

    Go here:
    http://post.monome.org/comments.php?DiscussionID=3319&page=1#Item_19

    download "brcMorpher_v0.21.zip"

    open that, and look at "ccKnob.maxpat"

    It looks like a subpatch, right? inlets up top, outlets at bottom. Nothing too crazy. But it's a separate file. Any other files in that directory can use it as a max object -- just add [ccKnob] and it's there.

    but, there is one thing in there you might not have seen before: "#1". What's that all about?

    well, it's the first argument. If you add [ccKnob 7], you'll create an instance of ccKnob where every #1 is replaced by 7. In fact, if you double-click on it, that's exactly what will open. Add [ccKnob 8], and there's an 8 version right next to it. Now, here's the important bit: if you edit and save ccKnob.maxpat, both of those will be updated automatically.

    So then, I think there's a "topRows.maxpat" you can open, and it's a bunch of [ccKnob]s. And a few other configurations. That's brought in as [topRows].

    The idea being that I'd have interchangeable panels that I can swap out for controlling different hardware.

    If I actually needed parts of these patches to be visible, I would make them default to presentation mode, and load them as [bpatcher @name ccKnob 8] or something along those lines.

    So, yeah... go explore that idea. I bet you can delete 90% of your project.

  • Thanks for chipping in man, this sound exactly what I need! In some ways the hours spent haven't been wasted, I've gained knowledge about about so many objects etc! I'll check this out tomorrow, thanks a bunch!

  • if looking to do things quickly, you can try scripting languages within max like javascript, python, etc. or if you're sometimes a max purist for no reason, like me, you can also automate creation with 'thispatcher' like so:

    ----------begin_max5_patcher----------
    1010.3oc4YssaZCCF9Z3ovJkcyFk4S4f21M6EXR65oooPvsjUHAkX55ZUe2m
    iMAnoIASRHKZSHbHFi82+m+O7EySiGYMO9AdpE3CfuAFM5owiFo5JqiQ6tej
    0Z+GBV4mpFlUP7507Hg0T82I3OHT8+oMI7zTfXYnrIF3uUDGjv8E77QFsccX
    zJtPMMnccdSbjHM7QtpO7L3gwFuUjOX3QCNxesZvVeNIzeU9buwWDrLL51ej
    vCDZqwyiJmN.FQxtfrgp6jsfuu6GEtPMQwy+40DBxJqymGONqYpgbwZoE6eK
    +UbQZPR3FAHHNJRhGvDTfXE.B13embw.SbJkRvkQInY1Lajmao7RNIp6R76M
    bsoaYs2FOOJio3JplqPtZlyqbJC65zDJKh+K4u9UL16jaMlyJU4nTIgDJcXa
    FmvTKFffUjAgVmWD11sCojqAngLifcfZhYlcMLBwqScRPvgoWhDWTMan3FJp
    V2DDqCIk2.XCZ2DOjAtIxs0+8CbxcRv1NmlRPdnNjRdKvdfG3.MHaBhR5PN4
    8Cz.m8tItdlPI3KnvEEojIYAlqgYfpbgAcU4cwLkjEGVcJWPvtLzR.Vk8p8p
    bIUxIS28tUp5HtpDwTm5JMgZVh34aEh3nZo.C2+m6Gc6A6rLqwQa.n8JwpSO
    1+EhOXT1wkUX0RIzNspxfkR1oZGpu3VKkzkEU19XnLuS64DRsAHSObs4bTdj
    jlcpOu.F2gbzF+f6jUTfRMIxFTEEUb5DWnVlyjpJAizmgP054u.kfkb2B9M9
    aWke7ASvfIDf7SgQfITvD6gZoXcNYJjcTd5JODgNP2+89I6Am9DVJwiS6vch
    WkW.y6uoinlLscUQmdRZrNsfMpbmFomQsa3oPqiT+ZFLs0UkpR3Z9RlefhYe
    SSL.EdKyYHW8Zo1Vi29pzrQN41aMVMtqr5pTitLLUgPdR6UjhqUQZSyrhm4J
    8Nr0mQhSspU1WHM0+9709pujs5uvNAVeLq4pul0xiVn6A78inU0raIycV7vt
    USRV+ujqSi2lDjuj4O64TvATtfmJBi7EgRcuGFU1Q6b7nVFtXAO5X+s0gK1D
    KKZuCFu.jSOaTUb8pBUxAgMGTxGPhjEASjhBjWXT41Ciwbc10UaAsqiAf1qW
    IRkP1SSjEPd+fJzIPU1yy1+nBeJtB1yQBFr+UbW9hyTdHSCOsO+vSo2nJ7j4
    r+t1RhTSgKo+1Xwl3r0uQ.Y+QOFRTn9CTFUfp.xu7fxyDT0ywkl4SQNyRPLn
    9nZsUZZXXz96ZaZDJ1jjaETnbwIQyJYRFfYbKRnCB+shPeXDDP64Dql3Rg6Y
    4NnAmbULb3of11n.uVfI4MOO9O7lqWsH
    -----------end_max5_patcher-----------

    Hope that helps.

  • Yeah, my 90% guess was more based on tearing apart other apps (see early versions of "raptor"); I haven't opened dean's yet.

    I should add that what I've done in "ccKnob" is specific to my app's needs; you'd want to make one that plays into yours. (I'm not offering it up as a generic catch-all solution, 'cause it's not) But that's the gereral methodology. Like I said, cycling74's got tutorials for you - the keyword you're searching for is "abstraction".

  • its funny - i had two people in mind that i wanted to reply to this thread and they both have! haha.

    thanks guys. will look at all this after work for sure

  • haha yes!

    and now we're three.

  • Don't be fooled. Raja's the batman.

  • ...and also the martian manhunter.

  • "Raja's the batman."

    no, gimme a nice sidecar or mule in exchange for batman's responsibilities any day >:D

    "...and also the martian manhunter"

    i plead the fifth!