Forum Replies Created
-
AuthorPosts
-
Hello GonzoB!
I also wrote in Ctrlr a Patch Editor for JV-1010 and family however is just a Patch Editor. I created this patch editor using JV-1010 and JV-1080.
You can try and chek if it will work for you and your necessities.
Here is the link:
Hello m.tarenskee!
I´m working at same time for 3 versions of JV PatchEd then I changing the versions all time with new ideas, that in many times comes from users, or fixes.
Version 1: For Roland JV-80, JV-880
Version 2: For Roland JV-1010, JV-1080, JV-2080, XP-30, XP-50, XP-60, XP-80
Version 3: For Roland JV-90, JV-1000 – In test nowThis why only the version .exe is on line. Only the final product.
Hello Dreamer!
Firstlly I would like to thank you for your interest in try JV-PatchEd!
I also have a JV-1010 and JV-1080. The JV-1010 was the reason to create this version of software since is very powerfull synth however, as you know, very limited to editions. This software are working very well with these units since was developed and tested with th JV-1010 and JV-1080.
I created for you a .dll version but is a 32bit version. I´m on Windows 7-32. I hope that work for you!
Here is this link to download:
https://drive.google.com/file/d/16IonvW3gMI7o72QEFbEt1LYWFyfKCy0y/view?usp=sharingLet me know if working and your opinion!
- This reply was modified 3 years, 9 months ago by lecleto.
Yeah, Dnaldoog! Now working perfectly!!!
Saving patches on PC! Your example panel was perfect!!
So, the first upgrade to JV-Patched JV-XP is ready!
I will extend to my other panel to Roland JV-880.Many thanks!!
Hello Dnaldoog!
Yes will work on JV-1010!
I also have a JV-1010 and I really like of this unit! In reality JV-1010 was my first motivation to do this job that you really helped me a lot then your comments are really welcome! Part of your vast knowledge is inside of this panel. Remember when we talk about Roland checksums, message box, timers and many other topics. Yes, all these things are working inside of this panel.
So, if possible, try this ang give me your feedback!
Hello Dnaldoog! One more thanks!
I published now a new panel for Roland JV and XP series. In my post I give my special thanks to you that always help me!
I will try here. Will be perfect this feature in my panels.
Thank you sooo much!!
Hello Slurp96!
Sorry, I understood that you are trying make VST version of panel.“Only the software controls the HW, the hardware doesn’t control the software. I think there’s a setting I must do in the modulator so the software listen to the HW, but I don’t know what that is.”
Your software control the hardaware becasue you setted each sysex message in each correspondent modulator. From hardware to software you will have to use a Lua Method or Function that will “Called when a panel receive a MIDI message”. Your hardaware will send a “Dump” that is train of bytes that will contain all the informations that you need. The Lua function, or Lua Method will take each byte of this “train” of bytes an will associate to each modulator and this Lua Code will be called when you receive a MIDI message.
Here is the example of Dump from Roland JV-880
F0 41 10 46 12 00 08 20 00 41 2E 50 69 61 6E 6F 20 31 20 20 20 00 04 5B 59 00 01 5A 10 00 00 00 08 7F 40 3E 02 00 00 00 00 00 5D 3A F7
Here is an example of Lua Code Called when panel receives a MIDI message:
assignValues = function(midiMessage) commonData = midiMessage:getData():getRange(1,44) --get string that contains common patch data -- #### Common Patch Data Section #### Common = commonData:getByte(6) if Common==Ox20 then panel:getModulatorByName("NAME-01"):setValueMapped(commonData:getByte(8), false) panel:getModulatorByName("NAME-02"):setValueMapped(commonData:getByte(9), false) panel:getModulatorByName("NAME-03"):setValueMapped(commonData:getByte(10), false) panel:getModulatorByName("REVERB-TYPE"):setValueMapped(commonData:getByte(21), false) panel:getModulatorByName("REVERB-LEVEL"):setModulatorValue(commonData:getByte(22), false, false, false) end end
Then, the first thing that you have to do is find what is the sysex message that you have to send to your synth that will gives back to panel a Dump that contain the information that you have to associate to your modulators.
- This reply was modified 3 years, 10 months ago by lecleto.
Hello Slurp96! Welcome to Ctrlr!!!
How do you said that is your first panel, as a developer, I wolud like to suggest that you first try made a standalone version. Yoy just have to Export as Restricted Instance. This will create a .exe file. After this works in two ways Software to Hardware and Hardware to software, go to the next step. The VST have some particularities that you can´t see in a first steps.Thank you Thomas and Dnaldoog!
The problem is solved!
Now I´m just trying adjust the time for best compromise solution.This worked!
function copyTone() comboValue = panel:getModulatorByName("COPY-SELECT"):getModulatorValue() if comboValue==01 then -- Copy T1 to T2 a = panel:getModulatorByName("T1-WAVEGROUP"):getValue() -- get the present value of modulator panel:getModulatorByName("T2-WAVEGROUP"):setModulatorValue(a,false,true,false) -- set the same value for this modulator, sending it to the synth os.execute(sleep(125)) a = panel:getModulatorByName("T1-WAVE-INT"):getValue() panel:getModulatorByName("T2-WAVE-INT"):setModulatorValue(a,false,true,false) -- set the same value for this modulator, sending it to the synth os.execute(sleep(125)) a = panel:getModulatorByName("T1-SWITCH"):getValue() panel:getModulatorByName("T2-SWITCH"):setModulatorValue(a,false,true,false) -- set the same value for this modulator, sending it to the synth os.execute(sleep(125))
One more time, Thanks!
Mr. Dnaldoog, my partner developer, thank you one more time!
The second option is excatly what I need! I´m in the end of my second panel, now for Roland JV-1010, JV-1080, Xp-50, Xp-60, XP-80, and I have in this panel a Button to store a patch, then when the user click on this button the Lua Code is started to request a dump from JV and also start timer to guarante a time to refresh the tables that will be used to calculate a a checksum that you also gived me away how to do, and when the timer goes to 1, after 1,5 second, calls the second function where the Roland checksum is calculated, the data patch is sended to JV and, at the end, I stop timer and show the message.
Thank, thank thank you!!
Hello Dnaldoog and Ctrlrs!
What does it means:
(value,false,true,false)
The first “value” is the value that you will get or set on modulator but false,true,false. What is false and true?
I´m using this all time but I don´t know why!
Thank you!Hello Dnaldoog and GoodWeather, many thanks for explanation.
I´m in the end of my second panel but this basic questions are still fragile in my mind. No more after this rich explanations. Goodweather I downloaded your 4 versions of Ctrlr tutorial that I saw in other post but I still have to read with carefuly. Excelent action for begin in Ctrlr world!
Thank you guys!
Yeah Dnaldog!
I perceived this problem in my first exports. Tricks and tricks! We are heros making this panels!!
I have more questions…
Is necessary always clean this cache folder and files or just when we have a resource problem?
What is the real diference between .panel and .bpanelz
Thank you in advance!Hello Dnaldoog!
Always you with your genorosity!
Yeah! More than one day trying do this and now my panel finaly with a logo!!
As I said I lost all my Lua Codes but the panel now are working. As you described in other post I´m now saving a bpanelz before any more hard action. I also copy all scripts on notepad. This helped me today!! I lost the panel one more time trying to put this image but now you solved my problem!
Sometimes I feel Ctrlr as labyrint!!
I´m glad that we have people as you in this forum!Thank you one more time!!!
Hello Dnaldoog! Thank you for answer!
Yesterday I restored from backup tha last save of work that was 2 day before since not was possible restore the file.
I worked for today but, to my surprise, one more time all Lua Scripts desapear and I lost one day more of work!
What is the best practice to backup files? Save the .panel or .bpanelzThank you!
- This reply was modified 3 years, 11 months ago by lecleto.
Thank you Dnaldoog!
Very useful for all of us Roland users and developers!
Hello Ctrlrs!!
First of all: Thank you for all inputs!!!
The problem is solved!!! As dnaldoog sugest me I just replaced uiSliderVisibleName by componentVisibleName
Here is the code that are working perfectly now:efxConfig = function(mod, event) slide01 = panel:getComponent("EFX-PRM-01") comboValue = panel:getModulatorByName("EFX-TYPE"):getModulatorValue() if comboValue==00 then -- EFX - STEREO-EQ slide01:setProperty ("componentVisibleName", "LO-FREQ", false) slide01:setProperty ("uiSliderMin", 0, false) slide01:setProperty ("uiSliderMax", 1, false) slide02:setProperty ("componentVisibleName", "LO-GAIN", false) slide02:setProperty ("uiSliderMin", 0, false) slide02:setProperty ("uiSliderMax", 30, false)
Just a detail!!!
Many thanks for all!
Hello João!
As you described, everything worked fine!
Icon associated to exe standalone file.
Thank you for your inputs!
Best regards from Brazil!Thank you João Marco!
This program will create a .ico file from my image right?
Where in Ctrlr I will associate with this .ico file to my .exe file?April 8, 2020 at 1:41 am in reply to: Problems with Panel Data Request as Restricted Instance #117735Hello Dnaldoog!
Now everything are working and my “Store Patch” function on my panel is ready! Thank you so much!!
I run the “for” loop inside the store function and one “for” for each tone! I had to change “(” by “{” on checksumCmn vector.
This is the final Lua script for Roland checksum:
--### Checksum of Common Data ### checkSumCmn = {storePlace, storePatch, tableCommon[6], tableCommon[7], tableCommon[8], tableCommon[9], tableCommon[10], tableCommon[11], tableCommon[12], tableCommon[13], tableCommon[14], tableCommon[15], tableCommon[16], tableCommon[17], tableCommon[18], tableCommon[19], tableCommon[20], tableCommon[21], tableCommon[22], tableCommon[23], tableCommon[24], tableCommon[25], tableCommon[26], tableCommon[27], tableCommon[28], tableCommon[29], tableCommon[30], tableCommon[31], tableCommon[32], tableCommon[33], tableCommon[34], tableCommon[35], tableCommon[36], tableCommon[37], tableCommon[38], tableCommon[39], tableCommon[40], tableCommon[41]} -- returns the checksum of all data values local total=0 local result=0 for i,v in ipairs(checkSumCmn) do total=total+v --add up all the numbers if(total > 127) then total=total - 128 end end result=128-total if result== 128 then result = 0 end -- If the result is 128 then substitute a value of 0 tableCommon[42] = tonumber(result,10)
--### Send Sysex Messages ### --Send Common Patch Data to be stored commonSysex = CtrlrMidiMessage({0xF0, tableCommon[0], tableCommon[1], tableCommon[2], tableCommon[3], storePlace, storePatch, tableCommon[6], tableCommon[7], tableCommon[8], tableCommon[9], tableCommon[10], tableCommon[11], tableCommon[12], tableCommon[13], tableCommon[14], tableCommon[15], tableCommon[16], tableCommon[17], tableCommon[18], tableCommon[19], tableCommon[20], tableCommon[21], tableCommon[22], tableCommon[23], tableCommon[24], tableCommon[25], tableCommon[26], tableCommon[27], tableCommon[28], tableCommon[29], tableCommon[30], tableCommon[31], tableCommon[32], tableCommon[33], tableCommon[34], tableCommon[35], tableCommon[36], tableCommon[37], tableCommon[38], tableCommon[39], tableCommon[40], tableCommon[41], tableCommon[42], 0xF7}) panel:sendMidiMessageNow(commonSysex)
-
AuthorPosts