Forum Replies Created
-
AuthorPosts
-
For me it worked fine, but it was limited. Once I knew about Ctrlr I donβt need anymore.
Thanks Mr Kubiak!!!Yes indeed. Thanks Roman!
I have also a 25SL MkII but I would never want to control all the params of a synth like that. One button, one function and OK, max 2 pages so you can memorize…
Thus, when you have much more params, best is PC and Ctrlr πJust got my cup of tea as well…
You can put decimal or hexa in the CtrlMidiMessage table. If you write a number as 123 it will be taken as decimal while if you write 0xF5 it will be taken as hexa.
112-sum is indeed your checksum
So, with one calculation of sum you can fill in any message and send itexp = exponent
2 exp 0 = 1
2 exp 1 = 2
2 exp 2 = 2 x 2 = 4
2 exp 3 = 2 x 2 x 2 = 8
etc…Didn’t check the actual content/meaning of the message (just looked at it to explain) so I let dasfaker explaining the 112-sum…
4 cats here but they are sleeping right now…
Looks like many of us with synths are also having cats.
Worth a thesis to understand πSorry Dominic. Try finding equivalent stuff where you will learn programming. In fact you can learn with whatever language. Each of them have their specific syntax that you must get used to, each of them have also specific ways of handling data BUT all share the same basic elements (declaring variables, loops, conditions, input/output, functions/subroutines…).
In the beginning above, you declare the variables (=placeholders) that will contain some data. They are initialized to nil which is a special wor din Lua saying “empty”
local means that the variables are only valid within this function. You can use the same variable name in another function and it will be different. If you are not using the keyword local then you can share the content of the same variables throughout your complete program/panel
Then you have 4 condition statements if something is true then do this else do that end
panel:getModulatorByName(βP1β):getValue() is something specific to Ctrlr implementation. You use it to retrieve a value from a modulator.each Pn is a 0 or a 1 and thus represents a bit in binary (base 2)
a decimal number is a number in base 10. You can express the same number (0 to 15 for example) in binary with 4 bits (P1 to P4) by multiplying each bit to its corresponding value.10 = 0 x (10 exp 0) + 1 x (10 exp 1) this is decimal representation
10 = 0 x (2 exp 0) + 1 x (2 exp 1) + 0 x (2 exp 2) + 1 x (2 exp 3) = 1010 in binary
10 = 0x1 + 1×2 + 0x4 + 1×8
You find back the formula used by dasfaker to calculate a sum…THen you observer all your if statements and you will see that first a sum is calculated then 112-sum is also calculated. All the rest remaining the same…
To this explanation, you should know about hexadecimal representation… Like binary (base 2), decimal (base 10) you have hexadecimal (base 16)
In hexa, you go 01 to 09 then A, B, C, D, E and F to reach 15
So, 10 = 0A = 0101Now you can understand dasfaker’s code and the message that is sent π
So many things to learn…What a wonderfull world!
Et bien, on est deux Dominique sur Ctrlr! π
Try this course (just found it; seems to be some adds but seems covering Lua and teach you programming step by step – in french)
http://fr.craftstudio.wikia.com/wiki/Tutoriels/Apprendre_%C3%A0_programmer_en_LuaWhat about collaborating on this?
I can adapt the Pro 2 panel. I already had a look some months ago to the P12 manual and sysex data as I wanted to build some converter P12 to Pro2 programs in order to exchange files.
However, I don’t have a P12 and cannot test basic stuff.
I could guide you in giving me the needed input and once I would have it I could adapt the Pro2 panel accordingly.P12 and Pro2 are very similar in everything but the filters and of course only one layer.
Let me know and you can also PM me so we can tune further (would be too long to exchange on this forum…)
I support dasfaker’s way of programming.
Always try to analyze the logic and build a formula rather than coding all possible cases!
Easier maintenance, less text, less risk of errors (all or nothing works)… πTry to gradually learn that, human fly. You will feel good each time you derive some few lines formulas instead of trying enumerating all possibilities.
Good luck!Hi,
I built one for the Pro 2 and the P12 is very similar except the filters.
Were you planning to build a panel?Hi, as always, before starting with something complex, start simple… π
In this case, take the example provided by Roland.
Setting Reverb Type of Program to Room 2
F0 41 10 00 00 00 0F 12 18 00 02 00 02 64 F7Check first with MidiOX and check the synth is reacting and changing.
If yes, put this in a Ctrlr method that sends the message. Check Midi monitor and also that the synth is reacting.When this is working, we can tackle other or more complex parameters.
As many things in Ctrlr are based on Juce, it is a smart move to also do it for OSC π
OK π
Let’s first try to check if the sysex I’m building is working…
Do you have a PC or Mac? If PC then download Midi-OX. It allows you to exchange data with your synth. Do you know Midi-OX or do you need some guidance?About my panel (and independently of your synth): does it work? Select a program then select a partial then change wave (you must change wave to get the sysex – this can be improved later).
Please make some choice and post the string or a screenshot.Instead of Midi-OX, you can also open the Midi Monitor within Ctrlr. Activate Input and Output monitoring.
At the bottom of the console window, you can type
panel:sendMidiMessageNow(CtrlrMidiMessage(“your_sysex_string”))
REPLACE your_sysex_string by what you get in the panel I gave you
then press enterWhat do you see in the Midi monitor?
What do you see on the JDXA?
You said you succeeded to modify something using a button. Can you do it again and check the Midi Monitor window?We’ll find the issue; just a question of patience…
And, after the rain comes the sun πYes it is a pain that there is no wiki and it is the reason I wrote my Step by Step guide (ongoing work on a 2.0 version with a lot of Lua explanations + memory blocks + timers + …). http://ctrlr.org/forums/topic/ctrlr-step-by-step-guide/
1. I’ll check that one
2. Don’t know
3. Can you ask dasfaker? He is using that in his SnowEd panel I think but I don’t have the source. Maybe this is also done in other panels. Did you search the forum?
4. You can add font as resource (as images) then use it in your panel. That’s the theory. I did it for my Pro2 panel and got issues and strange behavior so I decided NOT to do it but to provide the font separately when distributing the panel. People should install the font before using the panel and the font becomes an OS font.
5. I guess you do that afterwards (Windows property)
6. I think this is described in Juce API. I’m using a differentiation left/right and I’m pretty sure having seen single/double.
7. Yes, there are. I’m using them in my Pro2 panel (Timers method containing all timers). You will also find examples in the forum.Really cool! What are the things you would like help with (no promises…)?
Bonjour Xavier-Joseph!
Please have a look and try this panel…- You can choose the program
- You can choose the partial
- You can choose the wave (I just put a limited list)
- When changing the wave, you get an adapted display + the sysex to send
In the code, you should uncomment the actual send to the synth (I don’t have a JDXA but may buy one when the DM12 will be out – I guess many JDXA will be available for cheap money…).
Before doing that, take a copy of the sysex and send it to the JDXA to see if the wave form is adapting.
If issues, just let me know.The code in the panel is just an appetizer but gives you a good idea of what you should do. Many params in the JDXA and lot’s of programming but could be really nice.
Btw, I saw there was an editor provided by Roland. Isn’t it good enough?
Have fun π
Attachments:
You must be logged in to view attached files.Could be good to start a separate thread for your Novation panel π
Thx for your explanations, I see a bit better…
– Based on user/fx/inst/mixer selection, I would set a variable so one knows at any time what is selected
– Based on that variable, you could change all labels of the controls. When a contorl is modified, the corresponding OnChange Lua method will perform an if..then..elseif… to know what action to perform
– LED ring behaviour: I’m not aware of the 6 possibilities. Do you mean for the same rotary button? If yes, then you need to build 6 images (each containing the same number of frames) and then I suppose you can switch the image resource according to the wished behaviour
– devices: I didn’t find a way to know if the smiley was happy or sad. I can only find if my synth is in the listisPro2InDevices = function() sDevices = utils.getMidiInputDevices() for i=0, sDevices:size()-1 do if tostring(sDevices:get(i))=="Pro 2" then return (true) end end return (false) end
Please wait doing manual work while we try supporting you with code…most things can be automated…
Edit: I have now automated part / partial / wave and I’m busy with the checksum.
Will continue tomorrow…Thx Poss!
I was chatting with Xavier-Joseph about this topic… Now that you clarified some stuff, I can take the relay for the checksum (however I’m sick today).
I come back to you as soon as possible…Now you are talking! Great job done. Exactly what I have between my PC keyboard and my PC screen. I mean… a 25SL MkII π
What do you want to change? The complete set of buttons in the light grey area?
Do you plan to have the page buttons working?I’m afraid you’ll have to stick with the tab headers but I will have a look in the Ctrlr source files.
Should this not be possible, I would do the following:
– user/fx/inst/mixer as bottom main tabs
– within each main tab, some “sub” tabs for each page (you can pre-program for example up to 8 pages – should be more than enough)Sometimes, you need to adapt the reality to make it fit the virtual world π
Lucky boy Xavier-Joseph! En fait mon nom c’est Bontemps…
Just ask me if you need something or look in my Pro2 panel.
For each modulator I have some _OnChange and _OnClick method.
They are used to display information on the main screen.
I have only one for all positive values and one for all On/Off ones.
For special ones like -50 +50, I have a dedicated _OnChange method (ex: Osc Fine Tune).
For other ones, I’m using different functions within the Miscellaneous method.
@fundorin: not sure if this is possible. Did you look in Ctrlr source and Juce API?
Have a look at the image of my Pro2 panel, tab headers can integrate very well in a panel in fact…Greetings from Belgium!
Hi JDXA,
let me know if you need further help/advice. I’ve done this on my Pro2 panel… -
AuthorPosts