JV-1080 EFX parameter detail query

Forum for JD, JV, XP and XV synthesizers from 1990's
vsyn7425
Posts: 104
Joined: 12:07, 6 January 2017

Re: JV-1080 EFX parameter detail query

Post by vsyn7425 »

Hi MatrixRat. Yes the JV-1010 is a little gem and the midi implementation looks like it is identical to the JV-2080, it even has a "session" card onboard and expandable so it can accept another JV-SR card. I have a JV-2080 as well but I prefer the "session" piano's on the JV-1010.

I had a crazy idea based on the way that "Change It" requests sysex strings and I discovered that you can actually get all the user memories i.e. a full dump of everything by using just 1 sysex string:

F0 41 10 6A 11 00 00 00 00 7F 7F 7F 7F 04 F7

Then narrowed it down to:

F0 41 10 6A 11 00 00 00 00 11 7F 17 01 58 F7

Unfortunately when using SendSX I got a return of 128250 bytes and when using Midi-OX I got a return of 128266 bytes. I don't know why there is a discrepency or which one, if any is correct.

I note you mention in your last post "orphaned parameters like the LSB of Tempo". I seem to re-collect that tempo was a bit problematic as it had values 20 to 250. I think Roland use the lsb and msb as a maximum of 16 each which means the first byte goes to F and then carries forward to the previous byte so 01 00 would be value 16. So in effect there is a range of 0 to 255 using two bytes.
Foksadure
Posts: 128
Joined: 12:16, 14 December 2019

Re: JV-1080 EFX parameter detail query

Post by Foksadure »

Duplicate.
Foksadure
Posts: 128
Joined: 12:16, 14 December 2019

Re: JV-1080 EFX parameter detail query

Post by Foksadure »

If that can help, you can grab a few JVXP resources here, that I gathered many moons ago:
http://poumtschak.free.fr/JVXP/
For instance:
JVXP_Sysex.zip -> David R. Green (Lilchips) JV-XP useful SysEx strings
JVXP/SoundDiverJV-XP.zip -> the OG SoundDiver editor for the JV-1010/XP-30
sounddiver_jv-xp_updater.exe -> update for the later
There is some other stuff from Lilchips, like Cakewalk *.ins script files to reach the patches from extensions boards...
vsyn7425 wrote: 14:56, 5 March 2023I think Roland use the lsb and msb as a maximum of 16 each which means the first byte goes to F and then carries forward to the previous byte so 01 00 would be value 16. So in effect there is a range of 0 to 255 using two bytes.
Roland uses 2, 3 or ever 4 byte nibbles to encode values >127

http://www.chromakinetics.com/handsonic/rolSysEx.htm

You can fin examples of this in the TB-3 Midi Implementation, page 5:

https://static.roland.com/assets/media/ ... 3_MI_1.pdf

Code: Select all

* Data marked “Use nibbled data” is expressed in hexadecimal in 4-bit units
 A value expressed as a 2-byte nibble 0a 0bH has the value of a x 16+b.
 
<Example 1> What is the decimal expression of 5AH?

From the preceding table, 5AH = 90

<Example 2> What is the decimal expression of the value 12 34H given as
hexadecimal for each 7 bits?

From the preceding table, since 12H = 18 and 34H = 52
18 x 128+52 = 2356

<Example 3> What is the decimal expression of the nibbled value 0A 03 09 0D?

From the preceding table, since 0AH = 10, 03H = 3, 09H = 9, 0DH = 13,
((10 x 16+3) x 16+9) x 16+13 = 41885

<Example 4> What is the nibbled expression of the decimal value 1258?

16 ) 1258
16 ) 78 ...10
16 ) 4 ...14
0 ... 4

Since from the preceding table, 0 = 00H, 4 = 04H, 14 = 0EH, 10 = 0AH,
the result is: 00 04 0E 0AH.
MatrixRat
Posts: 32
Joined: 02:52, 9 August 2021

Re: JV-1080 EFX parameter detail query

Post by MatrixRat »

Relevant to my project the patch sizes are important , made easier to see:-

Code: Select all

            SysCom PerfCom  PrefPart  PatchCom
JV-1080     28      40        13        48      
JV-2080     62      44        1A        4A
JV-1010     66      42        19        4A 
XP-30       66      42        19        4A
XP-50       52      42        19        49 
XP-60-80    60      42        19        49
Values are in HEX.
The synth can only give what it has so a GetAllUserData kind of request includes Perform Common, Perform Part and Patch Common all fall into the category of User Data so the total number of bytes received will be different for a 2080 wrt 1010. Makes my job of auto-detect loads easier. Perhaps try thinking XP-30.
MatrixRat
Posts: 32
Joined: 02:52, 9 August 2021

Re: JV-1080 EFX parameter detail query

Post by MatrixRat »

Thank you @Foksadure for those tips. Figured out how to deal with Roland's two, three and four byte parameters in Arduino's C from the perspective of which Bits need to go where.

So far so good, have the basics of auto-detect / configure working, now for the details.
vsyn7425
Posts: 104
Joined: 12:07, 6 January 2017

Re: JV-1080 EFX parameter detail query

Post by vsyn7425 »

