Roland has just released the new JUNO-X. This synth is a sibling of the current JUPITER-X/Xm, with essentially the same backend firmware, a Juno style user interface, and a few different pre-loaded models.
The SysEx implementation within the X family is identical. The JUNO-X does have a different Model ID. BUT - Roland have also extended their model ID to five bytes, so it is not a simple StreamByter replacement of the model ID #. Instead, we have to change the model ID and add/delete a byte in the SysEx messages depending on the direction of the translation.
But what about the checksum?
1. Data length remains the same, so the checksum value is unaffected.
2. The checksum never seems to matter, as long as the field is present to keep the message length correct.
Also - since the JUNO models and Tones are different, some of the preset tones are not accessible in the Jupiter layouts, and only the Juno 106 model has an editor. If there is interest, I may customize the layouts for the Juno-X. Let me know.
Layout - Limitations with the Juno
Jupiter X Manager - No editor for and will not recognize Juno-60 or Juno-X tones
Jupiter X ZEN-Core Editor - will not recognize Juno-X & Juno-60 model tones
Jupiter X Jupiter-X Model Editor - not currently applicable to the Juno-X (unless that model is released to the Juno-X)
Jupiter X Global Settings - works as is (do not try to update Scenes higher than 16-16)
Jupiter X Tone Wheel Model - works as is
The StreamByter code needed to translate the model ID follows:
- For input, this goes BEFORE any other existing SB code.
- For output, it goes AFTER any existing SB code.
- Paste in the appropriate SB block, press INSTALL, save the layout with the SB code addition
Note - this code covers most data transmitted by the Juno, either with an edit or with a Load request from the layouts. It does NOT translate the complete reports transmitted on change on Scene Style or Rhythm, or on selecting a new Part / Tone Mfx. I am working on that additional code.
-----
# Outbound translator, goes after any existing SB code.
# From Jupiter-X to Juno-X format
If M00 == F0 41 10 00 # Roland Header
IF M04 == 00 00 65 # Matched Jupe format
IF ML <= 12 # Not handling longer messages now
SND M0 M01 M02 M03 M04 M05 00 12 M07 M08 M09 M0A M0B M0C +F # Send through first data position
IF ML == 0F
SND M0D M0E +F
END
IF ML == 10
SND M0D M0E M0F +F
End
IF ML == 11
SND M0D M0E M0F M10 +F
End
If ML == 12
SND M0D M0E M0F M10 M11 +F
END
END
FX = XX +B # Block the original inbound message
END
End
-----
# Inbound translator, goes before any existing SB code.
# From Juno-X to Jupiter-X format
If M00 == F0 41 10 00 # Roland Header
IF M04 == 00 00 00 12 # Matched Juno format
IF ML <= 13 # Not handling longer messages now
SND M0 M01 M02 M03 M04 M05 65 M08 M09 M0A M0B M0C M0D +F # Send through first data position
IF ML == 10
SND M0E M0F +F
END
IF ML == 11
SND M0E M0F M10 +F
End
IF ML == 12
SND M0E M0F M10 M11 +F
End
If ML == 13
SND M0E M0F M10 M11 M12 +F
End
END
FX = XX +B # Block the original inbound message
END
END