Old 10-29-2017, 01:32 PM   #4201
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by timbralzoom View Post
in my case:
i created a midi matrix in Synthmaker to have automatable channel matrix
( x86... but so far works good anyway )
and i set adv Randomize settings to activate two channels at once for every row
(row: input midi channel so it will send two different midi channels at once)
in this scenario if i want to create X:3 (or 4) version,
would time saver if we can clone subset with adv Randomize settings..just change the X values wolaa





EDIT:
if there is no possible scenarios to use this for saving time .. you can just ignore!
ok yeah - once I've got the current stuff I'm working on done - I'll add this.

BTW: been working on a routing matrix for track fx much like the one here:

https://forum.cockos.com/showthread.php?t=173867

but accessible direct in Stripper. Nearly done.

Also had plans to add midi routing - but it seems this is not currently editable via reaper APIs - and the data is coded in binary in the track chunk so almost undecipherable unless I spent time (forever) working out the byte codes (it's hidden in the final bytes of the fx preset data). So probably won't happen until it becomes possible via API.
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 10-29-2017, 02:24 PM   #4202
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

internal audio routing matrix sounds interesting!
motto: nothing urgent!
timbralzoom is offline   Reply With Quote
Old 10-29-2017, 05:27 PM   #4203
rluka
Human being with feelings
 
rluka's Avatar
 
Join Date: Jul 2013
Location: Edmonton, Alberta, Canada
Posts: 210
Default

Quote:
Originally Posted by lb0 View Post
Ah - hang on - I've not released the utility to do this yet...
No problem...its a pretty good idea
Thanks for letting me know
__________________
Ron L, i7 laptop x64, Win7pro/x64(dual boot), 7200rpm hd, 2 ext. hd, Scarlett 2i4, Event 20/20 audio monitors, 1 ext. video monitor, Novation Launch Control XL, REAPER x64, Sonar Platinum https://www.reverbnation.com/ronlukawitski
rluka is offline   Reply With Quote
Old 10-31-2017, 01:35 PM   #4204
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

one specific Q.
trying to figure out why the meters doesn't refresh
values starts 0.0 and ends 1.0 (10 steps)
(i tried to record beginning of the gif but Licecap didn't capture the tooltips)

i realized similar things happens with New Sonic Arts Granite parameters also..
it has same value 0.0 to 1.0 (10 steps ..i think its actually 0 to 1)
and if i tweak the knobs from plugin gui
controls in the stripper doesn't refresh till i switch between live and edit modes..

if i tweak from track parameters and from stripper i see changes on the gui and i can see also track parameters moves when i tweak from the gui...
but controls in the stripper doesn't refresh when i tweak from track parameters & from the gui..

i hope make sense

am i doing/expecting something wrong?


Last edited by timbralzoom; 10-31-2017 at 01:41 PM.
timbralzoom is offline   Reply With Quote
Old 10-31-2017, 02:35 PM   #4205
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by timbralzoom View Post
one specific Q.
trying to figure out why the meters doesn't refresh
values starts 0.0 and ends 1.0 (10 steps)
(i tried to record beginning of the gif but Licecap didn't capture the tooltips)

i realized similar things happens with New Sonic Arts Granite parameters also..
it has same value 0.0 to 1.0 (10 steps ..i think its actually 0 to 1)
and if i tweak the knobs from plugin gui
controls in the stripper doesn't refresh till i switch between live and edit modes..

if i tweak from track parameters and from stripper i see changes on the gui and i can see also track parameters moves when i tweak from the gui...
but controls in the stripper doesn't refresh when i tweak from track parameters & from the gui..

i hope make sense

am i doing/expecting something wrong?
a little confused as to what you're doing here... is this something I can try out? - I can't make out what everything is from the image.

EDIT: The reason why it's updating when you click edit mode/live mode is that all the graphics get redrawn at that point. Seems my script is not telling the correct controls to update (there's a lot of optimization going on to only update controls that need to be - otherwise the cpu goes through the roof). So I just need to try it out and work out why they are not being redrawn when the value changes.

What's the plugin you're using? Does it update if you switch it to a different control type?
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal

Last edited by lb0; 10-31-2017 at 02:46 PM.
lb0 is offline   Reply With Quote
Old 10-31-2017, 02:58 PM   #4206
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

Quote:
Originally Posted by lb0 View Post
a little confused as to what you're doing here... is this something I can try out? - I can't make out what everything is from the image.

EDIT: The reason why it's updating when you click edit mode/live mode is that all the graphics get redrawn at that point. Seems my script is not telling the correct controls to update (there's a lot of optimization going on to only update controls that need to be - otherwise the cpu goes through the roof). So I just need to try it out and work out why they are not being redrawn when the value changes.

What's the plugin you're using? Does it update if you switch it to a different control type?
here is the simple video with N.A. Granite
https://drive.google.com/open?id=0B9...kFtMEVYR3prVVU

in the picture
they are my experiment to create a Midi Note input/output Monitoring
according to midi channels ..to see/track midi activity in the Stripper
i tried Meter and Button types and result didn't changed.

i thought it might be my poor Synthmaker skill first,
but then i remember it was also same with the New Sonic Arts Granite parameters.

EDIT:
i can send my Midi Matrix and Share Strip or you can try also with NSA. Granite demo

EDIT2:
i am suspecting the values of the parameters as i tried to describe 0 to 1
so: "0.0, 0.1, 0.2, .... 0.9, 1.0"
i don't know but seemed a little strange to me

Last edited by timbralzoom; 10-31-2017 at 03:14 PM.
timbralzoom is offline   Reply With Quote
Old 10-31-2017, 03:31 PM   #4207
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by timbralzoom View Post
here is the simple video with N.A. Granite
https://drive.google.com/open?id=0B9...kFtMEVYR3prVVU

in the picture
they are my experiment to create a Midi Note input/output Monitoring
according to midi channels ..to see/track midi activity in the Stripper
i tried Meter and Button types and result didn't changed.

i thought it might be my poor Synthmaker skill first,
but then i remember it was also same with the New Sonic Arts Granite parameters.

EDIT:
i can send my Midi Matrix and Share Strip or you can try also with NSA. Granite demo

EDIT2:
i am suspecting the values of the parameters as i tried to describe 0 to 1
so: "0.0, 0.1, 0.2, .... 0.9, 1.0"
i don't know but seemed a little strange to me
Send me a small project example with your plugin and I'll take a look. I suspect it's just a simple oversight in my optimization.
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 10-31-2017, 03:48 PM   #4208
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

Quote:
Originally Posted by lb0 View Post
Send me a small project example with your plugin and I'll take a look. I suspect it's just a simple oversight in my optimization.
project & dll sent.
i hope also Granite thingy was same reason.. fingers crossed
timbralzoom is offline   Reply With Quote
Old 10-31-2017, 04:32 PM   #4209
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default





Thank you so much!
timbralzoom is offline   Reply With Quote
Old 10-31-2017, 04:37 PM   #4210
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by timbralzoom View Post
project & dll sent.
i hope also Granite thingy was same reason.. fingers crossed
Possibly. Let me know!

Anyway - the issue with your plug is that it doesn't output a formatted value which stripper uses to see if a controls value has updated. There was a good reason why i switched to using the formatted value over the numeric value for anyone wondering (although I can't recall exactly why now). Every plugin I've tried works fine with this arrangement - so is it something you can add anyway to your synthmaker plugin?

