Forum Replies Created
-
AuthorPosts
-
That’s sad to hear and thanks for the info. I’ve waited from the last year for OSC to be fixed, but it seems that we are still on hold with this feature.
OSC part isn’t ready at all, cause Ctrlr isn’t handling OSC messages right. I was waiting for a fixed version from the last year, to continue developing my panel, but it seems like atom doesn’t have enough time to add proper OSC functionality to Ctrlr.
I confirm that selecting and dragging issue is gone in the latest version of Ctrlr. Thanks. Are there any news about JUCE OSC implementation, yet?
The same thing happens with osc feedback as I’d reported before. The same value (and type) often repeats for different osc commands from host. I’ll wait for new OSC implementation, then.
Thanks for new build. I’ve got nil error immediately (the second time I chose track in Reaper, actually) with demo-osc panel. Then, when I’ve tried to save this panel with a new name, to make some changes, Ctrlr crashed with this message:
-del-
For now, I didn’t implement any OSC related stuff in my panel, since it has issues with the string arguments. I’d better wait until you’ll fix it. It doesn’t matter, which API will be used in Ctrlr, but I also think that native OSC support might be a better idea than using liblo, even if it was around for quite long and was used in many other apps, including VSTLua.
I’m all for JUCE OSC and for any API changes that you may find necessary. Since it seems that there’s no one else is using OSC in Ctrlr, apart from myself, from the time it was implemented in Ctrlr, I think that you can change everything and start from a blank page with OSC, if needed. It’s just hard to wait for me.
I think that I’ll start building my custom MIDI controller tomorrow, while waiting for OSC implementation in Ctrlr. 🙂This is a simple code that should print path and type at first line and corresponding string value for every type of parameter at the second line:
onOSCMessage = function(path, types, arguments) console(path..' '..types) oscValue = string.format('%s', arguments[0]) console(oscValue) end
Here’s the console log – https://dl.dropboxusercontent.com/u/8162257/OSCFromReaper.txt
As you can see, output isn’t stable at all. Sometimes float arguments have string value and some other time string arguments have float value.
Maybe this will help you to understand better what is happening, atom.I feel like it might be a good idea to return arguments of the function as formatted strings by default for any type of data and put it into the table, so then user can reformat it into any type he needs, afterwards.
I mean, something like osc[0] – path string, osc[1] – types string, osc[2]…[x] – argument strings.
Or, osc[0] – path string, osc[0][0] – types string, osc[0][1]..[0][x] – argument strings.Table can start at 1 instead of 0, I don’t think that it matters much.
Or, maybe, values should be put in arguments table already formatted by their type.
For example, Reaper understands and outputs the following types of arguments:
n: normalized floating-point argument. 0 means the minimum value, and 1 means the
maximum value. This can be used for continous controls like sliders and knobs.f: raw floating-point argument. The argument is interpreted directly, to set or
report a value.b: binary argument, either 0 or 1. The device sets or clears the state when
sending the message. Can be used to emulate switches or momentary controls.t: trigger or toggle message. The device triggers the action, or toggles the
state, when the pattern is sent with no arguments, or with an argument of 1.
The feedback values REAPER sends are identical to those sent for binary
arguments.r: rotary. The device triggers the action in the forward direction when sent
with an argument greater than ROTARY_CENTER, and in the reverse direction when
sent with an argument less than ROTARY_CENTER. For some messages, the magnitude
of the argument affects the rate of change. REAPER does not send feedback for
these messages. (rotary_center could be 0 or 0.5)s: string. These messages include a string argument. Many of these messages
are sent from REAPER to the device for feedback/display, but some can be sent
from the device to REAPER.i: integer. These messages include an integer argument, and are sent from the
device to REAPER.So, Reaper can accept all those types, but outputs strings and floats, mainly.
P.S. BTW, you’re using variable “type” in the panel, which is the name of Lua’s global function for detecting type of the variable. The same advice that you gave me about not using a variable, named “value”, – don’t use a variable, named “type”. 😉
Thanks. As you might already know, .16 crashed, while .11 version just showed error message and duplicated it contents in console, so user could continue working with Ctrlr. There was also a bug that prevented selecting more that three elements on the panel with lasso (Ctrlr hanged). This bug stayed in the latest build and I’ve found another variation of it: selecting more than three elements with mouse, while holding “ctrl” button on keyboard also hangs Ctrlr.
P.S. Good advice about not using “value” as variable name. Changed it to “oscValue”, but Ctrlr still crashes. One of ten times it’s working fine and then crashes with the very same script. Still cannot find out, what actions causes this issue. Could this be because Reaper sends too many OSC commands or sends them faster then Ctrlr is able to handle at once?
This code works:
But the very moment I try to print variable named “value” outside of the if.then statement, Ctrlr crashes, either I’ve declared variable “value” earlier or not.
VSTLua is a VST that can run Lua scripts (midi, osc). It’s old, buggy and unsupported. It’s not as featured as Ctrlr, but it have bunch of preinstalled functions/utils and I had fun using it. http://www.hermannseib.com/VstLua/index.html
It wasn’t stable, so I’ve discarded it.
Sorry that I thought that those comments in demo panel were for me. 😉I don’t get it. At some point I was able to get string names of the tracks with simple code:
onOSCMessage = function(path, types, arguments) console(path..' '..types) if types == 's'then value = tostring(arguments[0]) end console(value) end
But when I’ve tried to add floats and integers via elseif, Ctrlr crashed and now, after removing all elseif’s, Ctrlr still crashes with the above code.
UPD. I’ve also found this comments:
— +1 index since arguments is a 0 indexed array
— and lua starts with 1
Even if Lua starts with 1 by default, it can easily access table indexes under key “0”.
“You can start an array at index 0, 1, or any other value: ” https://www.lua.org/pil/11.1.htmlI see that you wrote in comments: “in lua we can’t use [] for strings”.
In fact, I’ve succesfully used strings as table indexes with VSTLua and formatted them to my liking.Thank you for the new version.
Ctrlr crashes with demo panel and “pink log” only shows outgoing OSC from slider.From Reaper I call “Refresh control surface” action, which sends all necessary info to remote device via OSC (strings, numbers, floats).
I can add a font property to uiLCD i’m sure, as for JUCE’s font handling, i’m not touching that, i’m sure JUCE has done this much better then i would have ever done.
No need to change JUCE’s font handling as I’ve already found out how to use monospaced font.
Font property for uiLCD would be nice, though I don’t understand the difference between uiLabel and uiLCD for now.
“Internal function this component should execute” option for uiImageButton would also be nice.P.S. I’m waiting for OSC fixes in the new build more than anything else, so I can start working on the code, finally. As for me, everything else isn’t as important as properly working OSC subsystem.
In uiButtons, over “Component position and size”
There’s no such option in uiImageButton, only in uiButton. How did you add midi jack image to the button? Or is it just placed below transparent uibutton?
You’ll get into troubles, as Juce text is horizontally scaled always, monospaced fonts aren’t displayed correctly.
I kinda solved this issue.
There’s no code, it’s just a property of uiButtons, “Internal function this component should execute”
Can’t find it. Is it “Link to PANEL property”?
4. One can only use font from resources with uiLabel, but not with uiLCD. I’m having alignment issues, using uiLabel. I’ve made blue dots background to replicate SL’s LCD and can’t fit uiLabel properly, if characters number is less then 9 (9×8=72 as lcd is 72×2).
5. Could you show me an example of how to use Juce API commands in Lua script? Would I be able to find the corresponding commands by myself in your DSI panel?
I’ve read your guide, but it lacks of lua chapters, yet. The most important ones, as for me. Don’t you think it might be a good idea to create google docs document, so that selected forum members could edit your guide online?
I have a couple of questions 😉
1. How to change resource image of the modulator from script?
2. How to set particular midi in and out from script, using getMidiDevicesList and/or modulator value?
3. What is the code for “midi settings” window popup, in case that menu is hidden?
4. How to add extra font for iuLCD modulator to replicate the one that is used for LCD by Novation?
5. How to change icon of the standalone version? I’ve seen that this is possible in Snow Ed panel.
6. How to handle double button presses with Lua script and how to differentiate them from single presses or holding the button?
7. Is there a timer available in Ctrlr’s lua?
P.S. More silly questions are coming! I wish there was Wiki for this type of questions.
-
AuthorPosts