Forum Replies Created
-
AuthorPosts
-
with two buttons i see setting radiogroupbutton for them( chose a number) but it will be not perfect , your method could be better with just one button (0,1)
you have two (0,1) .
or set up “customModulatorIndex” (search the exact property name ,it is not in head); one 1 and other 0 and dolocal exemple = mod:getProperty(“customModulatorIndex”)
panel:getModulatorByName(“Main”):getComponent():setProperty (“uiTabsCurrentTab”, exemple, false)edit : sometimes we could have issue at startup so if you encounter wrong tab displayed at start up you could directly set the modulatorValue() of the tab in your method.the fact to set it will add the property to the tab
just save the daw project or daw instrument presets and load could fix that
yes this is the good thing to do
you can read here : Documentation / getting started
all is explained quietlyit seems that the toolbar isn’t taken in account in your case
yes
i realize when all scripts are together that code responsible of correct sizing are :
canvas:setSize()
may be in conjunction panel:getCanvas:repaint() in “called when the panel has finished…
may be it could possible to write that in “Called when the panel is created, no modulators..” not sure
but i’ve issue bigger than resizing : i can’t export ressources with panel on the last build(5.3.122) and i can’t export at all(standalone)
may be you could set panel size in” called before any mods is created”… not tried
i have just one panel that is sized correctly
-- Called when the panel is created, no modulators will exist at this point -- consider this the panels constructor SZ = {174,8,204,-384,-378,10,204,-376,-384,4,192,-384,86,118,1118,342,446,806,910,118,582}
function Resize(szvl) if szvl ~= nil then if szvl == 0 then TLP = 0 elseif szvl == 1 then TLP = 388 end for o = 1,21 do f = panel:getModulatorWithProperty("modulatorCustomIndex" ,o):getComponent() f:setTopLeftPosition(SZ[o] + TLP,f:getY()) end end end
-- Called when the panel has finished loading Resize(panel:getModulatorWithProperty("vstIndex",120):getValue()) panel:getCanvas():repaint()
-- Called when the panel background needs repainting -- PanelImage = function(canvas,g) p_size = panel:getModulatorByName("Loupe"):getValue() if p_size == 0 then g:drawImage(pnImg,- 388,0,1554,928,0,0,1554,928,false) canvas:setSize(1166,928) else g:drawImage(pnImg,0,0,1554,928,0,0,1554,928,false) canvas:setSize(1554, 928) end end
-- Called when a mouse DOWN (any mouse button) event happens on a component -- @comp -- @event http://www.rawmaterialsoftware.com/juce/api/classMouseEvent.html -- SizeClick = function(comp, event) canv = panel:getCanvas() sizeval = (comp:getOwner():getValue() + 1) %2 comp:getOwner():setModulatorValue(sizeval ,false,false,false) Resize(sizeval) canv:repaint() end
all scripts that change size and mods positions
Hi
this is a little pic
hope design is not so bad ,it can change but limited spaceAttachments:
You must be logged in to view attached files.I give to myself one month two max
it’s cool to see you motivated
But I think in two week it will be mainly finished (I abandoned it two weeks , I made home working and other works)
I’m on it everyday now 🙂Hi
I’m on something but it’s long . It will be not free but sold cheap
it does not have a beautiful design with nice knobs but all sound params is in one page , all modulation sources&targets set by drag&drop from fixed lists,graphic envelopes, graphic arp with random step timing &lenght represented by timer. Panel Color choice of your device .drumset will quasi work in real time . sounds of drumset could be set (not possible with the device). my philosophia is someone turn on a microQ, play with it, modify sounds ,create multi or not ,save all in the DAW preset file and turn off microQ. Tomorrow he turn on the microQ,open the DAW project , restitute all the microQ state and continue the project
no program bank is planned but all factory sounds could be loaded (part not done yet ) .sounds could be saved in SYX to store them as well the microQ state in own format .A Q/Q+ version is on the go with the step seq editor (no way it works in realtime but could be useful )how(panel:getModulatorByName()) gives wich parameters to put and in wich form.it ‘s like you do a LUA error ,this is the way i use how(). not sure it is correct
I think this is “statedata” Callback..
The strange thing is on the mopho panel : the lookAndFeel is executed thought
It is at the end of “CalledWhen..” after a timer ( I does that just for checking purpose). the “custom repair trigger button at startup” method that was inside seems to work too..
strange
But you see something wrong…For the windows fixed size it works nice on my other panel but IMPOSSIBLE to export instance with ressources !! tried various things
This panel has 2 sizes and has a “setSize” script in “CalledWhen..”
this fail at startup (however I just have to push the dedicated button to correct this ) for one of the sizes. (all is correct with ctrlr.exe or dll)
BUT the window size is working normallyOn two of my panels (saved with news builds)
The first param in hosts has no name “undefined”
the panel knob move the corresponding daw slider but not inverse : the param is brokenand it is linked with another mod ( it seems random ex : vst 1 on a panel , vst 32 on another )
5.3.26 is ok
5.3.35 get the erroredit: the instance seems to send midi at startup but normally it can’t
- This reply was modified 8 years, 10 months ago by zeoka.
- This reply was modified 8 years, 10 months ago by zeoka.
Attachments:
You must be logged in to view attached files.The window of my restricted instances is always smaller in size than it should be, it always have scrollbars. Even if I increase panel width and height and export again, the window is again smaller, I’m really confused about it.
me too ! tried 122
the vst0 issue is there also
I think Atom worked (5.3.35) on vst indexes assigned when in edit mode
ex: I create new mod and ctrlr assign new indexes (before when a new mod was created it just copy the index of mod source .
I think this is this stuff that break vst 0 . I could be wrong but after this update the error appears
- This reply was modified 8 years, 10 months ago by zeoka. Reason: edit : not precised wich version
Hello Atom
just a feedback about 5.3.116
the windows sizing feature in restricted instance is ok ,really cool
I wonder for a possibility to update that state by LUA ( I assume the windows size is synced to panel size)
could be great for a panel that has 2 size changed via a buttonI encounter issues with ctrlr dll iud or tag because I had 2 ctrlr name (old and 116) in maschine and export instances seems not working ,the new dll return to ctrlr dll blank when openened. It worked the first times but now not
tried to regenerate iud , no success
I revert back to 107.dll version-the vst0 still broken in daw + linked to another mod in the panels
-“statedata” works in instances
-“called when the panel has finished loading” seems to fail for exported instances
midi syx is sent anyway at startup and my custom resizing method gives confuse results. the script that evitate that is in this callback.All the best
Hi i reactivate instead of create new one
i attempt to do custom method and i get trouble with memory blocks
for now i know why dsi does that but difficult to set modulatorsMIDIrec = function( midi) local MIDdta = midi:getLuaData() local PC = MIDdta:getByte(0) if PC == 192 then local pcVal = MIDdta:getByte(1) panel:setPropertyInt("panelMidiProgram",pcVal) PnlBkg:repaint() end if PC == 240 then if MIDdta:getByte(1) == 1 then if MIDdta:getByte(2) == 37 then if MIDdta:getByte(3) == 3 then local Edit = MemoryBlock(MIDdta:getRange(4,293)) local Read = MemoryBlock() for t = 0,288,8 do if t == 0 then w = 0 else w = (t/8)*7 t = t -1 end console("t"..t) console("w"..w) y = BigInteger(Edit:getByte(t)) for a = 1,7 do u = y:getBitRangeAsInt(a-1,1) f = BigInteger(Edit:getByte(t+a)) f:setBitRangeAsInt(7,1,u) Read:insert( MemoryBlock(f:getBitRangeAsInt(0,8)),1) end end console("read:"..Read:toHexString(1)) panel:setPropertyInt("panelMidiPauseOut",1) for t = 0,104 do-- panel:getModulatorWithProperty("vstIndex",t):setModulatorValue( Read:getByte(t),false,false,false) end for t = 120,183 do --panel:getModulatorWithProperty("vstIndex",t-15):setModulatorValue( Read:getByte(t),false,false,false) end panel:setPropertyInt("panelMidiPauseOut",0) end end end end
the console is writing :
t0 w0 t7 w7 t15 w14 t23 w21 t31 w28 t39 w35 t47 w42 t55 w49 t63 w56 t71 w63 t79 w70 t87 w77 t95 w84 t103 w91 t111 w98 t119 w105 t127 w112 t135 w119 t143 w126 t151 w133 t159 w140 t167 w147 t175 w154 t183 w161 t191 w168 t199 w175 t207 w182 t215 w189 t223 w196 t231 w203 t239 w210 t247 w217 t255 w224 t263 w231 t271 w238 t279 w245 t287 w252 read:
if i do : Read:insert( MemoryBlock(f:getBitRangeAsInt(0,8)),1,(a-1)+w)
then ctrlr crash and i must remove that in the XML panel file
also i tried : local Read = MemoryBlock(256,true or false )
tried to replace loop stuff by Read = utils.unpackDsiData (MIDdta:getRange(4,293))
and crashed too
SOLVED 😀Hi
I get the Description userdata !
if u <= 15 then MyDetails = string.format("0%x",u) else MyDetails = string.format("%x",u) end details = DragAndDropSourceDetails(MyDetails ,SrcTrgI,0,0) the description here is a number ,generally useful for later , I pass it to hexstring and in isInterested callback : if SOURCE == 1 then local a = component:getOwner():getPropertyInt("modulatorCustomIndex") local b = dragSourceDetails:getDescription() local c = MemoryBlock(b) if c:getByte(0) <= Sidx[a].mx then panel:getComponent("drtext"):setText(""..c:getByte(0)) return (1) else return (0) end else return (0) end end I pass the description into a local memoryblock and get the byte as value I pass that to text to check the value
Hello
did you tried getPropertyString I think yes but who knowsYou can use the panel paint callback it works well and draw an image in it , repaint the canvas when you need you can set color changes as well
Hi
Had trouble using glb var as i used itmod changeCallbak -> setGlobal
other mod changeCallbak -> getGlobalAs I said before to Puppeteer there is global(panel) Callback for glb var change
That’s working fineAttach mod to glb var and apply what you want in this panel script Callback
You can put complex expressions in it
-- -- Called when a global variable has changed it's value -- MyVariables = function( index, value) MySndGens = panel:getComponent("SoundGens") MyFilter = panel:getComponent("Filter") MyBufList = panel:getComponent("BufferList") vwEdtTab = panel:getModulatorByName("EditTab") if index == 5 then panel:getCanvas():repaint() --repaint all the panel elseif index == 0 and value == 0 then panel:setGlobalVariable(2,panel:getGlobalVariable(2)%4) -- return to the start else if index == 2 then local a = BigInteger(panel:getGlobalVariable(0)) a:setBitRangeAsInt(1,4,value) local b = BigInteger(1) b:setBitRangeAsInt(1,4,value) local c = a:getBitRangeAsInt(0,7) local d = b:getBitRangeAsInt(0,7) local e = (23 + c)%128 local f = (23 + d)%128 if c ~= d then panel:sendMidiMessageNow(CtrlrMidiMessage{0xF0,0x3E,0x10,0x00,0x17,d,f,0xF7}) end panel:sendMidiMessageNow(CtrlrMidiMessage{0xF0,0x3E,0x10,0x00,0x17,c,e,0xF7}) end if vwEdtTab ~= nil then CurrentSound() end if BufferToGet == nil then vwEdtTab:setModulatorValue(0,false,false,false) else vwEdtTab:setModulatorValue(1,false,false,false) end if MySndGens ~= nil then MySndGens:repaint() end if MyBufList ~= nil then MyBufList:repaint() end if MyFilter ~= nil then MyFilter:repaint() end end end
Apparently you can even set a global var in it :
“if index == 0 then panel:setGlobalVariable(2,MODEA)”currentsound() is a sub script with complex glb var expressions, it is not in the main scritp because I use it elsewhere for panel startup (important step)
function CurrentSound() local a0 = panel:getGlobalVariable(0) local a1 = panel:getGlobalVariable(1) local a2 = panel:getGlobalVariable(2) + 1 local a3 = panel:getGlobalVariable(3) + 1 local a4 = panel:getGlobalVariable(4) local a67 = panel:getGlobalVariable(6 +a0 ) if a1 == 1 then if a67 ~= a2 then BufferToGet = MyBuffers[a0+1].FDAT[a2] SBufIdx = a2 elseif a67 == a2 then if a4 == 0 then BufferToGet = nil SBufIdx = nil elseif a4 == 1 then if MyBuffers[a0+1].FDAT[a3] ~= nil then BufferToGet = MyBuffers[a0+1].FDAT[a3] else BufferToGet = nil end SBufIdx = a3 end end else BufferToGet = nil SBufIdx = nil end MultiMode = a0 return BufferToGet , SBufIdx , MultiMode end
in brief
if index ~= GlobalVariable(5) then
the script create 3 LUA variables I can use after elsewhere
if index == 2 I send one or two midi messages
if index == 0 then I set GlobalVariable(2) then the script restart ( a kind of loop)
then I send one or two midi messages !
That way the LUA variables created are always refreshed when you turn any knobs attached to glb var .you can still use panel:getGlobalVariable(index) if don’t want to use LUA variable to call the glob var valueIf that can help
-
AuthorPosts