Anyway - not to worry if not:

I have added code so that if the formatted value comes back empty - then to check the numeric value instead.

This seems to work - so try the update.

BTW - something I noticed - on my laptop - CPU jumps to about 6-8% when dragging a TCP knob (even with Stripper closed - so I'm not to blame for this one!! ). Something odd going on there. Although - tweaking using Stripper (changing control type to knob/slider) the CPU stays nice and low... odd.

There are a few other bits and bobs in this release (as it's premature due to this bug fix for Timbral). Should be stable though...

Can't remember all of it - but pressing 4 in live mode does something... Still all work in progress - but does work (for me) ...
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 10-31-2017, 05:13 PM   #4211
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

Quote:
Originally Posted by lb0 View Post
Possibly. Let me know!

Anyway - the issue with your plug is that it doesn't output a formatted value which stripper uses to see if a controls value has updated. There was a good reason why i switched to using the formatted value over the numeric value for anyone wondering (although I can't recall exactly why now). Every plugin I've tried works fine with this arrangement - so is it something you can add anyway to your synthmaker plugin?

Anyway - not to worry if not:

I have added code so that if the formatted value comes back empty - then to check the numeric value instead.

This seems to work - so try the update.

BTW - something I noticed - on my laptop - CPU jumps to about 6-8% when dragging a TCP knob (even with Stripper closed - so I'm not to blame for this one!! ). Something odd going on there. Although - tweaking using Stripper (changing control type to knob/slider) the CPU stays nice and low... odd.

There are a few other bits and bobs in this release (as it's premature due to this bug fix for Timbral). Should be stable though...

Can't remember all of it - but pressing 4 in live mode does something... Still all work in progress - but does work (for me) ...
still doesn't show the values but seems Granite issue also fixed!
BTW. also to me seeing this strange value instead of what we see in the GUI is meaningless... i mean ..for example pitch -36 to +36 but knob value shows 0.0 to 1.0...also i made request in KVR forum for this.. anyway.

for my plug i wouldn't report if i didn't see same behavior in Granite..
also..
not exactly what i was looking for but i already find a JS for monitoring midi channels (but needs to use 32 instances)
i was just trying to combine all in one plug..
will try to figure out how can i add (or combine) formatted output ..
short: i have some SM knobs that uses 0 to 100 values.. i will examine to how to steal and adapt components from them)

hmm.
no one can blame you because of a newbie created a vst and doesn't work correctly
(probably contains dozens of unnecessary SM modules inside)

short: same CPU jumps happens here too (tweaking from track parameter)
but in this case no problem, ill remove all of them after the tests done.

EDIT:
Thank you!



EDIT2:
just in case..
if you will remember at some point, why you exclude numeric value and it was essential .. and my plug was the only reason for numeric one ..
please just switch back/cancel it.. nothing important in my case!

Last edited by timbralzoom; 10-31-2017 at 05:24 PM.
timbralzoom is offline   Reply With Quote
Old 10-31-2017, 05:28 PM   #4212
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by timbralzoom View Post
still doesn't show the values but seems Granite issue also fixed!
BTW. also to me seeing this strange value instead of what we see in the GUI is meaningless... i mean ..for example pitch -36 to +36 but knob value shows 0.0 to 1.0...also i made request in KVR forum for this.. anyway.

for my plug i wouldn't report if i didn't see same behavior in Granite..
also..
not exactly what i was looking for but i already find a JS for monitoring midi channels (but needs to use 32 instances)
i was just trying to combine all in one plug..
will try to figure out how can i add (or combine) formatted output ..
short: i have some SM knobs that uses 0 to 100 values.. i will examine to how to steal and adapt components from them)

hmm.
no one can blame you because of a newbie created a vst and doesn't work correctly
(probably contains dozens of unnecessary SM modules inside)

short: same CPU jumps happens here too (tweaking from track parameter)
but in this case no problem, ill remove all of them after the tests done.

EDIT:
Thank you!
Well i guess granite is not reporting the formatted value correctly (which can be read by the reaper.TrackFX_GetFormattedParamValue API call). It's internal to the plugin so not much can be done about it by you or I (apart from bugging the developer ).

I've seen one or two plugins reporting a value which doesn't directly correspond to the parameters setting (ie - maybe between 0 and 1) - but still returning this strange value to the above API call. In these cases Stripper would still have updated the control correctly (but not the text).

It seems in Granite's and your plugins case - it's simply not reporting any value at all to the above API call - hence Stripper never knew the control value had changed and never updated the control until a forced (all graphics) update occurred.

Still - glad the fix works - it adds an extra CPU cycle or two for each control on the strip when it checks the values - but shouldn't be noticeable in 99% of cases (unless you go crazy with control count).

Have you tried the '4' keypress function yet - be good to get some feedback on whether it works well or not.

EDIT: haha - beat me to it...
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 10-31-2017, 05:37 PM   #4213
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by timbralzoom View Post
EDIT2:
just in case..
if you will remember at some point, why you exclude numeric value and it was essential .. and my plug was the only reason for numeric one ..
please just switch back/cancel it.. nothing important in my case!
Oh - don't worry - it still uses the formatted value - but if the formatted value is missing - it will check the numeric value.

So nothing's really changed - except an extra check to see if the formatted value is valid and if not - fall back on the numeric value check instead. This is safer anyway - just never had the need for it until now

EDIT:

I seem to remember now - when using the numeric value - Lua has a habit of formatting the number value differently for certain values with lots of decimal places when storing it in the control table - so it ended up triggering the redraw routine constantly, as the comparison check always said the values were different (when they weren't - just formatted differently). I'll need to check this (tomorrow) - to make sure it's not constantly trying to redraw your controls and eating CPU unnecessarily... Using the proper formatted param value doesn't have this problem as it's a string type, not a number type.
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal

Last edited by lb0; 10-31-2017 at 05:44 PM.
lb0 is offline   Reply With Quote
Old 10-31-2017, 05:41 PM   #4214
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

will test more for the new beautiful routing matrix.
in my plug-ish they just meters so nothing important but in Granite you can't do even Envelope Automation properly without checking in the GUI .. simply not nice!
my first poke in KVR was a few months ago ill do one more time soon ..anyway.

let's go back to our boy
-i can't move Snapshot window
-i can't drag Randomize to the grid
tried a few key combo to see if you changed the behavior but no success so far.

EDIT:
also can't drag Snapshot lists to the grid
EDIT2:
Nothing Urgent!

Last edited by timbralzoom; 10-31-2017 at 05:49 PM.
timbralzoom is offline   Reply With Quote
Old 10-31-2017, 05:51 PM   #4215
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by timbralzoom View Post
will test more for the new beautiful routing matrix.
in my plug-ish they just meters so nothing important but in Granite you can't do even Envelope Automation properly without checking in the GUI .. simply not nice!
my first poke in KVR was a few months ago ill do one more time soon ..anyway.

let's go back to our boy
-i can't move Snapshot window
-i can't drag Randomize to the grid
tried a few key combo to see if you changed the behavior but no success so far.

EDIT:
also can't drag Snapshot lists to the grid
EDIT2:
Nothing Urgent!
Arse! You're right - will fix tomorrow. I did do some tweaking to a few things to get certain routing screen functionality - that may be to blame. Off to bed now - but will look into asap.
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 10-31-2017, 05:53 PM   #4216
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

Quote:
Originally Posted by lb0 View Post
Arse! You're right - will fix tomorrow. I did do some tweaking to a few things to get certain routing screen functionality - that may be to blame. Off to bed now - but will look into asap.

Have a nice sleep!
timbralzoom is offline   Reply With Quote
Old 10-31-2017, 05:59 PM   #4217
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by timbralzoom View Post
EDIT:
also can't drag Snapshot lists to the grid
EDIT2:
Nothing Urgent!
ok - couldn't resist just checking. FIXED!

I corrected a typo a few days ago - but in correcting the typo - it actually broke the functionality because I'd forgotten to do something else.

All sorted i hope...
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 10-31-2017, 06:12 PM   #4218
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

Quote:
Originally Posted by lb0 View Post
ok - couldn't resist just checking. FIXED!

I corrected a typo a few days ago - but in correcting the typo - it actually broke the functionality because I'd forgotten to do something else.

All sorted i hope...
hahah i knew it!
all OK now
Thank you & Good Night!
timbralzoom is offline   Reply With Quote
Old 10-31-2017, 07:29 PM   #4219
kawa_
Human being with feelings
 
kawa_'s Avatar
 
Join Date: Mar 2016
Posts: 103
Default

waw! its very cool! I would like to playing this.

Thank you & Good night!
__________________
Web : http://kawa.works
ReaScripts : MIDI-Section || MIDI-CC-Section
Reapack Repository : Reapack Repository
kawa_ is offline   Reply With Quote
Old 10-31-2017, 09:54 PM   #4220
RJHollins
Human being with feelings
 
Join Date: Dec 2011
Posts: 1,221
Default

Running latest post version .... something has changed.

Resetting a KNOB to DEFAULT.

Using CNTRL-CLK sometimes works on the first CLK ... another knob requires
a DOUBLE-CLK.

note: I have SWAP Cntrl clk, Double-Clk setting checked.

2. I had a GLOBAL-linked Master MUTE button tied to all Bands. The Master MUTE does NOT dim the individual modules. The individual one do. This is a GUI issue that is now happening.
RJHollins is offline   Reply With Quote
Old 11-01-2017, 12:43 AM   #4221
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by RJHollins View Post
Running latest post version .... something has changed.

Resetting a KNOB to DEFAULT.

Using CNTRL-CLK sometimes works on the first CLK ... another knob requires
a DOUBLE-CLK.

note: I have SWAP Cntrl clk, Double-Clk setting checked.

2. I had a GLOBAL-linked Master MUTE button tied to all Bands. The Master MUTE does NOT dim the individual modules. The individual one do. This is a GUI issue that is now happening.
Sorry about that - will look into later...

Could you explain a little more what type of control isn't working? Is it a macro control linking mutes?

Can you explain what type of knob requires ctl+click and which double click?

Any test project/sharestrip you can send me?
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal

Last edited by lb0; 11-01-2017 at 12:50 AM.
lb0 is offline   Reply With Quote
Old 11-01-2017, 01:28 AM   #4222
RJHollins
Human being with feelings
 
Join Date: Dec 2011
Posts: 1,221
Default

Quote:
Originally Posted by lb0 View Post
Sorry about that - will look into later...

Could you explain a little more what type of control isn't working? Is it a macro control linking mutes?

Can you explain what type of knob requires ctl+click and which double click?

Any test project/sharestrip you can send me?
It is Macro-control for Mutes.

As to resetting knobs. There are 3 per band, the usual, Gain, Q, Freq.
The GAIN knob is the only ones that reset with a single CNTRL-CLK. The Q and Freq knobs require a CNTRL-Double-clk.

I'll do more testing for sure ... and send up an example as soon as I can [but it's real busy at moment].

thx for looking into
RJHollins is offline   Reply With Quote
Old 11-01-2017, 01:40 AM   #4223
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by RJHollins View Post
It is Macro-control for Mutes.

As to resetting knobs. There are 3 per band, the usual, Gain, Q, Freq.
The GAIN knob is the only ones that reset with a single CNTRL-CLK. The Q and Freq knobs require a CNTRL-Double-clk.

I'll do more testing for sure ... and send up an example as soon as I can [but it's real busy at moment].

thx for looking into
Another quick question then - the macro controls mutes - are these fx parameters or track mutes? If fx params - what plugin?

I cannot spot anything wrong with the code so far - think I will need to wait for an example sharestrip or project. I haven't enough info at the moment to try and recreate here...
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal

Last edited by lb0; 11-01-2017 at 02:57 AM.
lb0 is offline   Reply With Quote
Old 11-01-2017, 03:16 AM   #4224
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by kawa_ View Post
waw! its very cool! I would like to playing this.

Thank you & Good night!
Glad you like it - doesn't have all the functionality of your script (shifting fx plugins location - but then in Stripper you can press 1 to do that - and I've tried to make sure you can do this whilst routing mode is open).

The main differences between the way it's coded - is that I always try to keep the user input code separate from the drawing code.

If you combine the two - in order to check for user input - you also need to redraw everything - and the drawing code is much more cpu intensive than user input code.

By separating the two processes - I monitor constantly for user input (which uses very few cycles - just maths to work out the click location and whether the click is within a pin or not). Then - I redraw only when required (which is usually when something is clicked on. Additionally - I have code which runs roughly every 0.3 seconds (again no need to run faster) - which monitors changes made to the routing externally - and if pin changes or fx order etc is noticed - it forces a redraw.

The only CPU intensive bit is when scrolling the routing matrix about - as the matrix cannot be drawn completely to a backbuffer and the backbuffer scrolled only - as you cannot currently make the backbuffer large enough to incorporate the entire routing matrix when using a large number of FX or a high zoom level.

I've thought about scrolling the backbuffer which draws the visible portion only, with periodic redrawing of the entire matrix when scrolling - but this would mean that black bars appear at edges periodically when scrolling (until the redraw occurs) - but I'll see how the current method holds out before going that deep.

Current redrawing for even largish matrixes doesn't use huge amounts of CPU (just isn't maybe as smooth as I would like), and I've not added checks to see if what is being drawn is within the boundaries of the visible screen - so might still be optimizations possible there too...
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 11-01-2017, 07:18 AM   #4225
kawa_
Human being with feelings
 
kawa_'s Avatar
 
Join Date: Mar 2016
Posts: 103
Default

Thanks Again!

when that time i started to write my GUI scripts at first time,these was for learning "design pattern" as my practice.
and I selected priority to working well than cpu performance, i think my GUI scripts perfomance are slowing absolutely. (it is contain many unused function).
but i might not be able to optimize even like your level.

Again very awesome your script. great lua.

Quote:
Originally Posted by lb0
Current redrawing for even largish matrixes doesn't use huge amounts of CPU
(just isn't maybe as smooth as I would like),
and I've not added checks to see if what is being drawn is within the boundaries of the visible screen - so might still be optimizations possible there too...
I did not mind about that black bar(is it that like visible at moment when resize window?). and i think it is better way that to redraw only visible portion area. ( maybe via bitblit function.? )

i was recentry wrote naitive reaper extension about my midi action scripts.( nothing special, it is porting of my lua scripts )
i think c++ may be able to manipulate that draw behavior at the moment. ( with something way)
if when you think want to make "LBX-Stripper version 2", it may be resolve/better that points with create as c++ extension.
even now versions "LBX-stripper" is pretty awesome.

i would like to watch your works

--
i am worring my english a little. if wrong points sorry please as if blind it.
__________________
Web : http://kawa.works
ReaScripts : MIDI-Section || MIDI-CC-Section
Reapack Repository : Reapack Repository

Last edited by kawa_; 11-01-2017 at 07:51 AM.
kawa_ is offline   Reply With Quote
Old 11-01-2017, 08:00 AM   #4226
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

OK!
did i nailed it or what
i will upload Share Strip after finish Randomize groups & GFX polishing.

timbralzoom is offline   Reply With Quote
Old 11-01-2017, 08:36 AM   #4227
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by kawa_ View Post
Thanks Again!

when that time i started to write my GUI scripts at first time,these was for learning "design pattern" as my practice.
and I selected priority to working well than cpu performance, i think my GUI scripts perfomance are slowing absolutely. (it is contain many unused function).
but i might not be able to optimize even like your level.

Again very awesome your script. great lua.



I did not mind about that black bar(is it that like visible at moment when resize window?). and i think it is better way that to redraw only visible portion area. ( maybe via bitblit function.? )

i was recentry wrote naitive reaper extension about my midi action scripts.( nothing special, it is porting of my lua scripts )
i think c++ may be able to manipulate that draw behavior at the moment. ( with something way)
if when you think want to make "LBX-Stripper version 2", it may be resolve/better that points with create as c++ extension.
even now versions "LBX-stripper" is pretty awesome.

i would like to watch your works

--
i am worring my english a little. if wrong points sorry please as if blind it.
Your English is fine and understandable... Much better than my (insert any spoken language other than English).

Yes - if I were to optimise the scrolling - the black bar would be exactly like when you resize the window.

I've considered C++ - but my understanding is that where running certain CPU intensive functions would be faster, my main bugbear - which is the refresh rate of polling the runloop - would still remain. So there's no advantage to accuracy of clicking (in time domain) and GUI interaction etc. Even a C++ extension will only be polled by Reaper every 20-30 ms or so.

So aside from the massive undertaking of rewriting the script in C++ (a language I unfortunately left behind 15+ years ago), for most of my needs Lua is more than enough. I just want the option to increase a scripts polling frequency - or even better - to have some sort of time-accurate interrupt capability. Sadly I see neither of these things on the horizon.

To be honest - my main methods of optimization are purely - keep graphics redrawing to an absolute minimum, only drawing what is required at any point (this can lead to mildly complex and convoluted drawing routines - which aren't pretty to look at or understand). And keep code statements to minimum required whilst maintaining all the functionality I require - particularly in the runloop. Sadly - because I feel against the clock working on the script (alongside my paid work and family life etc) - my code does not end up as pretty and efficient as I'd like

I could certainly rewrite it much better now if I had the time!!

I'm constantly changing bits of my code - because I only started learning Lua a year ago - and my first attempts (much still exists in Stripper) heavily relied on techniques I've used for years in using Visual Basic - when in actual fact - Lua provides much better mechanisms to deal with such requirements).

So gradually I change bits of code to improve performance when I spot something that needs to improve.

I still cannot believe I have so many global variables in there!! When I learnt to code and spent many years coding/designing for professional software developers - I never used a single global variable. With Stripper - it was simply a quick means to an end to get things working quickly, and I've ended up with 100s cluttering up the global memory namespace. I've not had any adverse effects from this - other than the occasional bug associated with me not dealing with them properly on occasion.

I need to go through and convert every single global variable into at least file level variables - that is - if that will make a difference. I've not managed to work out if Reaper treats 'global namespace' variables as truly global (ie - across 'required' Lua files as well), or simply limits them to file level by default.

Anyway - just to be sure - I'll probably move all file wide variable declarations to the top and prefix them 'local' just to be sure. Apparently this may be beneficial performance wise (if they do get treated differently), as access to them should be quicker (similar to how a function level local variable can be accessed faster).

So don't treat my code as any sort of benchmark in Lua coding - it would be heavily frowned upon by most developers - and I don't comment my code either (fortunately - I recall pretty well everything I've done so far, and find my way around the code very easily still - and I STILL use Reaper's built in IDE for coding the script, despite it's restrictions!!)

However - feel free to take anything from my code that may come in useful.
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 11-01-2017, 08:44 AM   #4228
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by timbralzoom View Post
OK!
did i nailed it or what
i will upload Share Strip after finish Randomize groups & GFX polishing.

Pretty I still have no idea what it's for - so expect a video of it in action at some point

Anyway - is the matrix something that can be written in JSFX quite easily? What is it doing exactly?

EDIT: Hang on... think I got it - midi channel inputs 1-16 from left - then output to (via the matrix) whichever channels are indicated on the matrix - with ability of duplication etc.

Nice - I can see uses for this... Look forward to it - and pretty sure I could possibly create something similar in JSFX if you want (and when I've got time)...
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal

Last edited by lb0; 11-01-2017 at 08:58 AM.
lb0 is offline   Reply With Quote
Old 11-01-2017, 10:35 AM   #4229
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

Quote:
Originally Posted by lb0 View Post
Pretty I still have no idea what it's for - so expect a video of it in action at some point

Anyway - is the matrix something that can be written in JSFX quite easily? What is it doing exactly?

EDIT: Hang on... think I got it - midi channel inputs 1-16 from left - then output to (via the matrix) whichever channels are indicated on the matrix - with ability of duplication etc.

Nice - I can see uses for this... Look forward to it - and pretty sure I could possibly create something similar in JSFX if you want (and when I've got time)...
Exactly!
to me its very useful with multichannel midi drum loops
(which is also creating multichannel version from any drum midi files not that complicated/hard)
so we can mute + transpose + adjust velocity individually & send same input to multiple channels etc.

here is the quick demonstration video with old version of the matrix
https://www.youtube.com/watch?v=eecr...ature=youtu.be

aaaaand!
i never say no for a native JS replacement! as you know

just in case
in JS we have boreg's Midi Matrix which is wonderful
https://forum.cockos.com/showthread....59#post1903259

and i already cried for a new version with automatable channel switcher
but no luck he said he is done with the JS because of quite understandable reasons..
anyway..
link might give you an idea to start when you have time to look at.

but i have doubts because of 64 slider limit of JS
16 x 16 on/off & input/output monitors... all needs to be automatable
and if i am right this is way more than for a one JS can contain..

motto: N.U.
timbralzoom is offline   Reply With Quote
Old 11-01-2017, 01:02 PM   #4230
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by timbralzoom View Post
Exactly!
to me its very useful with multichannel midi drum loops
(which is also creating multichannel version from any drum midi files not that complicated/hard)
so we can mute + transpose + adjust velocity individually & send same input to multiple channels etc.

here is the quick demonstration video with old version of the matrix
https://www.youtube.com/watch?v=eecr...ature=youtu.be

aaaaand!
i never say no for a native JS replacement! as you know

just in case
in JS we have boreg's Midi Matrix which is wonderful
https://forum.cockos.com/showthread....59#post1903259

and i already cried for a new version with automatable channel switcher
but no luck he said he is done with the JS because of quite understandable reasons..
anyway..
link might give you an idea to start when you have time to look at.

but i have doubts because of 64 slider limit of JS
16 x 16 on/off & input/output monitors... all needs to be automatable
and if i am right this is way more than for a one JS can contain..

motto: N.U.
ah - i was unaware of 64 slider limit in JSFX - yes - that would prevent me from recreating it properly... that's a shame.
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 11-01-2017, 03:42 PM   #4231
timbralzoom
Human being with feelings
 
timbralzoom's Avatar
 
Join Date: Apr 2010
Location: Turkey/Istanbul
Posts: 1,549
Default

but..of course i have no idea if there is a way to bypass this limitations
and make all that sliders available as automatable... anyway.

what i just discover:
i don't know since when but...!
duplicating same Randomize button and changing just the group parameters Works!


so my
Quote:
Originally Posted by timbralzoom View Post
is this is discussed already:
Clone to subset (with Adv Randomize) ?
wouldn't be great?
question was meaningless..
unless if there is other possible usage scenarios that i am not aware of.

tadaaa


Last edited by timbralzoom; 11-01-2017 at 03:55 PM.
timbralzoom is offline   Reply With Quote
Old 11-01-2017, 10:23 PM   #4232
RJHollins
Human being with feelings
 
Join Date: Dec 2011
Posts: 1,221
Default

Quote:
Originally Posted by lb0 View Post
Another quick question then - the macro controls mutes - are these fx parameters or track mutes? If fx params - what plugin?

I cannot spot anything wrong with the code so far - think I will need to wait for an example sharestrip or project. I haven't enough info at the moment to try and recreate here...
I can send you a sharestrip. Do you have MMeQ library ?
I don't remember.

It has the new issue that have come up.
1. Freq ^ Q knobs needs double Cntrl-Clk to reset. The Gain knob works with single Cntrl-Clk as normal.

2. Out sliders. They now need double Cntrl-Clk to reset [was one].

3. BYPASS button on each module would DIM the module controls. In the GLOBAL section, the M button is the master mute for all modules. None of them DIM anymore with the M button.

let me know to send.

BTW ... if you still have any of the GUI strips I previously sent, they might show the issues, as I've not really made major changes since. Still, let me know

Last edited by RJHollins; 11-01-2017 at 11:38 PM.
RJHollins is offline   Reply With Quote
Old 11-02-2017, 12:59 AM   #4233
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by RJHollins View Post
I can send you a sharestrip. Do you have MMeQ library ?
I don't remember.

It has the new issue that have come up.
1. Freq ^ Q knobs needs double Cntrl-Clk to reset. The Gain knob works with single Cntrl-Clk as normal.

2. Out sliders. They now need double Cntrl-Clk to reset [was one].

3. BYPASS button on each module would DIM the module controls. In the GLOBAL section, the M button is the master mute for all modules. None of them DIM anymore with the M button.

let me know to send.

BTW ... if you still have any of the GUI strips I previously sent, they might show the issues, as I've not really made major changes since. Still, let me know
I have MMeQ - but to test this - I don't think it matters as the bypass buttons act on the N4 instance and not the library.

None of the strips you've sent me had this global bypass - i was checking yesterday and couldn't work out what you meant - now I understand (about the dimming). Interestingly - I created a macro control to use as global bypass - and it works fine as a knob type - but not as button type...

not been able to test the ctrl click issue on my dev laptop (as haven't got the neb libs installed here).
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 11-02-2017, 01:39 AM   #4234
RJHollins
Human being with feelings
 
Join Date: Dec 2011
Posts: 1,221
Default

Thanks lb0 for looking into this ... I'll send you the MMeQ strip [email]

thanks again.
RJHollins is offline   Reply With Quote
Old 11-02-2017, 02:51 AM   #4235
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by RJHollins View Post
Thanks lb0 for looking into this ... I'll send you the MMeQ strip [email]

thanks again.
Update should fix the dimming of bypassed controls.

Not able to test the ctrl+click yet - as not at my studio pc with the necessary library to get the dials working. Will look into later.

Also - finally fixed (i think) the scale issue where if a knob graphics has been scaled down - it often jumps a pixel and goes slightly blurry (this was noticeable on your strip).
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 11-02-2017, 03:48 AM   #4236
kawa_
Human being with feelings
 
kawa_'s Avatar
 
Join Date: Mar 2016
Posts: 103
Default

Thanks! sometimes Im confused in English still.but it seems like to be better than previous.

Quote:
Originally Posted by lb0
my main bugbear - which is the refresh rate of polling the runloop - would still remain.
---
for most of my needs Lua is more than enough. I just want the option to increase a scripts polling frequency - or even better - to have some sort of time-accurate interrupt capability. Sadly I see neither of these things on the horizon.
I don't know more detail although - as one of ways, "thread timer call back" module which was create as custom native lua extension module may be good.
that custom lua module will be call lua's function with separate thread from reaper "gfx.defer" function.
if it is possible, that will might be able to call lua function as which is not depend on "gfx.defer" function.

Code:
(-- idea of thread timer module )

local Timer = require("Timer")
---
function timerCallback()
  print("call")
end
---
local t = Timer.createThreadTimer( 0.10, timerCallback ) -- 0.1sec 
t.start()
---  
t.stop()
Timer.deleteThreadTimer(t)
however,it will might be make collision with main thread when access in variable,
or it might be difficultly to implement.. or there may be any problems which I don't know..?
( I would like to search it. )

Quote:
Originally Posted by lb0
So aside from the massive undertaking of rewriting the script in C++
I can understand it, I think It will be massive hard works.
I dont mind that black bar and visible state. I think even now version is enough awesome.

Quote:
Originally Posted by lb0
I'll probably move all file wide variable declarations to the top and prefix them 'local' just to be sure. Apparently this may be beneficial performance wise (if they do get treated differently), as access to them should be quicker (similar to how a function level local variable can be accessed faster).
I have heared "local" variable are better than global variable,and "local" function too. It will be good idea.
other points. if LuaJIT could be support It might be much up performance. and LuaJIT support FFI binding,
it will be able to use exported function written by "C". ( probably it might be able to make resolve above Timer function...??)


Quote:
Originally Posted by lb0
So gradually I change bits of code to improve performance when I spot something that needs to improve.
I still cannot believe I have so many global variables in there!! When I learnt to code and spent many years coding/designing for professional software developers - I never used a single global variable. With Stripper - it was simply a quick means to an end to get things working quickly, and I've ended up with 100s cluttering up the global memory namespace. I've not had any adverse effects from this - other than the occasional bug associated with me not dealing with them properly on occasion.
I need to go through and convert every single global variable into at least file level variables - that is - if that will make a difference. I've not managed to work out if Reaper treats 'global namespace' variables as truly global (ie - across 'required' Lua files as well), or simply limits them to file level by default.
waw,I think feel that you have the Art of scripts. it is creating imagination. it seems to be Art.
is it just me or..?
__________________
Web : http://kawa.works
ReaScripts : MIDI-Section || MIDI-CC-Section
Reapack Repository : Reapack Repository
kawa_ is offline   Reply With Quote
Old 11-02-2017, 04:42 AM   #4237
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 2,681
Default

Quote:
Originally Posted by kawa_ View Post
I don't know more detail although - as one of ways, "thread timer call back" module which was create as custom native lua extension module may be good.
that custom lua module will be call lua's function with separate thread from reaper "gfx.defer" function.
if it is possible, that will might be able to call lua function as which is not depend on "gfx.defer" function.

however,it will might be make collision with main thread when access in variable,
or it might be difficultly to implement.. or there may be any problems which I don't know..?
( I would like to search it. )

waw,I think feel that you have the Art of scripts. it is creating imagination. it seems to be Art.
is it just me or..?
That's an interesting idea regarding the callbacks. I don't know how easy or possible it would be to implement - I'm pretty new to Reaper's Lua implementation. I know there are restrictions as to what can be referenced from Reaper's Lua scripts - as you cannot reference pre-built C modules like you can in normal Lua - so that might prevent such an idea from working. My limited understanding is that Lua scripts in Reaper can only 'require' other pure Reaper Lua scripts - which is a shame. Would be massively useful to have access to external dll libraries etc.

For instance - I've created (but not yet released) a windows utility to update stripper - this downloads all the required files from github - unzips them and puts them where they need to be. I've written the utility in Lua and built all the necessary libraries to make it portable (ie. requires no installation).

I really wanted to do this all within stripper - but due to not being able to use external libraries (required for the downloading and unzipping) the best I could do was create this portable app - which Stripper simply calls using os.execute().

Would be so much easier if this could have all been done from within Stripper - and simply require-ing the necessary dll libraries.

And thank you for the compliments!! They mean a lot. I love your JSFX plugins you released too - the graphics visuals are amazing !!


I've started to convert my global variables into local ones - then realized Lua has a limit to the number of local variables you can have within each scope (200) - so have started to place them in local tables and access them from there. So far so good - but a long way to go still - many global variables still remain but hopefully will reduce them in the coming weeks - bit by bit.

Even with the changes I've made just yesterday - the script feels just a little bit quicker and more responsive (although that could easily be placebo - much like when mixing - you tweak parameters by tiny amounts thinking you can hear a difference - before realizing the plugin has been bypassed for the last 5 minutes!! ). I've been monitoring CPU use - and again can spot maybe slightly reduced CPU load - but it's really hard to tell accurately.
__________________
Projects - Reascripts - Lua:
LBX Stripper | LBX Chaos Engine | LBX Floating FX Positioner | LBX SRD Smart Knobs
Donate via Paypal
lb0 is offline   Reply With Quote
Old 11-02-2017, 08:42 AM   #4238
kawa_
Human being with feelings
 
kawa_'s Avatar
 
Join Date: Mar 2016
Posts: 103
Default

Quote:
Originally Posted by lb0
I know there are restrictions as to what can be referenced from Reaper's Lua scripts - as you cannot reference pre-built C modules like you can in normal Lua - so that might prevent such an idea from working. My limited understanding is that Lua scripts in Reaper can only 'require' other pure Reaper Lua scripts - which is a shame.
Would be massively useful to have access to external dll libraries etc.
omg, sorry I did not know reaper could not loading c module.
I just checked with "require" and "package.cpath" in reaper. if reaper could loading c modules it maybe was goodly.

Quote:
Originally Posted by lb0
Would be so much easier if this could have all been done from within Stripper - and simply require-ing the necessary dll libraries.
I agree 100%

about convert global to local variables. I can imagine that is hard working.and delicate work. i hope take it easy. and freely.
if you created something as c or c++, i think it will be awesome too. even only lua script already you created awesome it.

thanks again, I will watch your works in this forums
__________________
Web : http://kawa.works
ReaScripts : MIDI-Section || MIDI-CC-Section
Reapack Repository : Reapack Repository
kawa_ is offline   Reply With Quote
Old 11-02-2017, 09:34 AM   #4239
RJHollins
Human being with feelings
 
Join Date: Dec 2011
Posts: 1,221
Default

Quote:
Originally Posted by lb0 View Post
Also - finally fixed (i think) the scale issue where if a knob graphics has been scaled down - it often jumps a pixel and goes slightly blurry (this was noticeable on your strip).
ahh yes.

Something else that has changed. We used to be able to select 2 [or more] elements, and then use the ALIGN option. I've changed the SETUP option, but this ability does not seem to work anymore.

thx
RJHollins is offline   Reply With Quote
Old 11-02-2017, 10:33 AM   #4240
Arthur McArthur
Human being with feelings
 
Join Date: Sep 2016
Location: Toronto
Posts: 389
Default

The FX routing is beautiful, Leon. Will save me many hours when making multi-channel FX strips. Cheers!
Arthur McArthur is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 05:26 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2018, vBulletin Solutions Inc.