rec / swirly

Tom Swirly's Javascript libraries for Max.
http://swirly.com
46 stars 5 forks source link

Add saving and setting standalone setlists #21

Open sabarlow opened 8 years ago

sabarlow commented 8 years ago

Mr Swirly - your work is amazing and has allowed me to do a bunch of great stuff with Softstep. Thank you!

Is there any way that we can snoop in on what the SoftStep Editor sends to the Softstep when clicking the "Send to SoftStep" button? I'd like to create a max4live device that can store a softstep standalone setlist and send it to the softstep when required. The scenario that I'm envisioning is - I open my Ableton set "Apple", click the button on my "send setlist to softstep" m4l device and this sends the setlist to the softstep that I'd previously been using with this Live set. When I close this Live set "Apple" and open another Live set "Banana", I can click my "send setlist" button and that loads a fresh setlist that relates specifically to the "Banana" live set.

Is this achievable? Could you point me in the direction that might help me get started on it?

rec commented 8 years ago

I think this is probably doable!

While that part of my project isn't being used by me now (I use no triggers in my show, just my instrument, now), the whole codebase is still under active development which means it's all fresh and continuing to compile.

Probably you might have to prepare description files for each patch setting in some human-readable format.

Do send me an email to tom@swirly.com and we can strategize, but I'm sure that can be done, and I'd be happy to reopen this part of the code and make sure it's working still....

rec commented 8 years ago

So I'm realizing of course that it's the snooping on the traffic between the editor and the SoftStep that's the problem.

Indeed, I'm realizing that if you could do that, you wouldn't need to change the Max program at all. You could simply record what the editor sends to the softstep into a MIDI track in Ableton, and then play it back.

Another possibility would be to read the file format and then emit specific patches at specific times.

rec commented 8 years ago

I reformatted a dump of the file format and checked it in here: https://github.com/rec/swirly/blob/master/max/softstep/patch-dump.json

The quality of the JSON generated makes me want to pretend I never saw this file! Look at this crap:

https://github.com/rec/swirly/blob/master/max/softstep/patch-dump.json#L32-L157

This segment of code should look like this:

{
    "key": {
        "10": {
          "modline1": {
              "bankmsb": 0,
              "cc": 4,
              "channel": 1,
              "destination": "Note Set",
              "device": "SSCOM Port 1",
              "displaylinked": 0,
              ...

So I've decided that decoding this file will take more time than I'm willing to spend on this.

What's wrong with then just "recording all the MIDI" and then dumping it back?

rec commented 8 years ago

I wrote something to make a better JSON file - only for the purposes of our ability to read the files.

Here's the result: https://github.com/rec/swirly/blob/master/max/softstep/pretty.json

rec commented 8 years ago

Another possibility is if you were willing to do the research to figure out which of these values were useful, and the correspondence with MIDI/Sysex.

I realize of course that Ableton Live doesn't support system exclusives. Gosh, that continues to be the most terrible program - that bug was reported six years ago and they still haven't dealt with it.

https://forum.ableton.com/viewtopic.php?f=1&t=114066&p=1683104#p1683104

So many unresolved Ableton issues. I would be ashamed were I them.

The softstep controller has that little device built in that bypasses Ableton and successfully sends SysEX (so it IS possible, you stupid people at Ableton). But that device's source code seems to have been lost and the developer doesn't answer questions any more, which is one reason why I decided to move away from developing for this - because one day that'll break and the program will be useless.

Sigh. Well, do you have a way to easily capture these dumps? I can pretty easily put something in to emit them...

sabarlow commented 8 years ago

Wow wow, man. We're digging in.

A couple of thoughts before I start the day:

There's a fault in my thinking: if the program functions as I previously described (capture the SS Editor's SysEX dump, play it back on command), it's not going to be easy to edit nor to inspect what parameters are being set inside the hex dump. I'm trying to get away from "shrouded in mystery."

It's going to be much more useful in the long term to do as you suggest and figure out the translation between the JSON preset files and the SysEX dump.

I've not done this kind of thing before but I'll give it a go. It's a brute force kind of job, right?

Is that the process? If so, do you have any advice on techniques/tools to work with? (There's only ~1400 lines to a preset file - sweat beads on forehead)

The other option is to convince the KMI guys to send the SysEX spec. I wonder if they would. Worth a try but they're possibly keeping that one secret. I'll ask.

Re lh_midiout - I'm so glad that this exists. It works for now so I'll run with it. Such a shame that no one jumped on this at the time and integrated it into the midiout object. Fools! As a future alternative, though, (should lh_midiout break) Midi Monitor and SysEX Librarian are open source https://github.com/krevis/MIDIApps What's the likelihood of adapting some of that code to work in a Max object? There are some pretty handy MIDI snooping features in those programs. Can Max objects be written in C?

Re capturing the SysEX dumps. Currently, I'm capturing them using Midi Monitor (http://www.snoize.com/MIDIMonitor/). It spits them out looking like this: 0000 F0 00 1B 48 7A 01 00 00 00 00 00 00 00 00 00 00 | Hz | 0010 00 01 00 09 00 0B 2B 3A 00 10 00 00 00 00 01 00 | +: | 0020 02 00 5F 23 3E 00 00 00 00 06 01 01 7B 01 7B 01 | _#> { { |

That's the first three lines (the file is 739 bytes long). Let me know if you'd like a few of these files to experiment with.

On Sun, Nov 29, 2015 at 6:57 AM, Tom Swirly notifications@github.com wrote:

Another possibility is if you were willing to do the research to figure out which of these values were useful, and the correspondence with MIDI/Sysex.

I realize of course that Ableton Live doesn't support system exclusives. Gosh, that continues to be the most terrible program - that bug was reported six years ago and they still haven't dealt with it.

https://forum.ableton.com/viewtopic.php?f=1&t=114066&p=1683104#p1683104

So many unresolved Ableton issues. I would be ashamed were I them.

The softstep controller has that little device built in that bypasses Ableton and successfully sends SysEX (so it IS possible, you stupid people at Ableton). But that device's source code seems to have been lost and the developer doesn't answer questions any more, which is one reason why I decided to move away from developing for this - because one day that'll break and the program will be useless.

Sigh. Well, do you have a way to easily capture these dumps? I can pretty easily put something in to emit them...

— Reply to this email directly or view it on GitHub https://github.com/rec/swirly/issues/21#issuecomment-160332240.

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

rec commented 8 years ago

Max objects can definitely be written in C (or C++) - I've done it myself.

But you could easily record sysexes in Max without any external objects... as long as you were able to see the output from the Editor in Max.

I already "know" the sysex spec - it's all encoded in the program. So let me put pointers to the code here:

This is just for enable/tether/el:

https://github.com/rec/swirly/blob/master/js/swirly/softstep/enable.js#L8-L40

You might be perfectly happy not having ANY of these characteristics stored with your patch, since I suspect you're always want "enable" on and "tether" off and probably don't care about turning the back lighting on and off.

So hmmm... you might be able to record an entire dump and play it back and get everything you need, without any sysex involved!

rec commented 8 years ago

For example, setting the name is accomplished by setting four continuous controllers between 50 and 53: https://github.com/rec/swirly/blob/master/js/swirly/softstep/display.js#L24-L28

sabarlow commented 8 years ago

Yep, I see what you're saying.

Correct me if I'm missing something obvious here: It seems that what we have so far is the spec for turning on and off the EL, changing between tether and standalone mode, setting LEDs and the display, etc. but we don't have the spec for altering the presets and/or setlist that are stored in the softstep.

For example, we don't know what message to send to the softstep to store a preset in it (like your one here https://github.com/rec/swirly/blob/master/max/softstep/patch-dump.json).

Is that true? Forgive me if I'm not seeing the obvious :) In case it's not already clear - I am fairly new to a lot of this :)

On Sun, Nov 29, 2015 at 10:45 AM, Tom Swirly notifications@github.com wrote:

For example, setting the name is accomplished by setting four continuous controllers between 50 and 53:

https://github.com/rec/swirly/blob/master/js/swirly/softstep/display.js#L24-L28

— Reply to this email directly or view it on GitHub https://github.com/rec/swirly/issues/21#issuecomment-160346066.

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

rec commented 8 years ago

Oh, hmm, perhaps this is true - which would account for needing more Sysex stuff.

Gah, I feel like a moron but I haven't touched this code in a long time and forgot most of it.

I'm also hampered by having yet to find my Softstep. I know it's here somewhere! :-)

Question - do you own Max, or are you just Max For Live?

rec commented 8 years ago

Also: do you know if there's a way to cause the Softstep to dump its memory through MIDI? If so, we'd have an easy solution...

sabarlow commented 8 years ago

All good.

I only have Max for Live. Not Max. I can try and get another 30 day trial if it's crucial.

With previous projects, I've got around not having Max by creating patches in M4L, saving as maxpat files and running them in the max runtime.

Softstep memory dump: Short answer - i don't think so. The SS Editor at least doesn't know what the Softstep has stored inside it. The Editor SENDS presets (SysEX) but doesn't seem to ever ask the SS what it's current setlist is. I've noticed this when I've sent SysEX messages from SysEX Librarian to SS and then opened the SS Editor. Regardless of whether I've changed the setlist using SysEX Librarian, the SS Editor only knows what it's previously sent to the SS. Also, I've read in the KMI documentation somewhere that any presets that are saved in the Softstep but are not saved elsewhere can't be retrieved from the SS.

On Sun, Nov 29, 2015 at 11:12 AM, Tom Swirly notifications@github.com wrote:

Also: do you know if there's a way to cause the Softstep to dump its memory through MIDI? If so, we'd have an easy solution...

— Reply to this email directly or view it on GitHub https://github.com/rec/swirly/issues/21#issuecomment-160348201.

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

sabarlow commented 8 years ago

Here tis: http://support.keithmcmillen.com/hc/en-us/articles/202658769-Can-I-rip-presets-from-a-SoftStep-into-the-editor-

Can I rip presets from a SoftStep into the editor?

No, the SoftStep does not support ripping presets from the board onto a computer. This is why it is very important to always back up your presets if you do not want to lose them — they cannot be retrieved from the SoftStep itself.

If you want to rip presets in order to transfer them over to another computer, you should instead use the Export Preset option in the File menu of either the Basic Editor or Advanced Editor. Then import the resulting preset files on the other computer using the Import Preset option (also in the File menu).

On Sun, Nov 29, 2015 at 12:08 PM, Shaun Barlow shaunbarlowmusic@gmail.com wrote:

All good.

I only have Max for Live. Not Max. I can try and get another 30 day trial if it's crucial.

With previous projects, I've got around not having Max by creating patches in M4L, saving as maxpat files and running them in the max runtime.

Softstep memory dump: Short answer - i don't think so. The SS Editor at least doesn't know what the Softstep has stored inside it. The Editor SENDS presets (SysEX) but doesn't seem to ever ask the SS what it's current setlist is. I've noticed this when I've sent SysEX messages from SysEX Librarian to SS and then opened the SS Editor. Regardless of whether I've changed the setlist using SysEX Librarian, the SS Editor only knows what it's previously sent to the SS. Also, I've read in the KMI documentation somewhere that any presets that are saved in the Softstep but are not saved elsewhere can't be retrieved from the SS.

On Sun, Nov 29, 2015 at 11:12 AM, Tom Swirly notifications@github.com wrote:

Also: do you know if there's a way to cause the Softstep to dump its memory through MIDI? If so, we'd have an easy solution...

— Reply to this email directly or view it on GitHub.

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

sabarlow commented 8 years ago

At the least, the KMI people aren't retrieving any data from the SS.

On Sun, Nov 29, 2015 at 12:11 PM, Shaun Barlow shaunbarlowmusic@gmail.com wrote:

Here tis: http://support.keithmcmillen.com/hc/en-us/articles/202658769-Can-I-rip-presets-from-a-SoftStep-into-the-editor-

Can I rip presets from a SoftStep into the editor?

No, the SoftStep does not support ripping presets from the board onto a computer. This is why it is very important to always back up your presets if you do not want to lose them — they cannot be retrieved from the SoftStep itself.

If you want to rip presets in order to transfer them over to another computer, you should instead use the Export Preset option in the File menu of either the Basic Editor or Advanced Editor. Then import the resulting preset files on the other computer using the Import Preset option (also in the File menu).

On Sun, Nov 29, 2015 at 12:08 PM, Shaun Barlow shaunbarlowmusic@gmail.com wrote:

All good.

I only have Max for Live. Not Max. I can try and get another 30 day trial if it's crucial.

With previous projects, I've got around not having Max by creating patches in M4L, saving as maxpat files and running them in the max runtime.

Softstep memory dump: Short answer - i don't think so. The SS Editor at least doesn't know what the Softstep has stored inside it. The Editor SENDS presets (SysEX) but doesn't seem to ever ask the SS what it's current setlist is. I've noticed this when I've sent SysEX messages from SysEX Librarian to SS and then opened the SS Editor. Regardless of whether I've changed the setlist using SysEX Librarian, the SS Editor only knows what it's previously sent to the SS. Also, I've read in the KMI documentation somewhere that any presets that are saved in the Softstep but are not saved elsewhere can't be retrieved from the SS.

On Sun, Nov 29, 2015 at 11:12 AM, Tom Swirly notifications@github.com wrote:

Also: do you know if there's a way to cause the Softstep to dump its memory through MIDI? If so, we'd have an easy solution...

— Reply to this email directly or view it on GitHub.

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

sabarlow commented 8 years ago

Maybe, just maybe, the KMI guys will share the JSON to SysEX translator. I asked them here: http://forum.keithmcmillen.com/viewtopic.php?f=40&t=2766

On Sun, Nov 29, 2015 at 12:13 PM, Shaun Barlow shaunbarlowmusic@gmail.com wrote:

At the least, the KMI people aren't retrieving any data from the SS.

On Sun, Nov 29, 2015 at 12:11 PM, Shaun Barlow <shaunbarlowmusic@gmail.com

wrote:

Here tis: http://support.keithmcmillen.com/hc/en-us/articles/202658769-Can-I-rip-presets-from-a-SoftStep-into-the-editor-

Can I rip presets from a SoftStep into the editor?

No, the SoftStep does not support ripping presets from the board onto a computer. This is why it is very important to always back up your presets if you do not want to lose them — they cannot be retrieved from the SoftStep itself.

If you want to rip presets in order to transfer them over to another computer, you should instead use the Export Preset option in the File menu of either the Basic Editor or Advanced Editor. Then import the resulting preset files on the other computer using the Import Preset option (also in the File menu).

On Sun, Nov 29, 2015 at 12:08 PM, Shaun Barlow < shaunbarlowmusic@gmail.com> wrote:

All good.

I only have Max for Live. Not Max. I can try and get another 30 day trial if it's crucial.

With previous projects, I've got around not having Max by creating patches in M4L, saving as maxpat files and running them in the max runtime.

Softstep memory dump: Short answer - i don't think so. The SS Editor at least doesn't know what the Softstep has stored inside it. The Editor SENDS presets (SysEX) but doesn't seem to ever ask the SS what it's current setlist is. I've noticed this when I've sent SysEX messages from SysEX Librarian to SS and then opened the SS Editor. Regardless of whether I've changed the setlist using SysEX Librarian, the SS Editor only knows what it's previously sent to the SS. Also, I've read in the KMI documentation somewhere that any presets that are saved in the Softstep but are not saved elsewhere can't be retrieved from the SS.

On Sun, Nov 29, 2015 at 11:12 AM, Tom Swirly notifications@github.com wrote:

Also: do you know if there's a way to cause the Softstep to dump its memory through MIDI? If so, we'd have an easy solution...

— Reply to this email directly or view it on GitHub.

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

rec commented 8 years ago

Cool! I'll chime in when I get back from dinner...

As I said, if you aren't in a hurry, I'm sure we'll resolve this sooner or later. :-)

On Sat, Nov 28, 2015 at 8:16 PM, sabarlow notifications@github.com wrote:

Maybe, just maybe, the KMI guys will share the JSON to SysEX translator. I asked them here: http://forum.keithmcmillen.com/viewtopic.php?f=40&t=2766

On Sun, Nov 29, 2015 at 12:13 PM, Shaun Barlow <shaunbarlowmusic@gmail.com

wrote:

At the least, the KMI people aren't retrieving any data from the SS.

On Sun, Nov 29, 2015 at 12:11 PM, Shaun Barlow < shaunbarlowmusic@gmail.com

wrote:

Here tis:

http://support.keithmcmillen.com/hc/en-us/articles/202658769-Can-I-rip-presets-from-a-SoftStep-into-the-editor-

Can I rip presets from a SoftStep into the editor?

No, the SoftStep does not support ripping presets from the board onto a computer. This is why it is very important to always back up your presets if you do not want to lose them — they cannot be retrieved from the SoftStep itself.

If you want to rip presets in order to transfer them over to another computer, you should instead use the Export Preset option in the File menu of either the Basic Editor or Advanced Editor. Then import the resulting preset files on the other computer using the Import Preset option (also in the File menu).

On Sun, Nov 29, 2015 at 12:08 PM, Shaun Barlow < shaunbarlowmusic@gmail.com> wrote:

All good.

I only have Max for Live. Not Max. I can try and get another 30 day trial if it's crucial.

With previous projects, I've got around not having Max by creating patches in M4L, saving as maxpat files and running them in the max runtime.

Softstep memory dump: Short answer - i don't think so. The SS Editor at least doesn't know what the Softstep has stored inside it. The Editor SENDS presets (SysEX) but doesn't seem to ever ask the SS what it's current setlist is. I've noticed this when I've sent SysEX messages from SysEX Librarian to SS and then opened the SS Editor. Regardless of whether I've changed the setlist using SysEX Librarian, the SS Editor only knows what it's previously sent to the SS. Also, I've read in the KMI documentation somewhere that any presets that are saved in the Softstep but are not saved elsewhere can't be retrieved from the SS.

On Sun, Nov 29, 2015 at 11:12 AM, Tom Swirly < notifications@github.com> wrote:

Also: do you know if there's a way to cause the Softstep to dump its memory through MIDI? If so, we'd have an easy solution...

— Reply to this email directly or view it on GitHub.

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

Shaun Barlow, flutist

email shaunbarlowmusic@gmail.com AU mobile +61 478 564 531 US cell +1 347 850 7854 www.shaunbarlow.com

— Reply to this email directly or view it on GitHub https://github.com/rec/swirly/issues/21#issuecomment-160353538.

 /t

http://radio.swirly.com - art music radio 24/7 366/1000