Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add saving and setting standalone setlists #21

Open
sabarlow opened this issue Nov 27, 2015 · 16 comments
Open

Add saving and setting standalone setlists #21

sabarlow opened this issue Nov 27, 2015 · 16 comments

Comments

@sabarlow
Copy link

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
Copy link
Owner

rec commented Nov 27, 2015

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 [email protected] 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
Copy link
Owner

rec commented Nov 28, 2015

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
Copy link
Owner

rec commented Nov 28, 2015

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
Copy link
Owner

rec commented Nov 28, 2015

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
Copy link
Owner

rec commented Nov 28, 2015

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
Copy link
Author

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?

  • Create a test setlist, dump it
  • Make one modification, dump it, compare the two, document changes
  • Make another modification, dump it, compare the two, document changes...
  • Repeat ad nauseum

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 [email protected]
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
#21 (comment).

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

@rec
Copy link
Owner

rec commented Nov 28, 2015

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
Copy link
Owner

rec commented Nov 28, 2015

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
Copy link
Author

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 [email protected]
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
#21 (comment).

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

@rec
Copy link
Owner

rec commented Nov 29, 2015

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
Copy link
Owner

rec commented Nov 29, 2015

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
Copy link
Author

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 [email protected]
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
#21 (comment).

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

@sabarlow
Copy link
Author

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 [email protected]
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 [email protected]
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 [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

@sabarlow
Copy link
Author

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 [email protected]
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 [email protected]
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 [email protected]
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 [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

@sabarlow
Copy link
Author

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 [email protected]
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 <[email protected]

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 <
[email protected]> 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 [email protected]
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 [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

@rec
Copy link
Owner

rec commented Nov 29, 2015

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 [email protected] 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 <[email protected]

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 <
[email protected]

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 <
[email protected]> 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 <
[email protected]>
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 [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

Shaun Barlow, flutist

email [email protected]
AU mobile +61 478 564 531
US cell +1 347 850 7854
www.shaunbarlow.com

Shaun Barlow, flutist

email [email protected]
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
#21 (comment).

 /t

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants