sagamusix / JDTools

Patch conversion utility for Roland JD-800 / JD-990 and compatibles
Other
46 stars 5 forks source link

Can't restore converted JD 800 sysex to JD-08 #6

Open kolutshan opened 2 years ago

kolutshan commented 2 years ago

Hi and thanks so much for this tool!!!! (I just donated).

The conversion of any JD 800 sysex to the JD-08 format works well and easy but I'm unable to restore the "JD08Backup.svd" to my JD-08 following this process: https://static.roland.com/manuals/jd-08_reference/eng/17812038.html I can copy it back to the JD-08 but restoring ends with a "Err" message on the JD-08 display. What looks interesting to me is, that the original JD-08 backup file (2 mb) and the converted sysex (131 kb) differ in file size:

Bildschirmfoto 2022-08-03 um 11 50 45

Maybe the converted file is missing additional information needed by the JD-08?

sagamusix commented 2 years ago

Hi, many thanks for your donation. :) As mentioned in the changelog, JD-08 support is still experimental because I don't actually have a JD-08. I was hoping that I can create a backup file without all the other data that JDTools cannot generate on its own (such as sequencer backup data), but apparently that might not be possible. Which is surprising me a bit because the SVD file format is clearly meant to be modular and it should be possible to create a file with just the patch data. But if that doesn't work out, I will have to change this functionality so that it takes an existing JD800Backup.svd and just replaces the patch data inside that file. I will try to get something for you to test later today.

As you provided a macOS screenshot, can I assume that you built the software yourself and I can send you a patch for the code that you then compile yourself?

sagamusix commented 2 years ago

Maybe you could also attach the existing JD08Backup.svd from your unit to this issue so that I have another data point to look at. Right now I only have a single file of that type to look at, and the more files I can compare against, the easier it will get to analyze what's going wrong.

kolutshan commented 2 years ago

Thanks for your quick reply! Unfortunately I'm not really a developer (only limited stuff in certain products) and used my other Windows gaming machine for the actual converting actions. I'm happy to assist as much as I can though and please find attached my original JD-08 backup file. JD08Backup.svd.zip

sagamusix commented 2 years ago

Okay, no worries, I will send you a compiled version of the updated tool then, once I have a potential fix for the problem. Hopefully later today. :)

kolutshan commented 2 years ago

Thanks so much!

sagamusix commented 2 years ago

Can you check if you can load this file? JD08Backup.zip

If all goes well, it should overwrite patches A11...A88 and nothing else.

sagamusix commented 2 years ago

And if that file still doesn't load, try this one next: JD08Backup-256.zip

This will overwrite all four banks A-D instead of just the first one.

kolutshan commented 2 years ago

I tried both files and none of them worked; same error

sagamusix commented 2 years ago

Okay, then the only solution I see for now is to take an existing JD08Backup.svd file and overwrite the patch data in that inside JDTools. Not really happy about that, but I guess it's the only way to proceed at this point in time.

While I work on that, could you do me another favor? I found that the JD-08 appears to have a patch parameter that the JD-800 VST doesn't have: Pan position of effect group A (item 6 in https://static.roland.com/manuals/jd-08_reference/eng/17812184.html) - could you modify a few patches to use different values for this feature and then provide the corresponding JD08Backup.svd file? I think I know which byte in the resulting patch data corresponds to this feature, but I want to be sure about it, so that I can warn in conversion that this feature is not supported.

kolutshan commented 2 years ago

Yup that solution seems reasonable but surely also more complicated. Of course I'm right on it :)

kolutshan commented 2 years ago

I changed A11 to A14 in the attached backup file JD08Backup.svd.zip .

sagamusix commented 2 years ago

Thanks, that confirms my suspicion.

sagamusix commented 2 years ago

Actually... I have one more idea to avoid relying on an existing backup. Do any these files load? JD08Backup-3-4-5.zip

sagamusix commented 2 years ago

If neither of those three files work, here is a first attempt at creating a full backup file: jd08backup.zip

If the "64patches" variant works, that would be the best. Otherwise I'd hope that the "256patches" file works instead.

Oh, and I have one more favor to ask... Does the JD-08 store arpeggiator settings with patches? If it does, could you modify a few patches to use the arpeggiator, similar to how you did with the effect group A panning? Thanks :)

kolutshan commented 2 years ago

None of "3-4-5" worked but both the "64" and "256" patches variants worked just fine!! Will check for arp settings now :)

kolutshan commented 2 years ago

It does not look like I can save arp on or off on an individual patch level. I can either turn it on and its just on for each patch I change or I can turn it off. Saving with arp on does not make any difference if I turn it off and or change patches

sagamusix commented 2 years ago

Good, one feature less to care about during conversion. :) And great to hear that the 64-patch variant works as well, that simplifies the conversion a bit. Knowing that this version works does show that there's some flexibility with regards to writing valid SVD files (like in this case, just writing less patch data), and it gives me a bit of hope that we can still find a solution that doesn't require an existing backup file.

