Karma~ and softstep 2 - Some noob questions.
Hi Max peoples.
I'm a long time Live user looking to create a set of loopers (among other things) controlled with a KMI softstep 2, I want to do this completely in Max 7 and free myself from a timeline and LIve's native looper's persistent bugs!
So far I've had a frustrating relationship with Max, I've gone through weeks (understatement), of tutorial reading, then disillusionment followed by months of abandoning the hope of ever really getting anywhere but lately, out of frustration with Live and seeing this wonderful Karma~ that Rodrigo Constanzo and Raja have created, I have decided to give it another try. The general opinion on the softstep is that Jeff Kaiser's jk.softstep v2.3 is the best way to go in getting max and SS to talk, however, it just doesn't seem to work at all with the SoftStep 2. Am i mistaken here and just missing a trick or is the SS2's sysex different to v1? I just can't seem to find any info about it around the net at all. Is there anyone here that has a SS2 that can shed a bit of light on the best way to approach creating some interfaces for controlling a set of loopers created with multiple Karma~ objects?
I know I need to re-read a lot of the Tuts on how midi is handled, (why is the help so damn opaque?!) but if there is already an external that works it will give me a clear direction.
I'd like to thank Rodrigo and Raja for being so generous with their work. Karma~ looks like it's opened quite a few creative doors for me if I can get my head around how to build what I have in mind.
Cheers.
m
Hey Martyn,
Funny I see this post at the top of the forums, I just popped onto cycling74 for the first time in about 3 months, to research and resume building my karma~/softstep /granulation setup. Your post is the first I saw! (yes wild coincidence)
check this out the latter half of this thread to see the approach I took: https://cycling74.com/forums/check-out-my-granular-synth-looper-then-advise-plz/
here's a video of my prototype in action: https://www.youtube.com/watch?v=kJmxx4ueRBI&feature=youtu.be
I'm looking to develop much more simple and elegant setup just for the softstep and karma~. My last project was unwieldy and buggy in the end (my advice after 1 year of max programming: do something simple and fun, if you have a grand vision them just do a small part of it at first, or assemble a team. software and hardware hacking overtook my life for many months and made me music-less and often miserable)
I dont' know the best way to program the Softstep in Max, however in a recent (unfortunately in bad spirits) forum post I made on keithmcmillen (http://forum.keithmcmillen.com/viewtopic.php?f=10&t=2730) Evan (who also is part of this forum community) gave me the following patch. I don't know how well it works, I think I might dig in next week.
I would plan to do this project in M4L, I'd be interested if you have ideas for design for the softstep. I'd also be interested to hear Evan's opinion on this, or any other softstep users.
Heh, yeah the internet's a strange thing sometimes!
Thanks for your reply. I actually downloaded your device and had a play around with it when you posed that, I'd already had mixed results trying to get Granulator 2 to work with a live input (the live input's not been updated) and am kind of after a more traditional looper that's free running and/or synced rather than relying on a timeline, so perhaps didn't give it enough attention. I'm going to have to go back and have a closer look now though.
Your post on the KMI forum is interesting, I've been trying to get the SS2's pads to work as cc joysticks too, no luck though. 4 switches seems to work but not CCs for some reason, although the manual seems to suggest otherwise. I came to the conclusion that they're a bit small to be useful anyway and plumped for just using pressure on a single pad. I've been using that to create volume swells at the start of picked notes and chords on guitar to create string sections and it seems to work well.
Thanks for posting that patch, I've got midi happening ok into Max using the SS2, albeit crudely but the second part of that patch (the sysex part) you just posted looks pretty interesting in the way it talks back to the SS2, I'm going to have to have a closer look at that. I've emailed KMI support to ask (or hint) that a dedicated max patch would be nice, we'll see how that goes!
Anything I manage to find out or create for the SS2 I'll be happy to share here, I still have much to learn about max though so don't expect too much. I find the learning curve exhausting and it takes me away from music for so much precious free time, I get disheartened very easily. Karma~ has my interest piqued though, I'd given up hope of ever creating something like that and looking at how much skill, knowledge and time went into it, that would appear to have been a justified assumption for somebody at my Max level.
m
Man, the universe is funny sometimes. After keeping busy with a few other projects, I decided to tighten up a Push/Karma combo that I had on the back burner. Altough it has seamless integration with Push, it can also be controlled by the SS (at least recording, stopping and overdubbing). I created this inside of Live, as I wanted to use the Push as the main interface for it, but a lot of the brains could easily be taken out of the M4L device and put into Max. A TON of the timing stuff would have to be re-written or bypassed altogether. i made it to keep tight synchronization between loops, so it would probably take a bit of cleaning up on my part before I would feel confident handing it off to someone else.
If you just want simple triggers, (and even not so simple triggers) you can use the SS out of the box with some of the factory presets. If you want access to all the raw data (4 sensors per key) you'll want to use the above patch.
If you have any specific questions, let em fly. I'm going to get back to making a video of this setup in action.
I have an SS1 and have used Jeff Kaiser's abstractions for absolutely everything I've done with the SS. I find it infinitely easier to use than the app that came with it.
As far as the SS2 and how to best interface with it, I have no idea.
If it's of any use attached is a patch I whipped up for a friend using karma and SS1. It's not the tidiest patch in the world as I put it together quickly for functionality, but you can see how I do stuff and what I implemented.
Wow, thanks Rodrigo! After renaming the in and out ports in jk.stepcore to SSCOM that actually seems to work. Well, half work. The patch is definitely talking to the SS2 properly because the leds display the name RICH and record, play plus green chasers when clicked with the mouse but I can't get any sort of control back from the softstep. Which SS preset was the original patch supposed to work with? Or is that irrelevant?
It's very promising though, there just must be an input mismatch somewhere, it's late now so can't investigate further but I'll have another go at it tomorrow to see if I can figure it out. Seems those patches might just work with the SS2 after all.
Thanks to all who've replied here, this place is great!
I never change the presets on the SS, but I want to say it has to be in standalone mode (instead of hosted mode) if I remember right.
For me it's just plug and play so I never mess with that stuff.
Hmm, default settings on my ss2 were prog change, resetting it to that doesn't change anything though. I might try resetting it to factory settings before assuming there's another issue,
It's likely the SS2 is quite different in terms of the raw sysex data it sends.
You're probably right, which is why it's surprising that the patch works so well when sending to the ss2, it suggests that they might not be as different as I thought.
Hey guys,
Just to clear some things up about the differences between the 1 and 2 how the SS works alone, and within the context of the jk abstractions.
The ONLY difference between the two hardware versions is the sensor location, and some other slight differences in appearance and feel. They both run on the same firmware, and send/receive the same sysex messages, and MIDI messages
You can use the SS in 'Standalone mode', with factory presets (NOTES, or PRGM for example) to send MIDI notes, or program change messages into Max as you would any other controller. There is no need for any abstraction.
Hosted mode is when you use it in conjunction with the Editor, which I don't think is useful in this case, so let's ignore that.
If you wish to access the raw data from each sensor, you can put the SS into Tethered mode (which the jk abstractions do for you). This exposes 4 sensors per key, and you have to do all the data cooking yourself.
If you just want simple triggers, I would recommend using the device in Standalone mode with one of the factory presets. If you want to do more stuff with X/Y and pressure, you might want to use tethered mode (although there are presets included that do that type of stuff as well).
As for the LEDs, there are a few different ways to address them. The jk abstraction seems to use the more convoluted, but powerful (able to get a orange/yellow color) approach. But the basic way is this:
CCs 20 -29 control the Red LEDs
CCs 110-119 control the Green LEDs.
0 = off, 1 =on, 2 = slow blink, 3 = fast blink.
Let me know if this clears some things up.
Excellent info on the SoftStep, thank you Evan. I've whittled my digital hardware down to a Push and Softstep, and have been dreaming of making a karma~ integration for this setup, I would be SO happy to see what you've cooked up. I'd be interested in adding timestretching/pitching-shifting to it as well.
Thanks for sharing the loop patch Rodrigo, I'll check it out soon.
Martyn--this place is indeed very cool. I think Max is a very special software, though the learning curve is indeed difficult. I'm learning German right now, and I can say that the learning curve for that language is much harder, and I will not be able to create very much genuinely new meaning, just translations of my current understandings. With Max, you'll be able to create some things that are utterly unique. Try to have fun with it, start building small projects, and mashing together things other people have made. It begins to be very satisfying when you build something from your imagination that technically works, and fosters more creative ideas.
Check the other post for links to the device I've been working on using karma~ and the Push. I've been having a lot of fun testing it, but it would be helpful to hear someone else's experience with it
Thanks for that info Evan, that's very good to know, I might try doing something a little simpler before diving in to sysex and raw data . BTW, I have a Push so would definitely like to give your device a test, it sounds pretty interesting.
@ Jaren; Using the (spoken) Language learning metaphor, I've always believed that living in a country for a while is the best way to fully learn, because you're forced to actually use it to get by. That got me thinking that it might be an idea to take a similar approach with learning Max, so I'm thinking of banning myself from opening Live for a while and just work in Max only for a bit and see how it goes! The trouble I have is that I tend to leave Max alone for months and forget the simple stuff, constantly finding myself going over the same ground all the time as a result. I was really getting somewhere with it a year or so ago and then abandoned it because I just wasn't making music. It's definitely got under my skin though, the thought of creating something that nobody else has is a very attractive prospect.
Immersion is a great way to learn a language--but I'd still carve out time in your day for making music in ways that you're comfortable with, and treat Max more like programming on the side. Some people find for themselves that programming in Max is part of the music making experience, but in my experience it has completely different joys and challenges, and uses a different part of my brain. I wouldn't quit playing music for any amount of time to work with Max (I've done it, didn't feel good for me). It's very satisfying to do both, and let them speak to each other :)
Like Beethoven--completely off the hook piano performer--who let his physical relationship with his instrument generate a lot of material for his symphonies, but there was still on top of that a lot of sit-down intellectual work to get a symphony together (not just working out themes and developments that last 40+ minutes, but also laboriously writing out all the parts and "debugging" ensemble sonorities that sound different in reality than expected). I'd recommend keeping a foot in the music and programming world. My two cents (definitely still an amateur here, but came to a few personal understandings in the last year)
@Evan Wrote lots of feedback on your elegant Push looper on the other threads, very impressive. I'd be grateful to see how you're using the softstep for this--is it a max patch? thanks!
p.s. I have made a elegant set-up for lightning-quick and stuttery live-looping (only less than 1 bar, polyrhythms galore) with the SS2 that works extremely well for me while improvising on the keys, but it's built just in Ableton (using a clever BeatRepeat setup). I plan on polishing it up, making a max patch to control the SS2 interaction, and then maybe blending it with karma~ and aspects of your work Evan. Then I'll share it here! :)))
The SS only controls Looping and recording, just via MIDI mapping in Live. I don't need anything fancy with it other than to trigger things.
Well I managed to get Rodrigo's Looper patch running perfectly with the SS2, I'm not sure what I did but I went to bed after an evening without any joy getting the SS to communicate, turned it on the next day and everything just worked, I'm guessing that all the tweaking around might have messed up the SSCOM somehow and a reboot was all it needed.
@ Rodrigo; This is a very usable and elegant looper setup, absolutely rock solid with good visual feedback on the SS as to what's happening. Huge thanks for sharing that patch, it works perfectly and there's masses of reverse engineering learning for me in there.
Thanks to everyone who helped me and commented here, I now have all the info I could have hoped for, right up to the most complex sysex/raw data example, fully functional. That all adds up to quite a headstart and is very encouraging.
Cheers.
m
Dang Rodrigo I checked out that patch and it's actually really nice, looks like you did a little more than whip it up.
I'm wondering what's the best way to talk to the SS2 through Max, is there a difference between Jeff Kaiser's work (as seen in Rodrigo's looper) and the patch I posted earlier, provided by Evan?
Jeff developed some data cooking and bult that in to the abstraction so you can get useful things quickly. The patch I provided simply allows you to do what Jeff did. Jeff is using the patch I posted (the sysex commands at least) in the patch Rodrigo supplied.
The patch I posted can be see as the way to do what Jeff did. Go with Jeff's stuff if you want any pre built solution.
Hi Martyn,
I'm using it with the SS2 with no problems. Are you on Windows? A friend was having some problems, but it was just with port selection.
Best,
Jeff
Ah! I'm late to the game. It seems all sorted out. :-)
Hi Jeff, yeah all sorted thanks, just had to rename SSCOM-1 to SSCOM in a couple of places in the brain. I think i must have done something else that turned out to be unnecessary while prodding around in there, using 'hope' rather than knowledge, because i broke something until I rebooted. Had me wondering for a while but it was nothing, patch works fine.
Thanks for sharing that btw, most of how it's functioning is beyond my understanding at the moment but I'm sure I'll find it very useful and educational.
Cheers.
m
Great, Martin, glad it is working. At some point when I update it, I will incorporate a note to Windows users and an option to set it.
All the best,
Jeff
I was going to link up the softstep2 to my karma~ granular looper, built in M4L, but it seems jk.softstep doesn't work in Max for Live. I see this was also talked about on your site Jeff.
Interestingly, when I have the the jk.softstep objects running in regular Max, the objects work in Max for Live. I think it has to do with how Live handles MIDI... I don't know if I want to spend a whole bunch of time programming my M4L patch with the softstep with this workaround though...
Evan it also seems the patch you recommended does not work in M4L. If anyone has any recommendations, I'd be grateful! The "SoftStep Advanced Editor" just doesn't cut it for me.
It's a limitation of Live - you can't do sysex things in Live. Jeff's abstractions need to send a sysex string to the SS (the same thing that my patch does). The only way around this is having a small max patch open (the one I provided), send the sysex, and then the data received from SSCOM will be compatible with Jeff's abstractions.
OR if you are on Mac, you can have the Editor open in Hosted mode, and monitor SSCOM1. This will also give you access to the raw data.
Out of curiosity, what about the editor doesn't cut it?
Awesome, thanks for the advice Evan!
The advanced editor doesn't allow me to do many things I want to do, especially using individual "peg legs" of the SS notes as Data Sources, and defining relationships between the keys/peg legs of the SS and the software.
---make the speed of the x-y counters linked to pressure (currently you must define their speed ahead of time)
---e.g. I use the bottom and top "peg legs" of each softstep key as separate toggles, and for example, when I press the bottom peg leg of key 1, I want all the other bottom peg legs to untoggle. The advanced editor only lets you define relationships between entire keys (e.g. "Key 1 Pressed"), not their individual peg legs. The sensitivity of the hardware is what makes the Softstep particularly special for me.
---Get pressure+latching of individual peg legs, and different trigger modes
---more sophisticated LED behavior, it's too closely linked to the MIDI message of a particular note now.
---and in general allow the current state of my M4L program (is it overdubbing? time stretching? paused?) affect the kind of messages my hardware sends. Interaction between software and hardware, rather than just the Softstep sending commands.
this is all compounded by the inflexibility of Live's MIDI Map mode.
I was initially really impressed with Advanced Editor, it's well put together and obviously took a lot of time to make, but as I am hoping to make the SS an absolutely central part of my setup (like the footpedals for an organ player), and I can code in Max, it's impossible to not want more nuance and flexibility.
—make the speed of the x-y counters linked to pressure (currently you must define their speed ahead of time)
This is a good one. I am completely in agreement with this feature and will add it to the list for future updates.
—e.g. I use the bottom and top "peg legs" of each softstep key as separate toggles, and for example, when I press the bottom peg leg of key 1, I want all the other bottom peg legs to untoggle. The advanced editor only lets you define relationships between entire keys (e.g. "Key 1 Pressed"), not their individual peg legs. The sensitivity of the hardware is what makes the Softstep particularly special for me.
Fair enough - I've found that using the corners of the keys for triggers is challenging in practice. They are really close together and unless you do some real careful data cooking, it's going to be a bit wonky. As for the device wide interactivity - If you can find a MIDI controller that natively has all it's controls interact with each other let me know ;)
—Get pressure+latching of individual peg legs, and different trigger modes
Again, pretty hard to do accurately. If you latch one peg to a pressure value, and try to do taht with another peg, you will invariably change the previously set value.
—more sophisticated LED behavior, it’s too closely linked to the MIDI message of a particular note now.
—and in general allow the current state of my M4L program (is it overdubbing? time stretching? paused?) affect the kind of messages my hardware sends. Interaction between software and hardware, rather than just the Softstep sending commands.
You can do the LED stuff in conjunction with using the Advanced editor, you just have to send the appropriate CC values via M4L. Doesn't really have anything to do with the shortcomings of the Editor in my opinion. It would be pretty ridiculous to include in the editor a command for turning the green LED on according to this very particular M4L device. Again, if can find a MIDI controller that will automatically give LED feedback from your device, let me know.
I think some of your requests are valid, but most of them are on the 'advanced user' side of things, and wouldn't really appeal to most users. I think saying the 'Advanced Editor doesn't cut it' is a little harsh, and it would be more accurate to say 'commercial midi controllers don't have all of the interactivity I need'. That's what we have Max for ;). The interactivity you want isn't going to be found in ANY controller, without a little leg work.
P.S. take all of this with a grain of salt, but also keep in mind that I work with this device on a daily basis.
fair response, thank you!
Indeed, a lot of things that I thought I could do with individual peg legs isn't possible (even with bare toes), because the other sensors on the key pick up on what i'm doing and de-latch etc; though there's still things (like double triggering, and holding to trigger) that I wish I could do with the individual corners of the keys. Mostly though you're right-- the sensors are not independent enough to make this very desirable. Only when the sensors are other opposite corners of the key is independent sensing really useful.
Glad to hear pressure sensitive x-y counters are forthcoming.
Didn't mean to bash the Advanced Editor, I meant that "it doesn't cut it" for programming the ideal hardware/software interaction for my personal device, which of course is an unrealistic expectation. I am thinking now of going a simpler route with it and just using the Advanced editor (and maybe just making more extensive use of custom presets, which I understand are not possible to access in Max).