Hello all. Please find below some useful single sysex strings that request the areas of memory as described in the Address Block Map in the Midi Implementation part of the owners manual for the JV-1010. Hope they will help people in backing up certain parts of memory easily and quickly.

JV-1010

System (return 504 bytes)
F0 41 10 6A 11 00 00 00 00 00 00 20 0C 54 F7

Temp Performance - Common & 16 Parts (return 653 bytes)
F0 41 10 6A 11 01 00 00 00 00 00 1F 19 47 F7

Perf Mode Temp Patches - 15 Parts & Rhythm (return 14114 bytes)
F0 41 10 6A 11 02 00 00 00 00 0F 17 01 57 F7

Patch Mode Temp Patch - Common & 4 Tones (return 645 bytes)
F0 41 10 6A 11 03 00 00 00 00 00 17 01 65 F7

User Performances 1 - 32 (return 20896 bytes)
F0 41 10 6A 11 10 00 00 00 00 1F 1F 19 2E F7

User Rhythm Setup
F0 41 10 6A 11 10 40 00 00 00 00 62 3A 14 F7 User Kit 1 (return 4439 bytes)
F0 41 10 6A 11 10 41 00 00 00 00 62 3A 23 F7 User Kit 2 (return 4439 bytes)
F0 41 10 6A 11 10 40 00 00 00 01 62 3A 13 F7 User Kit 1 & 2 (return 8878 bytes)

User Patch Bank (return 82560 bytes)
F0 41 10 6A 11 11 00 00 00 00 7F 17 01 58 F7

The byte sizes above include sysex header & footer bytes. Requesting the 128 User Patches via individual sysex strings makes SendSX trip out on my computer but Midi-OX works well. Using a single string to request all the user patches works fine in SendSX so it looks like SendSX may not have a slow enough throttling speed to cope with individual requests or maybe the JV-1010 can't send the return messages out fast enough.
MatrixRat
Posts: 32
Joined: 02:52, 9 August 2021

Re: JV-1080 EFX parameter detail query

Post by MatrixRat »

Hi @vsyn7425.

To get my project to send patch data wrt targeted synth's timing requirements, commands to request Patch Common and the four tones are basically handled by a sequencer as individual request messages. Can reproduce what you are seeing with SendSX if requests are sent too rapidly.

Experimenting with single request strings for Temp Performance - Common & 16 Parts and Patch Mode Temp Patch - Common & 4 Tones and it looks like I can ditch sequencing individual requests.

Clarifying:-
System (return 504 bytes)
F0 41 10 6A 11 00 00 00 00 00 00 20 0C 54 F7
Returns with System Common and 16 what looks like 16 Rhythm Parts.

Interestingly, the same request strings can be sent to a 1080 or 2080 and the returned sizes of Patch Common, Perform Common and Perform Parts are all correct for the targeted synth.

Here is a request string to get just the fourTones in a Temp patch:-
F0 41 10 6A 11 03 00 10 00 00 00 17 01 55 F7

Using this as project is a hardware Editor so don't necessarily need incoming Patch Common clobbering Control Source etc. settings.

Thank you again for your input.
vsyn7425
Posts: 104
Joined: 12:07, 6 January 2017

Re: JV-1080 EFX parameter detail query

Post by vsyn7425 »

Hi MatrixRat. In my previous post I made a couple of mistakes with the checksums.

User Performances 1-32 should be:
F0 41 10 6A 11 10 00 00 00 00 1F 1F 19 19 F7

and

Single string for requesting User Kit 2 should be:
F0 41 10 6A 11 10 41 00 00 00 00 62 3A 13 F7.

and to clarify :
The "System" single string request is for System Common, 16 x Scale Tune (Perf) Parts and 1 x Patch Mode Scale Tune. So in total will return 18 sysex strings.

To get the 4 tones in a Temp Patch the string should be:

F0 41 10 6A 11 03 00 10 00 00 00 07 01 65 F7

The total return should be 560 bytes which Midi-OX requests and receives successfully, however SendSX only reports receiving 140 bytes successfully but in the "midi in" window the full 560 bytes are received. Strange!

If you use the string F0 41 10 6A 11 03 00 10 00 00 00 17 01 65 F7 it will still return the correct number of bytes but that's because it's asking for more than the string can provide.
MatrixRat
Posts: 32
Joined: 02:52, 9 August 2021

Re: JV-1080 EFX parameter detail query

Post by MatrixRat »

Thank you again. No problems here with Checksum, is calculated and inserted on the fly. I'd overlooked ScaleTune, kind of shelved until V2 hardware based on Teensy 4.1's more memory.

Have got auto-detect synth working as much as it can, just cannot discern an XP-30 from a JV-1010. Does not seem possible to auto-identify added XP packs so am gonna have to build a user-interface and learn how to stick stuff in local non-volatile.

Sharing the story with a colleague today, asked "Do you reckon you can get it to talk to this" - gave me an SC-55. Hmm..
MatrixRat
Posts: 32
Joined: 02:52, 9 August 2021

Re: JV-1080 EFX parameter detail query

Post by MatrixRat »

Updating, shoehorned a Teensy 4.0 into the setup, needed the memory. Can now auto-detect added expansion packs.

Simple, just select a Patch then read it's Name and look for << No Data >> indicates absent pack. Slow, need to wait about 500ms after selecting Patch before retrieving it's name.
Post Reply