Changing Images – what could be wrong in that LUA code

Home Forums General Programming Changing Images – what could be wrong in that LUA code

Viewing 20 posts - 1 through 20 (of 34 total)
  • Author
    Posts
  • #625
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77

    hi,
    I faced to issue with LUA code. Need your proffessional opinion.
    Here is modulators which I would like to manipulate
    [img:2lkxidoc]http://dl.dropbox.com/u/4202790/swithfilter.png[/img:2lkxidoc]

    Left side controls are Filter Slope and Filter Type of Nord Lead 3 in Single Filter Mode
    Right side has Slider controlling Frequency 2 (as CC 59 when Multi Filter Mode is enabled) and Distortion (as CC 114 ).

    Now I want to do 2 things – visual and change the MIDI CC controller number using LUA.

    1. To clarify how should work visuals – if you press the knob on Nord Lead 3 on the right hand (Multi Filter Mode marked as Green) then the Filter Slope and Filter Type on the left hand (as Single Filter Mode marked as Orange) should have inactive leds. In other way if you press Single Filter Mode knob with types of Filters like (LP, HP, Classic and etc.) the Multi Filter mode leds should set to inactive mode as shown on picture.
    I created knob and leds with ‘off’ suffix ) Created LUA script and assigned to both knobs (Filter Typs on single and multi modes)
    Code
    [code:2lkxidoc]–
    — Called when a modulator value changes
    — @modulator http://ctrlr.org/api/class_ctrlr_modulator.html
    — @newValue new numeric value of the modulator

    FilterSwitch = function(modulator, newValue)

    — Images for filters on of are sixfold_selection_filteroff and sixfold_selection_filter
    — Images for filte slope are led_three_upward2 and led_three_upward_off
    — Images for Slider nord_led_pot_full_off and nord_led_pot_full

    — Slider FilterFreq2 in Single Mode CC is 114 and in Multi Mode CC is 59
    — filterslope modulator
    fs = panel:getModulatorByName("FilterSlope")

    — Single Filter Type modulator
    sft = panel:getModulatorByName("FilterType")

    — Multi Filter Type and Led Modulators
    mft = panel:getModulatorByName("FilterEnvCtrl")
    mftl = panel:getModulatorByName("FilterEnvCtrlLed")
    — Filter Freq Dist slider
    ff = panel:getModulatorByName("FilterFreq2")

    if newValue >58 then
    if fs ~= nil and sft ~= nil and ff ~= nil and mft ~= nil and mftl ~= nil then
    x = fs.getComponent()
    x:setPropertyString ("uiImageResource" , "led_three_upward_off")
    x = sft.getComponent()
    x:setPropertyString ("uiImageResource" , "sixfold_selection_filteroff")
    x = ff.getComponent()
    x:setPropertyString ("uiImageResource" , "nord_led_pot_full")
    x = mft.getComponent()
    x:setPropertyString ("uiImageResource" , "sixfold_selection_filter")
    mftl:setModulatorValue(1,false,false,true)
    end
    else
    if fs ~= nil and sft ~= nil and ff ~= nil and mft ~= nil and mftl ~= nil then
    x = fs.getComponent()
    x:setPropertyString ("uiImageResource" , "led_three_upward2")
    x = sft.getComponent()
    x:setPropertyString ("uiImageResource" , "sixfold_selection_filter")
    x = ff.getComponent()
    x:setPropertyString ("uiImageResource" , "nord_led_pot_full_off")
    x = mft.getComponent()
    x:setPropertyString ("uiImageResource" , "sixfold_selection_filteroff")
    mftl:setModulatorValue(0,false,false,true)
    end
    end
    end[/code:2lkxidoc]

    Single Filter and Multi Filte MIDI CC 44 assigned as with following values

    [b:2lkxidoc]Single Filter Mode[/b:2lkxidoc]
    LP=0
    HP=12
    BP=24
    BR=35
    CLASSIC=47
    DISTLP=58

    [b:2lkxidoc]Multi Filter Mode[/b:2lkxidoc]
    LP-BP=70
    LP-HP=81
    HP-LP=93
    BP-BP=104
    MultiPeak=116
    MultiNotch=127

    That is why code has caution if CC value higher then 58 then pictures should be changed.
    But if I start panel it gives me an error (see picture below) if I press on of the knobs of the filters
    [img:2lkxidoc]http://dl.dropbox.com/u/4202790/error.png[/img:2lkxidoc]

    I’m using the latest Nightly on Win. and at home i’m using Mac – will check code also there. But I think there will be the same error

    2. Is there any example code how to assign the specific MIDI CC controller value to modulator ?
    The thing is that the behaviour of Single Filter type on device in case of value set to Dist LP (MIDI CC44 with value 58) uses Slider Freq2Dist (marked in Green field). Other Filter types disabling that Slider.
    As I said before right side has Slider controlling Frequency 2 (as CC 59 when Multi Filter Mode is enabled) and Distortion (as CC 114 ).
    When you switch Multi Filter Mode this Slider should chnage MIDI CC Value to 59?
    Is there anyway to make that things working as device do?

    Really crazy algorythm. I need your help in code or could you just direct me in right way =)
    Many thanks in advance

    #4438
    atom
    Keymaster
    • Topics: 159
    • Replies: 2945
    • Total: 3104
    • ★★★★★

    Definetly using "." for object operations os wrong, you got some of it right and some wrong always use ":" for object operations
    [code:29pwhc6j]
    x = fs.getComponent() — WRONG
    x = fs:getComponent() — CORRECT
    [/code:29pwhc6j]

    #4439
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77
    "atom":2zsls0nb wrote:
    Definetly using "." for object operations os wrong, you got some of it right and some wrong always use ":" for object operations
    [code:2zsls0nb]
    x = fs.getComponent() — WRONG
    x = fs:getComponent() — CORRECT
    [/code:2zsls0nb][/quote:2zsls0nb]
    hmmm,

    will fix…didn’t notice that.thanks mate
    what about the way setting the different value for MIDI CC Controller?
    like x:setPropertyInt("MIDI Controller",value)?

    #4440
    atom
    Keymaster
    • Topics: 159
    • Replies: 2945
    • Total: 3104
    • ★★★★★

    the properties have special names those visible in the properties pane are only friendly names, have a look here http://ctrlrv4.svn.sourceforge.net/view … rlrIDs.xml for mappings, the cc number will be midiMessageCtrlrNumber, but this is the property of the midi message object not the modulator or the component you should use the getMidiMessage() method of the modulator object to get it’s midi message object.

    #4441
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77
    "atom":1qhay9jr wrote:
    the properties have special names those visible in the properties pane are only friendly names, have a look here http://ctrlrv4.svn.sourceforge.net/view … rlrIDs.xml for mappings, the cc number will be midiMessageCtrlrNumber, but this is the property of the midi message object not the modulator or the component you should use the getMidiMessage() method of the modulator object to get it’s midi message object.[/quote:1qhay9jr]

    ok, I created two LUA scritps – one is assigned to Single FIlter knob modulator and another one to Multi Filter Knob modulator.

    Firstly, they were also haven’t display the visualization as I requested, I checked your CtrlR ID values and found out that I used[b:1qhay9jr] "uiImageResource"[/b:1qhay9jr] which did nothing for me instead of using the right ones as shown in your ID table – [b:1qhay9jr]"uiImageButtonResource"[/b:1qhay9jr] or [b:1qhay9jr]"uiImageSliderResource"[/b:1qhay9jr]. So that is clear for me know.

    1st script – works fine – visualizations working properly
    [code:1qhay9jr]FilterSwitch = function(modulator, newValue)

    — Images for filters on of are sixfold_selection_filteroff and sixfold_selection_filter
    — Images for filte slope are led_three_upward2 and led_three_upward_off
    — Images for Slider nord_led_pot_full_off and nord_led_pot_full

    — Slider FilterFreq2 in Single Mode CC is 114 and in Multu Mode CC is 59

    — filterslope modulator
    fs = panel:getModulatorByName("FilterSlope")

    — Single Filter Type modulator
    sft = panel:getModulatorByName("FilterType")

    — Multi Filter Type and Led Modulators
    mft = panel:getModulatorByName("FilterEnvCtrl")
    mftl = panel:getModulatorByName("FilterEnvCtrlLed")

    — Filter Freq Dist slider
    ff = panel:getModulatorByName("FilterFreq2")

    filtermode=1

    if filtermode == 1 then
    z = sft:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "sixfold_selection_filter")
    z = fs:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "led_three_upward2")
    z = ff:getComponent()
    z:setPropertyString ("uiImageSliderResource" , "nord_led_pot_full_off")
    z = mft:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "sixfold_selection_filteroff")
    end


    — Enabling Dist Slider if DIST LP (58) is Selected on Filter Type

    if newValue == 5 then
    z = ff:getComponent()
    z:setPropertyString ("uiImageSliderResource" , "nord_led_pot_full")
    fs:setModulatorValue(1, false, true, true)
    else
    z = ff:getComponent()
    z:setPropertyString ("uiImageSliderResource" , "nord_led_pot_full_off")
    fs:setModulatorValue(2, false, true, true)
    end


    — Disabling Filter Slope if BR (35) is Selected on Filter Type

    if newValue == 3 then
    z = fs:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "led_three_upward_off")
    else
    z = fs:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "led_three_upward2")

    end
    end[/code:1qhay9jr]

    2nd script -visualizations working properly as well
    [code:1qhay9jr]–
    — Called when a modulator value changes
    — @modulator http://ctrlr.org/api/class_ctrlr_modulator.html
    — @newValue new numeric value of the modulator

    FilterSwitch2 = function(modulator, newValue)
    — Images for filters on of are sixfold_selection_filteroff and sixfold_selection_filter
    — Images for filte slope are led_three_upward2 and led_three_upward_off
    — Images for Slider nord_led_pot_full_off and nord_led_pot_full

    — Slider FilterFreq2 in Single Mode CC is 114 and in Multu Mode CC is 59

    — filterslope modulator
    fs = panel:getModulatorByName("FilterSlope")

    — Single Filter Type modulator
    sft = panel:getModulatorByName("FilterType")

    — Multi Filter Type and Led Modulators
    mft = panel:getModulatorByName("FilterEnvCtrl")

    — Filter Freq Dist slider
    ff = panel:getModulatorByName("FilterFreq2")

    filtermode=2

    if filtermode == 2 then
    if fs ~= nil and sft ~= nil and ff ~= nil and mft ~= nil and mftl ~= nil then
    z = fs:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "led_three_upward_off")
    z = sft:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "sixfold_selection_filteroff")
    z = ff:getComponent()
    z:setPropertyString ("uiImageSliderResource" , "nord_led_pot_full")
    z = mft:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "sixfold_selection_filter")

    — Assign to FilterFreq2 CC number 59

    xx=ff:getMidiMessage()

    end
    else
    if fs ~= nil and sft ~= nil and ff ~= nil and mft ~= nil and mftl ~= nil then
    z = fs:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "led_three_upward2")
    z = sft:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "sixfold_selection_filter")
    z = ff:getComponent()
    z:setPropertyString ("uiImageSliderResource" , "nord_led_pot_full_off")
    z = mft:getComponent()
    z:setPropertyString ("uiImageButtonResource" , "sixfold_selection_filteroff")
    filtermode=1

    — Assign to FilterFreq2 CC number 114

    end
    end

    end[/code:1qhay9jr]
    But if you may see there is a code within that 2nd script . I tried to call method you have suggested to get modulator MIDI message.
    [code:1qhay9jr]
    — Assign to FilterFreq2 CC number 59

    xx=ff:getMidiMessage()
    [/code:1qhay9jr]

    This code gives an error
    [img:1qhay9jr]http://dl.dropbox.com/u/4202790/error2.png[/img:1qhay9jr]

    Seems it is not registered in CtrlR.
    I wonder is there any other way to set the CC value to modulator using LUA code? I wish I could find an examples. But nothing

    #4442
    atom
    Keymaster
    • Topics: 159
    • Replies: 2945
    • Total: 3104
    • ★★★★★

    I’m outta town tofay but ill post a complete example later today.

    #4443
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77
    "atom":g4a4pxoh wrote:
    I’m outta town tofay but ill post a complete example later today.[/quote:g4a4pxoh]
    thanks mate
    #4444
    atom
    Keymaster
    • Topics: 159
    • Replies: 2945
    • Total: 3104
    • ★★★★★

    That should work now, i had to fix some stuff, the getMidiMessage() method should work and you should be able to set it’s properties.

    #4445
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77
    "atom":x9t8okc3 wrote:
    That should work now, i had to fix some stuff, the getMidiMessage() method should work and you should be able to set it’s properties.[/quote:x9t8okc3]
    thanks mate. gonna check Nightly
    #4446
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77
    "atom":1t2y57k6 wrote:
    That should work now, i had to fix some stuff, the getMidiMessage() method should work and you should be able to set it’s properties.[/quote:1t2y57k6]
    I didn’t try that method yet but the only issue I faced was if I change Image Resource of modulator (selecting images from the list) it doesn’t change in fact on panel. When I restart the CtrlR application. Changes are applied. Strange thing. Use last Nightly on Windows 1053.
    #4447
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77
    "atom":2l6zgz6m wrote:
    I’m outta town tofay but ill post a complete example later today.[/quote:2l6zgz6m]
    can I have an example mate?
    #4448
    atom
    Keymaster
    • Topics: 159
    • Replies: 2945
    • Total: 3104
    • ★★★★★

    Sure, here is how i change a CC number from 32 to 64
    [code:1r0lycey]

    — Called when a modulator value changes
    — @modulator http://ctrlr.org/api/class_ctrlr_modulator.html
    — @newValue new numeric value of the modulator

    changeControllerNumber = function(modulator, newValue)

    — we’re attaching this method to a button with a true/false state

    — first let’s get the modulator we want to change
    mod = panel:getModulatorByName("filterCutoff")

    if mod ~= nil then

    — we got the modulaotr, now let’s see if it has a valid MIDI message attached

    midi = mod:getMidiMessage()
    if midi ~= nil then

    — allright we have all the data we need, now depending on the button state
    — we’ll set the controller number

    if newValue == 1 then
    midi:setPropertyInt ("midiMessageCtrlrNumber", 32)
    else
    midi:setPropertyInt ("midiMessageCtrlrNumber", 64)
    end
    end
    end
    end
    [/code:1r0lycey]

    #4449
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77
    "atom":1qnxx4ev wrote:
    Sure, here is how i change a CC number from 32 to 64
    [/quote:1qnxx4ev]
    thank mate for an example. will check this code at home. but really cannot understand the strange slider behaviour and its image resource wrong value.
    #4450
    atom
    Keymaster
    • Topics: 159
    • Replies: 2945
    • Total: 3104
    • ★★★★★

    I’ve placed the image resource demo and the midi controller demo onto a panel. It should help you with those two issues.

    [attachment=0:18fpbxy5]Property Demo_1_0_Buttcheek_201206211522.bpanelz[/attachment:18fpbxy5]

    #4451
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77
    "atom":t7n6vy8d wrote:
    I’ve placed the image resource demo and the midi controller demo onto a panel. It should help you with those two issues.

    [attachment=0:t7n6vy8d]Property Demo_1_0_Buttcheek_201206211522.bpanelz[/attachment:t7n6vy8d][/quote:t7n6vy8d]

    I tried eveything but it doesn’t work for me with latest Nightly as on Mac and Win. Do not understand why. I sent PM the bpanel to you. could you please assist?

    #4452
    atom
    Keymaster
    • Topics: 159
    • Replies: 2945
    • Total: 3104
    • ★★★★★

    Does the panel i’ve sent work ?

    #4453
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77
    "atom":3fw2zzbd wrote:
    Does the panel i’ve sent work ?[/quote:3fw2zzbd]
    Property worked but my stoped working… something wrong with Nightly
    #4454
    atom
    Keymaster
    • Topics: 159
    • Replies: 2945
    • Total: 3104
    • ★★★★★

    Could you be more specific ? With the latest nightly the panel i’ve attached here, is it working ?

    #4455
    Cramp
    Participant
    • Topics: 11
    • Replies: 66
    • Total: 77
    "atom":2gbqxpy4 wrote:
    Could you be more specific ? With the latest nightly the panel i’ve attached here, is it working ?[/quote:2gbqxpy4]
    I sent PM to you with all details recently. Have you got it?

    Before you implemented Nightly with new method to control MIDI CC values it was 1047. Vizualizations were working as programmed. After I did install the new one Nightly they stoped working as expected but your example worked in tha Nightly –
    Could you please verify if panel I sent you is working as I described in PM?

    #4456
    atom
    Keymaster
    • Topics: 159
    • Replies: 2945
    • Total: 3104
    • ★★★★★

    I looked at your panel but i’m afraid i don’t understand what you are trying to achieve and what’s nor working. I can work with simple examples if can provide them. If my example panel is working then the midi-cc and resource changing properties are working and so your code should work also.

Viewing 20 posts - 1 through 20 (of 34 total)
  • The forum ‘Programming’ is closed to new topics and replies.
There is currently 0 users and 50 guests online
No users are currently active
Forum Statistics
Threads: 2,495, Posts: 17,374, Members: 77,605
Most users ever online was 12 on January 22, 2019 3:47 pm
Ctrlr