karma

karma~ is a looper/sampler external for Max. It is a dynamic length, varispeed looper with some complex features that are explained in detail in the accompanying help file.

Here is a tutorial video showing some of what karma~ can do:

The feature set and functionality was something I conceived (and implemented a cruder version of) in The Party Van. The karma~ external has the same core functionality but super charged, lean & mean, and elegant as shit. It is used extensively in my xbox controller patch, Cut Glove. karma~ was lovingly coded by raja, and I can’t thank him enough for taking the project on!

You can download the compiled object (for 32/64bit Mac and 32/64bit Win) as well as the source code here (1.0).

You can follow the github repo here : https://github.com/rconstanzo/karma

You can read about the background of karma~ by clicking here.

The linear interpolation used in the recording stage of karma~ is based on ipoke~ by Pierre Alexandre Tremblay.

30 Comments

  • just i need ,thanks!

  • I have a project… now I think have the where-with-all. In return for your Karma~, I send you love and good wishes. Thank you. S.XX

    • You’re welcome!

  • Hey Rodrigo,

    Thanks for all the work you’ve put into this, I know ’cause I’ve been following it’s evolution for a while now on the forums. I love how seamless and not clicky it is. I gave my own shot at a Max looper here (http://www.maxforlive.com/library/device/1440/timestretch-looper) before groove~ had timestretching. Thought you might like to see it. Of course, the most awesomest thing would be if karma~ did time/pitch shifting, but that’s a whole world of mess so I understand if you don’t want to go there :)

    Best,
    Jesse

    • Glad you dig it!
      Yeah that’s something we talked about a bit, especially since Max7 came out in the middle of the karma~ dev process. There’s some long/complicated reasons why it wouldn’t be as well implemented as in the native groove~ algorithm (due to licenses), but perhaps at some point in the future karma~ might have a mono version of it or something. Don’t hold your breath though!

  • Really cool. I have a project that needs something like this. BTW, Max 7.1 has a package manager. You should submit this.

    • That’s good to hear!
      And one step ahead of you, I’ve submitted it as a package to c74, so it should show up in their thing soon enough (they are working through a backlog of people submitting packages).

  • Hello Rodrigo, I would like to move from my performance looper that I was programming over a year with the moebius looper (www.circularlabs.com) to max7. It is basically a copy of Time Exiles looper (https://www.youtube.com/watch?v=UGT1tZT9C1o). You see the concept of the looper within the first 5 seconds of the video.

    The looper is a dynamic looper who takes care that after recording the initial master loop where the BPM is calculated all following separate loops are a measure of the initial one. So you can hit record anytime and push play anytime and your loops are always in sync.

    So I have seen you Karma Patch which I would like to base my development on: Here are my questions and I hope you can give me your advice about it:

    – Is it possible that I have e.g. multiple instances of Karma running in parallel that run completely in sync with a master loop, the first one that was recorded (e.g. if i then would have a global control changing the speed of the master loop would all loops stay in sync ?)

    If this would be not possible I need to get down the path and start from scratch ;-)

    But was shocked to see how much code there is ( I saw over 1000 Lines of Code). If I compare my full fledged looper with yours (I have about 200 Lines of script code) I am questioning if I should go down the path with Max.

    My assumption before seeing Karma was: I would need to go down with the gen object as the other simple buffer objects can not get single sample accuracy.

    I would then just need to record the master loop sample (start stop), manage that is doesn’t click and then take care that all following loops are a measure of the master sample (be it 2, 4, 6,… times larger or smaller / my script code from Mobius is already available for this).

    I assume I am seeing this too simple ….

    Looking forward for your advice.

    Jo

    • Jo,

      Good to hear from you!
      Yeah that looks really great. Some of the ideas in karma~ were inspired by the Oberheim EDP I owned many years ago.

      Now karma~ does a lot of crazy things, but sync isn’t one of them. Since I don’t really make beat-oriented music, having multiple loopers in sync weren’t a priority for me at all. You can send messages to multiple karma~’s at once, but it wouldn’t be sample accurate. This is something that has been requested a bunch, so it might be revisited at some point, but at the moment, it’s not possible.

      You might be want to keep your eyes peeled on raja’s posts on the cycling74 forum (like this one https://cycling74.com/forums/topic/a-wee-share-ipoke-in-gen/) as he plans on making something similar to karma~ but in native gen~ code, allowing for sample accurate sync (something that’s important to how he approaches music).

      The last bit you mention is similar to the “Multiply” function of the EDP (and similar loopers), which I was looking at too, but it was also low priority. Again, might be revisited, but at the moment, it isn’t possible.

      Basically, there are some tools that were EDP clones already (Sooper-Looper), so I didn’t feel a need to recreate that. Instead, karma~ is based on dynamic/varispeed looping. Most of the code-based deals with that, as it’s quite complicated to do varispeed while recording (you have to either interpolate missing samples, or average/accumulate samples). Plus features like append and reverse-while-recording are quite esoteric (and complicated!).

      So your best bet might be to try the gen~-based version of ipoke~ (part of the core of karma) and try building out from that.

  • Thanks for your advise.

    BR

    Jo

  • Hallo Rodrigo, first of all thanks for this amazing object and video tutorial!
    I was wondering if it’s possible to use other buffers names rather than the ones you provided.
    I tried to do so, but then if I try to record something nothing is written into the buffer.
    So I guess there is something inside the object itself that brings a specific buffer name, isn’t it?
    Thanks a lot!

    • Hello!
      You can use any names you want, you just have to create a [buffer~] object with the name you want to use, AND then also create a [karma~] object with that name as well.

      For example:
      [buffer~ Laryssa 10000] + [karma~ Laryssa] will create a 10 second buffer, and assign that buffer to the karma~ object.

      Hope that helps/clarifies things.

  • Rodrigo,

    What a fantastic external! Thank you so much for creating this wonderful looper/sampler.

    I did have a question though. I’m a little confused about which version of karma~ to use. I’m on MacOS and my computer is 64bit. I read you readme about the difference between .mxo and .mxe as well as the information about the different versions. I’m not sure whether to use the (64) version or the (b) version. Along with this, there’s also a .mxo file outside all the folders (just named “karma~”, so I’m a little confused about which one of those to use.

    I’m a relatively new Max user, so I would tremendously appreciate your help with this Rodrigo.

    Best,

    Maks

    • Thanks!

      Either version will work fine for you. Basically the (b) version is the “(b)oth” version, so it works in 32 and 64bit. The (64) version is purely 64bit and will not work in 32bit Max. The .mxo that is just there loose is the (b) version, so one can just get up and running with that one. To double check karma~ always prints out which version is running to the Max console so you can see it there.

      (There are some small difference in the 64bit one that should make it work better in a purely 64bit environment, so if you’re only making patches for yourself, and you only ever use 64bit, that version would be the one to use).

      Cheers!

      Rodrigo

      • Rodrigo,

        Thanks for the quick reply!

        That makes sense. In that case, I’ll just delete everything in the “karma1.0” folder except “karma~.maxhelp,” “karma~.mxo,” (the one found outside of the folders) and “README.md.” This should work then.

        One other thing. You have many “multislider” objects layered on top of one “waveform~” object to create the visual. Is there a good way to reproduce this again and again? The easiest way that I have found is to copy your initial material, and then open the info panel of the “waveform~” object and change the name of the buffer it receives. This seems like it takes a little bit of time though so I wasn’t sure if there was a better way to do this.

        • Yup, that should do it. You don’t actually need the README.md either, though it may be handy to have for the links and stuff.

          As far as the waveform display, yeah it’s a bit clunky if you want to use a different buffer name. The best way to do it is to do what Sam does in this tutorial video (https://youtu.be/sxFKlYXhZ4g?t=4m8s) in that you hold shift while clicking the down arrow so the multislider/rsliders move down in bigger jumps, then once you can see the waveform~ object, change the name of the buffer, then select all the windows you moved, and shift+up-arrow to move them all back together.

          If you’re not using the position/window controls you don’t need the rsliders, in which case you can just use the multislider and waveform~ objects only.

          • Rodrigo,

            Thank you for your response. I actually did exactly what Sam did in that video. It ended up working just fine.

            A big thank you once again for all your help!

  • hello rodrigo,
    thanks for this fantastic object.
    i did a subpatch that should provide communication with the waveform UI
    without the other stacked UIs and thought i share it here…
    best
    klaus

    
    ----------begin_max5_patcher----------
    5921.3oc6cszjihjj9bl+JXk06kYTwDuCns1Va1cOLmlS6g0Fql1RCIgTRUH
    PFBkYUSuc+aeiG.BP7VjHTVYUloThmt+Et6gGd3dD+1iOrXU32bOtv3mM9rw
    CO7aO9vCpCIOvCI+9gE6c91ZemipKaQf6qgq9xhk5SE69sX0gOX751u598io
    mX0t0g9gQ5mLvDYSo.qkhuwr3b.W9MDFainKMfl.ieM41BNsO7Truar5kARN
    5w3u66pdMoO9sgAwG89WpCBglTaJzhmbtCNwqe1KX2SQtqi0D.gXYRfLFhsz
    .YwLAKMnD4mnRubufz2MJ4fdaTuXAO+Id92dfydMI8eF443uH+61MJA+R.Pw
    M3469hazQuv.EEuL43NGNj6vOj6Vjn9Wz3WBeIOjWf9P3rCE49hW4Gq34FIP
    fXA6eJRSjeyhs37iIbiaTvIO08nO3u+XJIcFzfH.VgQ1b4eHXa0eXnyPlrc1
    Ob8Wc2jq45gEgGbC7BND4dzMH1INg7xN8F2sNm7iepPiHvrxyu0Ysas2bksA
    OrXWj2lv.IQT.rkGN80I3NpjajedlYTWQfygJtYQ6u.Xp4jGEL4oiqbhjsEq
    zhpnzSFGF5W7TY2mu613jSevKHnDJFGdn9SF4s64Ft2UghStuoms5LGe5Tf9
    rOITvie5nyKEQ6XGe+DM9hO9u4D3s2I1M1S2Df.YmzMvQvnOebcTnueA9Uel
    Wp3LaDhwqce0aS7ypWTdgAwk6cHUHZQVq7FuctGiKdrXmcGKdjKLcHNzoUIp
    oOE6t+fufKJdAErIlWmLuswBGujMx8tGO5ryMSiKugRP9iVzbGL2YtjtURgp
    KN96GRDhWrHS3sFKePnRqEJzunbHQY.z1TX0EAxI4Wm0uxV.Q7EoG+2e7wzu
    r7M.lfSLNg0lC.1iBLwFSXpPOtEQoHAi5Z7pPqcaXz95QLz.PrkcQ5Bo5E0B
    kgZbk31vPMxOHnlVVaj.M7ToQ1Ndc05kEbH.m0GPcN0ofQhx4DNTgf3gffnE
    kHgRtULh3qhXl3N.zNw8IkSuXP5m0CSfZfoBFjWGteuv2NM8ceCPZswqFef1
    SA9DGtameA8yCNQBw0XgyLZuqJShWM.5IYiVvPjdfBPktntOA4m0ChvZ.QqI
    pK.+PmMRicFfoxbFnMyYPlRPDSTlxjixpstDpADsmN6YMfvBNLNRzewqNQaL
    DBoBsge9mm59PPsB5pKwffTfNLoaDz.Pcr0zA6M0MsPc0M5EGeieBNa5oNw4
    ZL+rGOCu+ZHaVHeGOxlNtvLaCg3pNb1RgpXr1yRHbYlg4gXKdV.y6C23s0yM
    5X8fMcXf8xF9y01PjHvyUtSvuh1.vrnQXsLbM0h+jANLokUMboA.1I1vw7yh
    8T6AC4sMZfBN446+zFmXmbnaN3UdAmz9.lChdXQ5c74r6ovcIthu598RtwIO
    pvn9oT.TFBWI34GFdP.f4ttyB.09bgs+bO55qv2d9jQs+j2GJCwXOet31eta
    hbds7yM2OyBvsRJU3Fxlmzgz8IoeJdqNEqC4WUMit6WoCeJL2iaZz79+lo8w
    fnvr9xwn1U1poub7rv71u7KFvYGNaqFPJz9rOSXxfwY57najmcBJ50ZQjFOr
    NRFw9sSDt4VY8jPFdOIyC+T0VxaxY0ADlyUhFxQou6DOVAzyccCFrTNelLv2
    uNUC7pWB0HxXXIY.ix877q56ET2Dqona44qF7OFdJZcJhjDjCihT+F2iwdAY
    y17mybmqz08r2lMtAkCS1FuixnmomkzNInzWJ1piTLd1PwB8IC3cEFy6HFCm
    MTLqiTLe1PwzNRwVWH8bqnXbGoX1rAiQcVPdFQyr6PZlz0tQlO5entJNilQ3
    LnqzLY9Pycs+ZqYCIC6rWQ36PZFMa5PA1YScf4CNKIEbG62dFQxjNPxz4EI2
    IIiYDLOwCkJIproQjssnw9aCIQPqK0h24GtxwOI8OyF5ZSYK54TJ8wy7g5SM
    1eE4L+ygu3FMpILOo1DluaSASMyddqoTOUMeWTcFShpKk5gWlR8DX64TeGkO
    TSDPlH2X1Ns8TPfquvRTFwVYPc5Bp66c7bTJqLSZz4BHUmd5Lb47QnHhRtDQ
    0od53v3GJmjjiiTJpeRoa8CcZFzvB4OFFxgDY4c.yMoq8A4nuGKhCFPG8OlZ
    5DrIDshJ4MoFNPeTCGeTCGuSpgilhvuQj6AWm3mhe18ov3my5DehxXUcBVRz
    pzIY+Py4rVcS+JYQ42zYydkmE7ZL+UmIvxykeElBqwbX8lDa2rXclFKmB.4M
    QpSVDHPgpLhZ9mHVkx7xpsR1AKkcwZYqVL6nUyFrb1MqmsXAsUqnsZIsEqos
    aQsUqpcvxZWrt1GKrMXksUKsMassYKtMa0sQKu0Y8sZKv0a8pcKwUaM9xL8o
    nU4KNeIqyo4W+xhWyEEqhwlP2iFAgwFNqW6dH1POc3B3vPkDQGMhe1I130vS
    9aL71eH7nqgiguavt3mM9EAZ9OCNFZ7pqwyhGnQbngRKei3tbMTV9y8.WEFI
    r6XZ75ytAxGRX3g+YvWNs+vQCgMdivs56R7hxtGyxLfbX6YYMFszIqr3nao8
    oNOlwXcNyomHXkEPdoL1uwDc3xzlK+oNmdTsjeW8qU+h9jKmRtqVzHjA6LjU
    cFObA5TAxpyeAHjjqTHPWAvBoefrI8WoGYGD.FKnELEP6kIqe4D1GK3IF0TH
    y.wr2LbtSXbRs9ifZoXBqafLpdP1ddfwHCBDZZAvDa9sEhSJ1ywCgslBDtbg
    4cC.NpkL7hDP8EpWiEq2E8XYUlrprn8deioHse.iGnZeqAUMNr3sy0Inkd.2
    1n9fYMzMDFOTLq331tH65tDJqZpgp.PaOa6ZZ9vwUdwUNWQ0OeQ8RBYnrk06
    S1B0mlK6xyp96C15xIhc9xW8QLz59o4pOrEjd2zbUCoVu10cBaA5oT3aAaMR
    Er0fh5UyoFPSg.qTJBL50G1EtzTu6L0LGCUMLDc3eSl59trvWTSYtvISwBeQ
    qkUjAvbxprnJGUmNZ5HP0yae2gS3ORvlkdct35gM1Tsxg7u8oFgrALeeEyug
    1zWw5JlBN3I8iMUKNYte6PjwOsE9W9osn+7OsEOsSRJWu.eBssMwHHDvVZXa
    0NngqAzlp0lrCFqiBOdbmbZTFS8RsP1xbeoCKta50oLcJinCQvv.O7GSy7mM
    PVb856C+i4Y9i4Y9i4Y9tXdlaYdwjloECGGdaChKT66o19Bkb0Snv7XtbgF9
    EpZ8l6Gru.ahOpU4mZ8y+f1WU85Gd08G1u4ebFfyyCI3jIMWOytifDLgLSDg
    291KBm4PWmki0fMRuptCuZwXB3CvtMayiGZismIVMt0SFr1Xr1XA95MYf+QY
    Zzsni5L9RYeLM5FnDfzZr.U96aPsPYP0nZdxdOxnIsZ8tO+DXIKsprQJ8DXf
    28PFBvFYLC9tGyn1HU0dlDUqQ.yPy9zfg1qDF49Yp5o7dvWn6G1h0C1hPta3
    KBoO708ShvnHUXG4K1cFe0KyF2Q7E58Gegs6ibH79hu.uSaudOJG1qLn69Ie
    G6iT3cTBz0GiFn6J1pW9Pc+vVn2mrUebj+8WiE5iTScBSM0Ya5ewHrQL8uHi
    5tr3aR97xRymWvUlOuDzMNed0aOmXCxnmXpcJs2RkbzyXGc3BMXz7dmQ7hfv
    2.ZnW2ntlsOR9MVpJ0bzeRXN5SSt4HjNOmw57b1lMXgJD7GB7hPolblEVtiP
    fQ3y1vGNxAs+g.4RxZ2wBzlpzp+fbI0JXigW.bZwKpsprxw57zfSF9F.IXhf
    p+cCn4hIeGdMoPMzvjd+saPkevjs2n+meq2TmpZY0gQxUjFnKVOT6NJQmHTR
    k+enlfp2pcAcj1AKLkUeR+Mu123ucXks1wK8T6eMPE9GfMiZbxZXShR3v2Mp
    QnIRv5+3VXQGy0YlnNevthBJCAlrsb2UFaeS1Gy5VI3k1GHh0UDqts0Uxj0G
    3MoVESAJF3JEsf3I28yodfgI8Bd0teBQSNTglVnR2IHQWj.WCRAmt8h8Wbih
    ea2I1quCPLWGAK9fU+nuCBfE2BmEIA50FEKl8MNJVmBN3r9qFaM7D+eaS8FR
    uhZDt3FhdoRGt9sixBEZZasEZsYgjJggwb6ApKSsmt87ylzzkSp0jqmWHHYb
    lIifPPjbkAe3Z7SVctKmprsgQu5DswPLrAgdzO+yk1sIl1tfoP0pOAjOb+5v
    ya6ks2wgXr.zwHX+SgUxa.9jDa0qFef8AedS19bwj6tciVXm2P9HymMJNXen
    4YxdnaWoYFobZYL+oYB99il6pJ3duMGBE9rkXhvBPTFyYPUTnwrreU7cNeXT
    DriMNUyoX8NgBlXk8q4JmBsuNNEXoCDLxDk5+m7PyV105paXYL.khkqa1vhG
    Zh4YVW2tRo1ym8Xbq9XQGdeQyJK52YzLFLPS5bssbK0RHOSaEP8qoVKvpOlz
    gCmSSltY8hku5WyUNEZekbpdYVCbNBIHaxLlcstR1kkYRGlrWMlcnolm65t4
    Le93jNqqieSwbyDyiW56cMlGQyGbFe+seNytrGwZnYxcHNOeBHgxCutripWg
    ex2TZtKao5Lq4EM24tfmIz78W70n2cTLA2mNAuynYx7oSPLpicnvHyKZtyie
    blPyf6NUPDuqpfym.uhX8YvqyDbtqVmQjgEZArXPXx3poKerjnEq90DOZrty
    o3qjSUqeQ11Y+XpYzt5h.b9zS.hz0gVLiTc57vgPyKZFbmgycsGW57gjg8wp
    57HJJnt5j.ZFgycllmQpf8wwlYR1Fz44lZ93mNzpOc2OSvYx8Wvpfctm6YDN
    20dAQymw22cZFbGlYUyGRFd+Qx8oCkwfjSVwZRWsZZakpIg1qcEpopUmlVVY
    ZpHwKKuhznoW0mZPVQF4RATMY0TlXmKohCO5Io6yYhc0IE5kzUCICZM43dk4
    OKTk5QH.xDSP.NZoAytb1DWYdXWLKhy8hqHc16IXkleokAKmMe4zwXiTL6u7
    pWvlvWSuLof85vS57REUIXBpELKfX3LDa0oUE2GlpNo1YlbhkM.JWc+sM4Ha
    HkIq5NnIkxHHtd4.uZ3DdIbls.0OR3YgjZOWE.D5rQJWlUdv4zZg2BgQBwxj
    .YLjD7vLSF2xxlrzfiZVhrBHDNtH3V+PwabQFoWaMCWcAdtPVh.NJtj0CHbY
    R4dND8ZatICC4PhrnFOKSRuXO.Rxnd6ELm7YZBZBeEGJ8Jy1LspbWy6GVTWa
    Mc5.bzzX3sngV4gWG5q2bB+rfxn.nMSX7qpuAKpzdMFiaSLmfyrXjrfC.6iQ
    WqoAKS68ZNhlIhu4ARZ+AR93Bj045jVn7l43TNIuBdOw6s2SjQVxKslz9izG
    6KNmczsTAqo1RKKZeQdjBBjXazxR+Iu7vpcEtZvxbeTu7ZpE4nS95cVUP2au
    tbmg8xunpz17KTIKN5FK2+SyszQINjunAUnLVfC3VDrrYEXBITfskhWPXJxt
    HC8Rr25uVP4a0osayMnhxp5oXeg2lzcGrs7cH+KUgwLNGgnEea9Nqb8K71pb
    W8gXhsr3XrdFh.D.U59IFqqTPHoN4xjhucgbTVOs5ft2IwcYaC..5kBsbzXZ
    TTvAgQaVzSKaZuyO5swsXu9Wgq7HSDhIbAUUmu1D.CJPRhc5N5SmMBxnSTuI
    9Ne2v4zFuva9vfjxXhg6fwBAWwnfnBqhLhbaC1zBiDlK6IBBoSxffzpr+Q1f
    JEifSHvunQ+J6iIpg5JIgHbgTKIR3DSagAAo4GjcuGJDiLt.Y5lZaVuKdtup
    1vh878h+ddhHb6VgQWM+7IkGYeBm2hlZSidSjytyafuoHxZegs03miBOs647
    G+h8C3hm3kKOwpcoV8yNhvTSw9bx.kMt6COJTd1XJX4CNwM6ZwEs5G81EH.0
    LNzIZWxT3u3uJ2kvkBDeILXm+2Mc71J+0e0OL7fL70xu+Rne9.oUY87BrLsn
    Hnpn4ERAIJYHnRtHecUTYY8lWtv1ZDUiDb9eXb8dhUF.6tuqPNRnjXAnV50Q
    KFGy3rrUV.ber7.G4ww59u13rNyarCQgwgRdN6A+rq+As3QlhgS9sy5htXAS
    br57G8dHAsXuAPE8BhHJYLRZ4i2Y2YsGy92NF6DEWrCtonuLazYz.JQFMZnW
    APPzdILMMiF5XrzNxMIncYPU9wAoc3rWiChaMMPkzmoaMTopfHHfHGcwPfJ1
    z.UM4W9DBV4BHAg1evZjUA88dw0bmiWPkCv97Y+L7WaJ1ko325mcBBRFZW0g
    cmjhqQdBajYy9VVCvygul95AszyZxRJewgIe1giH2ioug7KBR5U5Mptb+RWf
    7ZxMkbMdXQiW5vPgX1E2caFPQoqWRIyFX1z.1vDB9hi+I2vsYSyY5jblqcvW
    3FVUsY7eMakNI2UKf3n3Jt7pt1TPGTw41K3U449DGXV84cTRdrJOqWfXHJZO
    CTQZ47Ltl6hNItnLURxi4mh0AMyk03v2Wch16bdXSW8.lNKeVTjbXcDwDxbB
    QNhbHSDtIhBsjgspWlMF4XqKQNgvZ7Yr5YufByMsbajHXid1wYfbrZ8y6wEA
    OFSrA5vzU5K0FwNnNXcByqH4H2AlDtvIZqlbrDm6sWH1YM3ZZGm4kxaT8Jve
    qy5BVLyDBgs3qmh.ewMp.DoPkzOxShmN5tZWN9A1rUQHPuZzp+CR.bTpEWKk
    YSr33b3coHLRU.84OKz33r9q6TRB4oAe2cNq+dgl6Lak6BBETkb.ys3UKzha
    RsvXhreTHOyIe8V7.pWQmAkMFIArcANC+QPAAbNA7mqJHqtkJHTrty9ySj+8
    fRRtg9k2I8AnifHenhL+UQbtwpHoy2.xhjEy76M8jbiOaH5Ire30StC70Bea
    0S3lb.Q3uRx7Zd1p7rWQgxyzw4n7p382mqOzSl+5InapdB0xjAPHa0t3isIE
    RsX12G5ID.Vk6BLrJGjuFEkO5P4NPQgbKUTPVVYcnvjaRQ2ScnXgMgTaFypX
    plN.MEFrqZJpGYw0yYshS4hJIQ84hhIwtPYy0ksB4KKhjxEFODZYhSlMbDAX
    BsH1xVQJ4ra0YG97qtbUnbgwftxS7wfmFQxgMuHGTGHG1zRNvNPNvoibPcfb
    PSG4f6.4fmFxANqDkKVgaMrJA.mOjCwZ5fGTGgmYD4fmNxoifSUJ5vQmZncw
    J3zANztzGwzonSdC7Rg.3lvzREPtys.3VbRQuTxN7afWJjtXKkOcPLrCc7wm
    Lao3wuAGizKy0HhIjiksuEZpSN5aPKMxtCLi8j0R2YxYZZo6h+ezIyCmtzGE
    Z5ZqfvtpHLMMVcwlUscSAqwPLkaZmVewLpovbKSFor7FnOe7V0O0CI14vAwX
    lOlPYJ9YwdmunGAMe4i5x3T+SUrWVD4JSW9b4v0BmHwX7iECv+TjNLKeyRGB
    qExbWOJ3jWxvwUqLB5vwTZX3mSPEYtx9+D6De53S+c2fS5A3KPvsNm7iKh5q
    1s0y2Oa794SgpzP6rPe1z0BghAiwlHFAtJNUPLWhphuI9hJVHm2DnT2CL8lH
    zzfaQXHNQG0JY3qvKKjSS5aCc9cIKAR0a.XaAH5ucQUQJvxfc5XUgxkiUxjt
    9PXTp7irJ1xt9Swg6hb13kriVAJjpTKSDZk61akiB1h8B.0K8dxKjm0X70i9
    dhFv+WYqaSMDsDFtQgVzIx0+k+I2zpiuZZwY8ZwKnXfIgbFgqpLsrVOa4gfu
    ADXT3qA8lBOSWTg7GQUOc32HJ7+96N8m.AHaJQI+x4XLRAlVHHTVeYiMA92h
    bcG.EpPOr7epZejYwT4r4HSb+CWe+vW6M0YgnPtNV2PKUMQCnBDsTTWyGJ4O
    qxWPpM.XMVLvo8qbi9ag9a5M4KEEAplepMBRUbBLu4qQg.izlajTXyl86Gss
    7wKs8yHrjxVUHEy4Z4YQ6g8vkmE2yu+3+OPJsIpH
    -----------end_max5_patcher-----------
    
    • Klaus,

      Thanks for this! This is quite handy. It acts a bit funny when you ‘wrap around’ the end (window > (1 – position)), but it’s definitely more elegant than the stacked multislider solution!

  • first of all, thanks for your amazing work, been drooling for months now on your webpage and your projects…I am in the process of leaving behind proprietary technology, in favor of a more personal DIY approach…anyways, my question is based on ignorance, and i apologize for it, but then again, asking is one way of eliminating ignorance. I.ve been experimenting and playing with karma, is great, I used it with various sound sources, but with guitar I am getting interesting results, so I would like to use a midi pedal board. Have a friend that offered to lend me a soft step, which I see is implemented in the party van. What about karma? I know my ignorance resides in not knowing how max can generate midi mappings, but I am eager to learn, so, for controlling karma with soft step, should I somehow patch/create my own midi implementation? thanks in advance and once again, great work Rodrigo!

    • Hi, glad you like the stuff, and karma~!

      Yeah you can totally do MIDI mapping, and Softstep mapping quite easily. I use Jeff Kaiser’s awesome jk.softstep abstractions (in The Party Van, and in general). Makes programming with the Softstep much easier all around. If you download the zip from Jeff’s webpage the main patch explains how stuff works with it.

      Enjoy!

  • This is great! Thanks Rodrigo and raja.

  • This is really useful. I think i’ll use it to make a looper in Max for Live, as I find the looper in Ableton lacks some of these great features. Thanks!

  • thanks for this great tool! total n00b here but i’m sure this will come handy in a lot of applications!

  • A truly incredible object for audio processing/performance. Thank you Rodrigo.
    Any plans of doing a multichannel version using Max 8’s new mc. objects?

    I’m scared to think about what insane noise I could make with a 40 channel mc.karma~ object!

    • I’ve had a 1.5 for a bit now, that fixes some bugs and adds a few new features. I just haven’t gotten around to properly updating it and pushing it to the package manager. This will definitely be updated to work with M1 and when being built with the new API it should play nice with mc stuff by default. It’s medium on my radar at the moment.

      • So glad that you’re planning on updating it to work with M1! I just updated my laptop last week and was so sad that karma wasn’t functioning. Thank you for all of your work on this!!

        • Yup, actively working on it at the moment actually. I’ve got an M1 build that I’m testing, and also revamping the help/reference stuff.

  • Hi there, any possibility of an update soon? Running max 8 on an M3 MacBook Pro…

    • There’s a 1.6.1 on the Package Manager that does M1 support.

Leave a comment

ABOUT

Rodrigo Constanzo
-makes music and art
-lives in Porto/Manchester
-is a crazy person

Read my PhD Thesis!

////////////////////////////////////////////////////////////
Composition, Performance,
and Making Things,
sitting in a tree :
Me-Me-Me-Me-Me-Me-Me

////////////////////////////////////////////////////////////

Learn from me (for free!)

I am offering free lessons / conversations / consultations / mentoring / time / support to creative people, locally or remotely.
Want in on this?!

Upcoming Performances

No upcoming performances