JV-1080 EFX parameter detail query
JV-1080 EFX parameter detail query
Been using a BCR-2000 set up as a JV-1080 editor. Have built a number of Midi controllers and the current Teensy-based project is alive and doing the job loads better.
Have a TFT screen displaying two rows of eight Graphic Equaliser-looking sliders linked to two rows of eight encoders. A seventeenth encoder is used to select currently up to 32 presets. Each sliderElement is fully configurable, stuff like colors, cursor shapes, sizes etc and Midi details eg, an element can send CCs, NRPNs Sysex.
Currently have it mapped to cover SysCommon, PatchCommon and two Tones which is more or less what I have the BCR doing. Unlike the BCR, I can sync the 1080 by sending all parameters as patches rather than as individual parameters. Also has a snapshot feature, unlike the BCR, you press one button and the whole layout is sent to the Synth as parameters.
Recently got incoming Roland Sysex handlers working although yet to couple input to respective parts of main database which needs a few more fields added to handle various special cases and brilliant ideas. Can already blow the BCR right out of the water, just want to do it properly.
The burning question here relates to the 12 EFX parameters uniquely associated with the 40 different EFX Types. I'm looking for the list of magic numbers relating EFX parameter# Min and Max values and what the parameter is named for all the different EFX Types. The idea is to set up and display only those Parameters associated with the current EFX Type, a bit like how the Windows editor does for the XV-2020.
The 1080's manual pages 84-99 sort of covers it but the all-important details escape me and to cap it off, my studio and the notes I took when I laboriously figured them out ages ago are 100 miles away, on the other side of yet another lockdown.
Thank you to anyone who is still reading, and most of all thanks in advance to the kind soul who might shed some light.
Have a TFT screen displaying two rows of eight Graphic Equaliser-looking sliders linked to two rows of eight encoders. A seventeenth encoder is used to select currently up to 32 presets. Each sliderElement is fully configurable, stuff like colors, cursor shapes, sizes etc and Midi details eg, an element can send CCs, NRPNs Sysex.
Currently have it mapped to cover SysCommon, PatchCommon and two Tones which is more or less what I have the BCR doing. Unlike the BCR, I can sync the 1080 by sending all parameters as patches rather than as individual parameters. Also has a snapshot feature, unlike the BCR, you press one button and the whole layout is sent to the Synth as parameters.
Recently got incoming Roland Sysex handlers working although yet to couple input to respective parts of main database which needs a few more fields added to handle various special cases and brilliant ideas. Can already blow the BCR right out of the water, just want to do it properly.
The burning question here relates to the 12 EFX parameters uniquely associated with the 40 different EFX Types. I'm looking for the list of magic numbers relating EFX parameter# Min and Max values and what the parameter is named for all the different EFX Types. The idea is to set up and display only those Parameters associated with the current EFX Type, a bit like how the Windows editor does for the XV-2020.
The 1080's manual pages 84-99 sort of covers it but the all-important details escape me and to cap it off, my studio and the notes I took when I laboriously figured them out ages ago are 100 miles away, on the other side of yet another lockdown.
Thank you to anyone who is still reading, and most of all thanks in advance to the kind soul who might shed some light.
Re: JV-1080 EFX parameter detail query
Wow! A lot of parameters and the devil of detail lurk here by the time range values and the various text fields are covered. Easy to see now my sliders jump into place when patchdata is received.
Re: JV-1080 EFX parameter detail query
Was not aware of the Electra one before following that link, thank you for posting. Looks like a seriously capable piece of Pro-grade kit. Unfortunately made from unobtanium.
Just like building my own stuff and what is on the bench in front of me actually works, but aiming to reinvent the Electra? Nope, just working on a single control surface for my own kit including some bespoke Midi devices which have unusual Midi implementation needs.
Took weeks to figure handling Roland's checksum, but once in the bag was easy to add to the existing structure so I *think* my amateur code-writing attempts at overengineering the foundations have paid off.
By the way, have figured how to sort the EFX parameters mentioned in my OP, will take a while to get the right code hieroglyphics in the bag though.
Just like building my own stuff and what is on the bench in front of me actually works, but aiming to reinvent the Electra? Nope, just working on a single control surface for my own kit including some bespoke Midi devices which have unusual Midi implementation needs.
Took weeks to figure handling Roland's checksum, but once in the bag was easy to add to the existing structure so I *think* my amateur code-writing attempts at overengineering the foundations have paid off.
By the way, have figured how to sort the EFX parameters mentioned in my OP, will take a while to get the right code hieroglyphics in the bag though.
Re: JV-1080 EFX parameter detail query
If it works, it's no amateur code. Being able to make our own tools is always cool.
Re: JV-1080 EFX parameter detail query
Just in case anybody's curious, got it working but needs a control surface.
Re: JV-1080 EFX parameter detail query
Bumping in case anyone is interested. Figured out how to deal with EFX parameters.
Initial messy codebase only addressed the JV-1080's Temp Patch area and, er well... Re-wrote the codebase so now can pull eight USER patches and everything else required to target either Temp Patch or eight Parts in Temp Perform. Yep, editor - control surface.
Playing around, adding and testing new stuff for usage on a JV-2080.
Initial messy codebase only addressed the JV-1080's Temp Patch area and, er well... Re-wrote the codebase so now can pull eight USER patches and everything else required to target either Temp Patch or eight Parts in Temp Perform. Yep, editor - control surface.
Playing around, adding and testing new stuff for usage on a JV-2080.
Re: JV-1080 EFX parameter detail query
Nice.
Encore Electronics used to sell programmable control surfaces that had Roland JV/XP profiles.
https://www.encoreelectronics.com/cont_knob1.html
https://www.encoreelectronics.com/cont_knob3.html
Since the profiles are *.ini textfiles, they can act as a self documentation for the SysEx structure:
https://www.encoreelectronics.com/k-roland.html
You've most likely figured out the temp patch & performance SysEx request dumps, but they are documented as well in ChangeIt!
viewtopic.php?p=339616#p339616
Encore Electronics used to sell programmable control surfaces that had Roland JV/XP profiles.
https://www.encoreelectronics.com/cont_knob1.html
https://www.encoreelectronics.com/cont_knob3.html
Since the profiles are *.ini textfiles, they can act as a self documentation for the SysEx structure:
https://www.encoreelectronics.com/k-roland.html
You've most likely figured out the temp patch & performance SysEx request dumps, but they are documented as well in ChangeIt!
viewtopic.php?p=339616#p339616
Re: JV-1080 EFX parameter detail query
Ok, now can target 2 x JV-1080 and one JV-2080. Meditating on a means to auto-detect 1080 or 2080 and any installed expansion packs. Have created a small database of GroupIDs for those that I have which works. Be a cool idea to populate that database with GroupID for all available EXP packs. Any suggestions where to look?
Re: JV-1080 EFX parameter detail query
They all have the same SysEx Model ID, so I don't think you can probe which is what.
Marco Stella had to build 4 versions of his editors, JV and XP, since there were MIDI engine evolutions between the JV-1080/XP-50, then the XP-60/80, and the JV-2080, JV-1010 and XP-30 after that.
https://www.oocities.org/mstella/
ChangeIt! asks you to set the model and installed boards per slot in the preferences settings as well.
Both are experienced programmers (Jürgen Moßgraber is still very active on his website and youtube channel), so my guess is it can't be done but you still could ask.
When it comes to SR-JV80 id, not sure about the GroupID you're talking about.
There's this about the combined MIDI Bank Select message for all SR-JB80 boards, though:
http://cms.rolandus.com/assets/media/pd ... -JV80s.pdf
OTOH, all the SR-JV80 binaries are available now, and the ROMulator toolchain has some Python scripts and documentation that could help deciphering what you're after:
https://www.sector101.co.uk/sr-jv-romulator.html
https://app.box.com/s/o5esgwsyp26fta61w ... ection=ASC
Marco Stella had to build 4 versions of his editors, JV and XP, since there were MIDI engine evolutions between the JV-1080/XP-50, then the XP-60/80, and the JV-2080, JV-1010 and XP-30 after that.
https://www.oocities.org/mstella/
ChangeIt! asks you to set the model and installed boards per slot in the preferences settings as well.
Both are experienced programmers (Jürgen Moßgraber is still very active on his website and youtube channel), so my guess is it can't be done but you still could ask.
When it comes to SR-JV80 id, not sure about the GroupID you're talking about.
There's this about the combined MIDI Bank Select message for all SR-JB80 boards, though:
http://cms.rolandus.com/assets/media/pd ... -JV80s.pdf
OTOH, all the SR-JV80 binaries are available now, and the ROMulator toolchain has some Python scripts and documentation that could help deciphering what you're after:
https://www.sector101.co.uk/sr-jv-romulator.html
https://app.box.com/s/o5esgwsyp26fta61w ... ection=ASC
Re: JV-1080 EFX parameter detail query
Hi there. Maybe this isn't the correct topic area to post but I have only just looked at the "Change It" editor ini file for the JV and I'm not sure if the sysex strings to request various parameters are correct. Under the file menu "settings" there is an option to choose what model of JV/XP synth you are using. The JV-1010 is grouped with the JV-1080 which I think maybe incorrect as it appears the JV-1010 sysex implementation is identical to that of the JV-2080 rather than the JV-1080.
I have done some experimentation with sending the "Change It" sysex strings and don't always get the correct response. For instance the All User Patches (JV-2080) is the request string: F0 41 10 6A 11 11 00 00 00 02 40 00 00 2D F7 and from the JV-1010 this returns 82560 bytes which is consistent with the JV-1010 being the same as the JV-2080. However send the sysex string for JV All User Performances of: F0 41 10 6A 11 10 00 00 00 00 20 00 00 50 F7 and the JV-1010 returns 20896 bytes which is consistent with it being an XP model. Also sending the sysex for JV All User of: F0 41 10 6A 11 10 00 00 00 01 7F 17 01 58 F7 from the JV-1010 returns 112334 bytes which isn't consistent with any of the JV or XP models. Wonder what's going on?
I have done some experimentation with sending the "Change It" sysex strings and don't always get the correct response. For instance the All User Patches (JV-2080) is the request string: F0 41 10 6A 11 11 00 00 00 02 40 00 00 2D F7 and from the JV-1010 this returns 82560 bytes which is consistent with the JV-1010 being the same as the JV-2080. However send the sysex string for JV All User Performances of: F0 41 10 6A 11 10 00 00 00 00 20 00 00 50 F7 and the JV-1010 returns 20896 bytes which is consistent with it being an XP model. Also sending the sysex for JV All User of: F0 41 10 6A 11 10 00 00 00 01 7F 17 01 58 F7 from the JV-1010 returns 112334 bytes which isn't consistent with any of the JV or XP models. Wonder what's going on?
Re: JV-1080 EFX parameter detail query
Just been looking into JV-1010 and it looks more like half a 2080 than 1080 so suggest setting up as a 2080, just remember any parameter in Tones 3 and 4 and Struct and Boost 3 & 4 in Patch Common, relates to stuff the 1010 does not have. Theoretically you should have access to EFX-B and EFX-C if ChangeIt supports it .
Compare these two:-
F0 41 10 6A 11 10 00 00 00 00 20 00 00 50 F7 <- note the 20
F0 41 10 6A 11 10 00 00 00 01 7F 17 01 58 F7 <- note the 7F
The 7F will return with a little more than four times the number of bytes than the 20 will.
So the 1010 just sent what was requested.
Only used ChangeIt briefly and ended up doing it with hardware and while here, was about to post this so here goes:-
Thank you @Foksadure for those links and suggestions. The Romulator looks pretty impressive.
WebSearching turned up the required numbers.
My query about GroupID details arose from building handlers for dealing with Patch Group and Patch GroupID as well as Wave Group and Wave GroupID.
Similar to Wave or Patch Tempo where two parameters carry the total value, in these, a simple bitshift and addition reconstructs the total actual value. Fairly easy to then define a control Element's Range and Scaling where both components follow a numeric sequence.
Not quite so simple with handling Group and GroupID as the numbers relating to both do not conveniently follow some numeric sequence so the bitshift and addition does not work.
In this case the single control Element points to an index of available resources which works, next is to auto-populate the index for currently three connected JVs. One has three EXP packs, the next has one EXP pack and the last has none.
Moving on to differences between 2080 and 1080 notably EFX A, B and C. The 2080 based JV handler basically hides the 2080 specific parameters and the length various Patches received or sent is adjusted to suit the 1080.
With that in mind then delved into Midi implementations for XP-30, 50, 60 and 80 and the JV-1010 and can say that support for all is possible so the mind's eye can see a Config menu where the user chooses the target JV variant and allocates a unique DeviceID.
Mulling over handling Cards or EXP packs, possibly simpler to do this part automatically once the JV handler has got hold of the synth as opposed to creating some Menu system. Either way, the actual mechanism needs to uniquely support a targeted synth.
Don't have any Data cards, so am curious to see what kind of GroupID numbers exist for a patch on one.
Stay tuned, this thing is fun and simple to use.
Compare these two:-
F0 41 10 6A 11 10 00 00 00 00 20 00 00 50 F7 <- note the 20
F0 41 10 6A 11 10 00 00 00 01 7F 17 01 58 F7 <- note the 7F
The 7F will return with a little more than four times the number of bytes than the 20 will.
So the 1010 just sent what was requested.
Only used ChangeIt briefly and ended up doing it with hardware and while here, was about to post this so here goes:-
Thank you @Foksadure for those links and suggestions. The Romulator looks pretty impressive.
WebSearching turned up the required numbers.
My query about GroupID details arose from building handlers for dealing with Patch Group and Patch GroupID as well as Wave Group and Wave GroupID.
Similar to Wave or Patch Tempo where two parameters carry the total value, in these, a simple bitshift and addition reconstructs the total actual value. Fairly easy to then define a control Element's Range and Scaling where both components follow a numeric sequence.
Not quite so simple with handling Group and GroupID as the numbers relating to both do not conveniently follow some numeric sequence so the bitshift and addition does not work.
In this case the single control Element points to an index of available resources which works, next is to auto-populate the index for currently three connected JVs. One has three EXP packs, the next has one EXP pack and the last has none.
Moving on to differences between 2080 and 1080 notably EFX A, B and C. The 2080 based JV handler basically hides the 2080 specific parameters and the length various Patches received or sent is adjusted to suit the 1080.
With that in mind then delved into Midi implementations for XP-30, 50, 60 and 80 and the JV-1010 and can say that support for all is possible so the mind's eye can see a Config menu where the user chooses the target JV variant and allocates a unique DeviceID.
Mulling over handling Cards or EXP packs, possibly simpler to do this part automatically once the JV handler has got hold of the synth as opposed to creating some Menu system. Either way, the actual mechanism needs to uniquely support a targeted synth.
Don't have any Data cards, so am curious to see what kind of GroupID numbers exist for a patch on one.
Stay tuned, this thing is fun and simple to use.
Re: JV-1080 EFX parameter detail query
Hi @vsyn7425
A JV series Tone patch has five components:-
Patch Common - 85 bytes and four tones each 140 bytes so to request a single Tone patch five requests are sent. If you want to receive 128 User Tone patches then you need to send 128 x 5 requests.
This is what my JV handler sends to request User Patch number 1 from a JV-2080.
F0 41 10 6A 11 11 00 00 00 00 00 00 4A 25 F7
F0 41 10 6A 11 11 00 10 00 00 00 01 01 5D F7
F0 41 10 6A 11 11 00 12 00 00 00 01 01 5B F7
F0 41 10 6A 11 11 00 14 00 00 00 01 01 59 F7
F0 41 10 6A 11 11 00 16 00 00 00 01 01 57 F7
Re: the JV-1010, websearching turned up this thread on Gearspace:-
https://gearspace.com/board/electronic- ... tware.html
which led here:-
https://archive.org/details/emagicsounddiver3.0.5.4
Which looks like the editor from the original CDRom that came with the 1010.
Hmm, am interested in monitoring Midi traffic to nut out how it detects different JVs so will attempt to get it up and running which it won't on Win7 but apparently does on Win10.
So, thank you for posting on this thread, this little sidestep has turned relevant stuff for my project.
A JV series Tone patch has five components:-
Patch Common - 85 bytes and four tones each 140 bytes so to request a single Tone patch five requests are sent. If you want to receive 128 User Tone patches then you need to send 128 x 5 requests.
This is what my JV handler sends to request User Patch number 1 from a JV-2080.
F0 41 10 6A 11 11 00 00 00 00 00 00 4A 25 F7
F0 41 10 6A 11 11 00 10 00 00 00 01 01 5D F7
F0 41 10 6A 11 11 00 12 00 00 00 01 01 5B F7
F0 41 10 6A 11 11 00 14 00 00 00 01 01 59 F7
F0 41 10 6A 11 11 00 16 00 00 00 01 01 57 F7
Re: the JV-1010, websearching turned up this thread on Gearspace:-
https://gearspace.com/board/electronic- ... tware.html
which led here:-
https://archive.org/details/emagicsounddiver3.0.5.4
Which looks like the editor from the original CDRom that came with the 1010.
Hmm, am interested in monitoring Midi traffic to nut out how it detects different JVs so will attempt to get it up and running which it won't on Win7 but apparently does on Win10.
So, thank you for posting on this thread, this little sidestep has turned relevant stuff for my project.
Re: JV-1080 EFX parameter detail query
Hi MatrixRat. Thanks for your valued input. I'd already created a sysex file that requested all the user patches individually which should return 82560 bytes for the JV-1010/2080. (140 x 4 = 560 + 85 = 645 x 128 = 82560).
But when I looked at the "Change It" .ini file found that the author was requesting the full user patch bank with one sysex string. It did the job but I
found out by trial and error that I could get the JV-1010 to dump the exact number of bytes using the sysex string:
F0 41 10 6A 11 11 00 00 00 00 7F 17 01 58 F7
and not
F0 41 10 6A 11 11 00 00 00 02 40 00 00 2D F7 as "Change It" uses.
I can understand why the "Change It" sysex request works because it is requesting a string bigger than the JV-1010 can return so it returns the full 82560 bytes which is the number of bytes in that area of memory.
I think that using one sysex command to request all the user patches is more efficient than using 128 individual requests because there is only traffic going one way most of the time so the sysex recorder finds it easier to handle.
The same thinking could be used on the user performances. I have created a sysex file of individually requesting them but need to work out the exact single sysex string to request them all in one go.
One thing to note is how Roland deal with any request values that are larger than 128 i.e. higher than 7F (which is the highest value midi conveys). They simply carry them over to the previous byte i.e. 01 01 hex would = 128 + 1 = 129 dec.
Just a few other points. I think the link to emagic SoundDiver is actually the full version of the software whereas the one that came with the JV's is only version 2 so is a bit flaky. Also a few months ago I found a great program called JVEdit,(not the JV-80, JV-90 and JV-1000 editor). It is a great editor for the JV-1080, JV-2080 and JV-1010. Just browse for "JVEdit".
But when I looked at the "Change It" .ini file found that the author was requesting the full user patch bank with one sysex string. It did the job but I
found out by trial and error that I could get the JV-1010 to dump the exact number of bytes using the sysex string:
F0 41 10 6A 11 11 00 00 00 00 7F 17 01 58 F7
and not
F0 41 10 6A 11 11 00 00 00 02 40 00 00 2D F7 as "Change It" uses.
I can understand why the "Change It" sysex request works because it is requesting a string bigger than the JV-1010 can return so it returns the full 82560 bytes which is the number of bytes in that area of memory.
I think that using one sysex command to request all the user patches is more efficient than using 128 individual requests because there is only traffic going one way most of the time so the sysex recorder finds it easier to handle.
The same thinking could be used on the user performances. I have created a sysex file of individually requesting them but need to work out the exact single sysex string to request them all in one go.
One thing to note is how Roland deal with any request values that are larger than 128 i.e. higher than 7F (which is the highest value midi conveys). They simply carry them over to the previous byte i.e. 01 01 hex would = 128 + 1 = 129 dec.
Just a few other points. I think the link to emagic SoundDiver is actually the full version of the software whereas the one that came with the JV's is only version 2 so is a bit flaky. Also a few months ago I found a great program called JVEdit,(not the JV-80, JV-90 and JV-1000 editor). It is a great editor for the JV-1080, JV-2080 and JV-1010. Just browse for "JVEdit".
Re: JV-1080 EFX parameter detail query
Must admit, I don't grasp that Changeit request string either, not saying it's wrong- just something to learn more about.
Have tried a few JV editors but mouse drags and clicks are just not a control surface and I want to play the JV synth engine like an instrument while a couple of arpeggiators and a sequencer fuss over notes and timing.
Did get SoundDiver working, V3 something, supports a load of synths. It found my 2080 and automatically pulled in everything User - in lots of chunks. Caught sight of what a JV says in response to auto-detects. Intend too scratch a little deeper to see what SoundDiver asks for.
From there, studied Midi implementations for XP-30 , 50, 60 , JV-1080, 2080 and 1010, dived in and mapped them all. Zooming back a little, the main engine here handles three connected JV / XP and simple button presses and encoder twists teleport the user to every parameter across the whole lot and Bingo! it works. Gonna be incentive to fix my dead XP-30 sooner rather than later
Next is to apply per synth resource management - native and any added Data cards or EXP packs and dig in to auto-detect.
A few words about the workings of JVhandler, all parameters are basically indexed so orphaned parameters like the LSB of Tempo or similar allocated a control Element - just get left outta the index. Special case handlers sort the details.
The door is wide open for customizable layouts and experimental stuff exists to re-order the layout of a Tone patch and is currently Global and that's about to change.
Re the JV-1010, after trolling Midi implementations, it looks more like an XP-30 than any of it's siblings and is definitely not half of anything, just a powerhouse in a small box.
... Looking for one, maybe two.
Have tried a few JV editors but mouse drags and clicks are just not a control surface and I want to play the JV synth engine like an instrument while a couple of arpeggiators and a sequencer fuss over notes and timing.
Did get SoundDiver working, V3 something, supports a load of synths. It found my 2080 and automatically pulled in everything User - in lots of chunks. Caught sight of what a JV says in response to auto-detects. Intend too scratch a little deeper to see what SoundDiver asks for.
From there, studied Midi implementations for XP-30 , 50, 60 , JV-1080, 2080 and 1010, dived in and mapped them all. Zooming back a little, the main engine here handles three connected JV / XP and simple button presses and encoder twists teleport the user to every parameter across the whole lot and Bingo! it works. Gonna be incentive to fix my dead XP-30 sooner rather than later
Next is to apply per synth resource management - native and any added Data cards or EXP packs and dig in to auto-detect.
A few words about the workings of JVhandler, all parameters are basically indexed so orphaned parameters like the LSB of Tempo or similar allocated a control Element - just get left outta the index. Special case handlers sort the details.
The door is wide open for customizable layouts and experimental stuff exists to re-order the layout of a Tone patch and is currently Global and that's about to change.
Re the JV-1010, after trolling Midi implementations, it looks more like an XP-30 than any of it's siblings and is definitely not half of anything, just a powerhouse in a small box.
... Looking for one, maybe two.