Page 1 of 2

Fancy Softstep driver is ready! I think...

Posted: Thu Mar 01, 2012 8:56 pm
by TomSwirly
I had a terrible disaster - in the very last stages of developing my Softstep driver, my Softstep broke :-( - and I mean, physically broke.

The USB plug on the thing has been a little wobbly since I got it - but I thought little of it. When I removed the USB plug to plug something else in, the USB plug suddenly became extremely wobbly and is clearly no longer attached to anything (and of course, no lights come on).

Disaster! I haven't even gigged with the unit yet.

The worst part is that I was pretty sure I had it all working when this happened, but I'm not 100% sure as I was just about to start final testing.

It's uploaded if any of you want to play with it - you can get it here: - and you can see the source here:

Download this, uncompress it, then try softstep.maxhelp and see what you get. It was working really reliably a couple of hours ago :-/ how I wish I could test it to make sure it still is!

There are several really nice new features - you can scroll the display back and forth and at different speeds - there's a randomize feature that turns on LEDs at random and that sort of thing.

I had a couple of other features partly written, particularly a neat "note-on" mode, but they'll have to wait till I get this unit repaired.

Re: Fancy Softstep driver is ready! I think...

Posted: Tue Mar 06, 2012 4:26 am
by Rodrigo
So this replaces the cooking thing? Is it another version of the jk type thing? (ie using midi messages directly).

What else does it do?

Re: Fancy Softstep driver is ready! I think...

Posted: Tue Mar 06, 2012 11:51 am
by TomSwirly
Hello, Rodrigo!

Yes, it uses MIDI messages directly, bypassing the ss-cooking on one side and the ss on the other.

It offers all the features that these offer plus a few more.

1. You don't have that terrible issue that once you've opened any document with an "ss" in it, you can never close it and reopen it.
2. It allows you to scroll messages across the display in various ways.
3. There's a "randomize" feature (just for fun) that randomly sets all the LED states.

In addition, there are a couple more features in development that I'd have finished if the unit hadn't failed (it's on its way back to California right now! It was a very early unit so...)

1. There's actually a queue of commands built in to the scrolling display already - I use this in my personal setup, I just didn't reveal it in the interface. This lets you do things like send a single command that says, "Scroll this message three times across the display, then display this other message."

This seems like a fancy feature but in fact it's really useful in live performances.

2. I have written but not finished testing a "note display" mode where it lights up LEDs as you press notes (with dynamic allocation of some set of the LEDs). That really is "eye candy". :-D

3. I haven't even started a "MIDI clock mode" (which could work perfectly well with the "note display" mode) which would steal, er, be inspired from your work on doing just that (I think it was yours?) Once I get the unit back it should be only a short amount of work. More eye candy!

4. There's a Max For Live version that I use in my own show that won't get revealed till the next complete version - that lets you do things like "display the current clip name".

5. There's a mapping mode that I use in my own show that lets you store mappings from Softstep presses to collections of MIDI messages in a text file in JSON form that you can store outside Max - which lets you use the same patch and different data files to get different results.

...... start preaching mode here .....

I feel somewhat as if I'm cheating here, when I see all the work that you and others are going through with pure Max to do the same thing. It's a lot more work to get going on the Javascript implementation, but once you've done it, adding serious logic is no big deal.

I basically stopped doing pure Max development a year ago. My hand started to preemptively hurt when I opened up Max - all that dragging tiny wires to hit tiny inlets and outlets! I seemed to spend at least 20% of my time simply moving around boxes and wires (and not in presentation mode) just to keep it vaguely readable.

And I had such trouble creating complex logic that worked correctly. I thought it was me - until I started reading other people's code...

There's a Max For Live patch out there, I won't name it, that has literally *tens of thousands* of Max boxes in it. I wondered how a Max patch could be several meg in size, and then I wondered why Max just seemed to go away for a few minutes when I opened it. Presentation mode was a little crowded... but then I left Presentation mode and zoomed out... and out... and out...

And now I have code to do super-fancy, useful things. For example, in my main controller patch I have a separate "style sheet" in JSON which determines the sizes of my items, the fonts and colors - so I can switch between layouts, or just tweak the size of all my buttons by editing one number in a text file.

If I had my way, I'd convince everyone that this was a better way and we could all share code and I'd never have to drag a wire again.

The rule I follow is: Javascript for logic, Max for audio. Or more specifically:

Javascript: logic, layout, MIDI, persistence, data
Max: audio, GUI

Thanks for reading!

...... end preaching mode here .....

Re: Fancy Softstep driver is ready! I think...

Posted: Tue Mar 06, 2012 12:07 pm
by Rodrigo

Gonna take a look. Erm, getting a 404 on the download link.

I'm a pure max guy as I'm not good at straight line code (though from learning some for Arduino stuff I find it difficult handling something like a state machine in max, so I hear where you're coming from). My main max patch is up to 6mb now....., hehe.

Re: Fancy Softstep driver is ready! I think...

Posted: Tue Mar 06, 2012 2:52 pm
by TomSwirly
Grrr, stoopid redirector software lets me use "-" in a name - but then doesn't redirect! links right to the code. has the download of the whole repository. And I tested both links.

Whoa, 6MB of Max! Where does it all go?! :-D

Re: Fancy Softstep driver is ready! I think...

Posted: Tue Mar 06, 2012 3:50 pm
by Rodrigo
Into a gigantic 'all-in-one' patch:

It's not even halfway done either. The upside is that I only plan on using this one max patch, for anything I do.

Re: Fancy Softstep driver is ready! I think...

Posted: Wed Mar 07, 2012 10:50 am
by TomSwirly
That's super wow!

What are you using for your "remember the last 10 minutes" row? And your looper?

This is a littel off-topic, but enquiring minds want to know...

I'm also all on the "one patch" world, but I do almost no synthesis in Max... it's much more a control world for me...

Re: Fancy Softstep driver is ready! I think...

Posted: Wed Mar 07, 2012 11:15 am
by Rodrigo
The 'reminder' row is tapin/tapout based for the 0-7.5minute stuff. in the most recent version (not yet released) the 10minute button is a separate buffer that records the last 10minutes of audio, and stores analysis points for it, and you can then do real-time grain replacement based on incoming audio (concatenative synthesis). So basically you can play audio into it, and then it will analyze your new audio, and playback grains from the last 10minutes that match it (in terms of pitch and loudness).

The looper (and most audio playback stuff) is groove/poke based, so the two are locked together for varispeed stuff.

As soon as I add the softstep implementation (nearly done) I'm going to release the v4 version, which has the concat synthesis stuff, as well as a ton of other new stuff. Quite fun/awesome sounding.

Re: Fancy Softstep driver is ready! I think...

Posted: Wed Mar 07, 2012 12:12 pm
by TomSwirly
Let us know here - even though it's a little off-topic - I'm sure the mods won't mind and it sounds fascinating.

(You can send me email to tom at swirly dot com too...)

Re: Fancy Softstep driver is ready! I think...

Posted: Wed Mar 07, 2012 1:48 pm
by Rodrigo
The way I'm building it you'd be able to run it just fine using ONLY the softstep, which is nice, and wasn't a planned thing.

I'll post it in the general section when it's done.

If you want to have a dabble here is the latest version:

It doesn't have an updated manual in there (as it's not fully 'released' yet), but it's all working (no softstep stuff yet in that version in the temp folder).