sagamusix commented 2 years ago

Here's another attempt at writing an SVD file without an existing backup file. Maybe this one works? JD08Backup-6.zip

kolutshan commented 2 years ago

Meh, Backup 6 unfortunately was not very cooperative and said nein ;) Super cool that it seems to work with the 64 and 256 versions though, even if we have to include / merge preexisting backup file data...

sagamusix commented 2 years ago

Fair enough. Overwriting an existing JD08Backup.svd file will be the way to go then for now. I have just published a new release, v0.11: https://github.com/sagamusix/JDTools/releases - maybe you can test it a bit and see if it works for you. The usage for the conversion command remains the same as before, with the only difference that the output file must already exist. Let me know how it works for you!

sagamusix commented 2 years ago

And because I really want to get this to work now, here is one last attempt for tonight to make it work without an existing backup file. :) I think I already know the answer, but... does this file perhaps work? JD08Backup-7.zip

kolutshan commented 2 years ago

It was worth another try but the JD did not like it :/ I'll test release 0.11 now :)

kolutshan commented 2 years ago

I can already report, that version 0.11 works like a charm :)

sagamusix commented 2 years ago

Awesome! 🎉

And stubborn as I am, here's really the last try for tonight to make this work without an existing backup: JD08Backup-8.zip - I hope you don't mind testing another file.

kolutshan commented 2 years ago

I'm super happy to try as much as needed and can't say enough how happy I'm about your tool!

kolutshan commented 2 years ago

Holy cow, backup number 8 works! However all patches seem to have no sound

kolutshan commented 2 years ago

Oh wait, they have but not when I use the docked Roland keyboard but the sequencer. Maybe it has something to do with the settings

sagamusix commented 2 years ago

That's interesting! Basically the difference with this version is that it now tells the JD-08 that yes, there are system settings and pattern data, but they are empty. My hope would have been that it simply keeps using the existing system settings but from your observation it seems like something different happens. This is really helpful to know. But for now I guess you should restore one of the other backup files so that input via the keyboard works again. :)

kolutshan commented 2 years ago

Ok it gets weirder: the JD-08 now seems detected as a Jupiter Xm (midi device):

Bildschirmfoto 2022-08-03 um 23 24 46

And works when I trigger it via midi but not with the docked Roland K-25 keyboard. I supposte the reason for that might be, that the Jupiter Xm does not support it?

kolutshan commented 2 years ago

I guess this must have something to do with the ZEN core eco system which technically should run on all ZEN based Roland hardware

sagamusix commented 2 years ago

I guess this must have something to do with the ZEN core eco system which technically should run on all ZEN based Roland hardware

That's what I think as well. Internally, I think all those synths share exactly the same ZenCore engine with small variations. I have no idea how restoring the backup file could have changed anything about how the device identifies itself or is identified by other devices, though. Does it go back to normal if you restore one of the other backup files?

kolutshan commented 2 years ago

I just rebooted the device and now the keyboard is working again but all patches are now identical. I'll restore now to the converted backup

kolutshan commented 2 years ago

Ok, things are back to normal now

sagamusix commented 2 years ago

Good to know, that means I can sleep well tonight. :) I'll try to think a bit more about these observations in the next few days and see if I can come up with another way of generating the file. I'll let you know here when there's something new to test. Until then, I hope you have lots of fun with your converted patch banks!

kolutshan commented 2 years ago

Thanks so much for your work and I'm looking forward for more tests and yes, there are literally thousands of patches to try now. Thanks for opening this true legacy of patches for the JD-08. I'm sure a lot of people will be super happy about that!

kolutshan commented 2 years ago

Oh and good night :)

spicemix commented 3 months ago

BTW without reading the rest of this thread I think it's useful to mention that the JD-08 will Err on anything that isn't named JD08Backup.svd so you need to remember to rename your file that when you drag it into the RESTORE folder if it has a different name.

I should also mention there's no good instructions on building this for Mac. Google installing homebrew and once homebrew is installed, download the latest JDTools.zip source code release from the releases list here, unzip in whatever folder you want this to live in, and open Terminal app. Once in terminal,

cd <drag the JDTools folder from the Finder here to paste in the full path to it>
mkdir build
cd build
brew install cmake
cmake ..
make

If all goes well (I may have some developer privileges enabled and I forget if they are necessary?) you now have JDTools as a Unix executable file inside the build directory you made there. Now you can drag that out to copy it to somewhere more convenient to use, like your JD-08 banks folder. Finally you are now able to follow the instructions provided. Only thing is you need to call JDTools in the folder it is installed, using the prefix ./ because it won't be installed in your global path. So e.g. with a pre-existing JD08Backup.svd file also in that directory,

% ./JDTools convert svd MyJD800Card.syx JD08Backup.svd

You have my permission to copy this or a derivative into your general README if it's that helpful. Thanks so much for your work on this!