Go Back   Cockos Incorporated Forums > REAPER Forums > MIDI Hardware, Control Surfaces, and OSC

Reply
 
Thread Tools Display Modes
Old 07-06-2023, 06:02 AM   #23281
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by MixMonkey View Post
Crashes as soon as the ReMap button is pressed:
Code:
Translated Report (Full Report Below)
-------------------------------------

Process:               REAPER [52311]
Path:                  /Applications/REAPER.app/Contents/MacOS/REAPER
Identifier:            com.cockos.reaper
Version:               6.81.0_8adbe74u (6.81.0_8adbe74u)
Code Type:             ARM-64 (Native)
Parent Process:        launchd [1]
User ID:               501

Date/Time:             2023-07-06 13:52:26.3290 +0100
OS Version:            macOS 13.4 (22F66)
Report Version:        12
Anonymous UUID:        3A313CD3-F7A3-2A5A-D452-445A47753EAD

Sleep/Wake UUID:       0A062073-D967-431F-A839-B3ADBB06A9D4

Time Awake Since Boot: 200000 seconds
Time Since Wake:       6233 seconds

System Integrity Protection: enabled

Crashed Thread:        0  reaper  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000

Application Specific Information:
stack buffer overflow


Thread 0 Crashed:: reaper Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	       0x18bcdc724 __pthread_kill + 8
1   libsystem_pthread.dylib       	       0x18bd13c28 pthread_kill + 288
2   libsystem_c.dylib             	       0x18bc21b74 __abort + 128
3   libsystem_c.dylib             	       0x18bc12640 __stack_chk_fail + 96
4   reaper_csurf_integrator.dylib 	       0x11cab08c8 dlgProcRemapFXAutoZone(HWND__*, unsigned int, unsigned long, long) + 1376
5   REAPER                        	       0x102c2aa50 -[REAPERSwell_hwnd initChild:Parent:dlgProc:Param:] + 1456
6   REAPER                        	       0x102c3153c -[REAPERSwell_dialogbox initDialogBox:Parent:dlgProc:Param:] + 536
7   REAPER                        	       0x102c31858 SWELL_DialogBox(SWELL_DialogResourceIndex*, char const*, HWND__*, long (*)(HWND__*, unsigned int, unsigned long, long), long) + 156
8   reaper_csurf_integrator.dylib 	       0x11caae33c RemapAutoZoneDialog(std::__1::shared_ptr<ZoneManager>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>&) + 1564
9   reaper_csurf_integrator.dylib 	       0x11caf5d24 ZoneManager::RemapAutoZone() + 368
10  reaper_csurf_integrator.dylib 	       0x11cb25bc8 RemapAutoZone::Do(ActionContext*, double) + 88
11  reaper_csurf_integrator.dylib 	       0x11caec4cc Zone::DoAction(std::__1::shared_ptr<Widget>, bool&, double) + 1164
12  reaper_csurf_integrator.dylib 	       0x11caec384 Zone::DoAction(std::__1::shared_ptr<Widget>, bool&, double) + 836
13  reaper_csurf_integrator.dylib 	       0x11caf9d10 ZoneManager::DoAction(std::__1::shared_ptr<Widget>, double) + 776
14  reaper_csurf_integrator.dylib 	       0x11cb0d124 CSIMessageGenerator::ProcessMessage(double) + 84
15  reaper_csurf_integrator.dylib 	       0x11cafcb7c OSC_ControlSurface::ProcessOSCMessage(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, double) + 120
16  reaper_csurf_integrator.dylib 	       0x11cafc564 OSC_ControlSurfaceIO::HandleExternalInput(OSC_ControlSurface*) + 288
17  reaper_csurf_integrator.dylib 	       0x11cab25e4 Page::Run() + 104
18  REAPER                        	       0x102a802d8 CSurf_Run() + 260
19  REAPER                        	       0x10281e7bc runMiscTimers() + 2580
20  REAPER                        	       0x10287c838 Main_OnTimer(HWND__*, unsigned long) + 356
21  REAPER                        	       0x102da1594 MainProc(HWND__*, unsigned int, unsigned long, long) + 2752
22  REAPER                        	       0x102c2ad80 SwellDialogDefaultWindowProc(HWND__*, unsigned int, unsigned long, long) + 444
23  Foundation                    	       0x18cda2448 __NSFireTimer + 104
24  CoreFoundation                	       0x18be0c3c8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 32
25  CoreFoundation                	       0x18be0c070 __CFRunLoopDoTimer + 940
26  CoreFoundation                	       0x18be0bbc8 __CFRunLoopDoTimers + 356
27  CoreFoundation                	       0x18bdf1348 __CFRunLoopRun + 1852
28  CoreFoundation                	       0x18bdf04b8 CFRunLoopRunSpecific + 612
29  HIToolbox                     	       0x19563ac40 RunCurrentEventLoopInMode + 292
30  HIToolbox                     	       0x19563aa7c ReceiveNextEventCommon + 648
31  HIToolbox                     	       0x19563a7d4 _BlockUntilNextEventMatchingListInModeWithFilter + 76
32  AppKit                        	       0x18f011d44 _DPSNextEvent + 636
33  AppKit                        	       0x18f010ee0 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 716
34  AppKit                        	       0x18f005344 -[NSApplication run] + 464
35  AppKit                        	       0x18efdc794 NSApplicationMain + 880
36  dyld                          	       0x18b9bbf28 start + 2236
Wow, haven't blown up the stack in years

That must of been one of those humongous plugins
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 06:04 AM   #23282
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Quote:
Originally Posted by Geoff Waddington View Post
Wow, haven't blown up the stack in years

That must of been one of those humongous plugins
Actually, I think I've broken something on my end, I can't get the version from last night to work either.

There's only ever one plugin involved in any of this, VOSEQ.
MixMonkey is offline   Reply With Quote
Old 07-06-2023, 06:11 AM   #23283
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by Funkybot View Post
I agree with MM here.

If only 2 display lines, it may be best to just default all 3 in the group to DisplayUpper/Lower, then just NoAction them in the zone.
What Action would be assigned to DisplayUpper/Lower, can't be NoAction, that will cause the problem we discussed.
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 06:24 AM   #23284
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Quote:
Originally Posted by Geoff Waddington View Post
What Action would be assigned to DisplayUpper/Lower, can't be NoAction, that will cause the problem we discussed.
My use-case involves totally display-less actions. Whereas in your example, you were assigning FXParam 5 and 11 and both had FXParamValueDisplays. So it was slightly different.

Going back to your example, I'm suggesting, only FXParam 11 has an FXParamValueDisplay, and FXParam 5 gets no displays at all.

Code:
Rotary1        FXParam 5
DisplayUpper1  NoAction
DisplayLower1  NoAction

RotaryPush1    NoAction
DisplayUpper1  NoAction
DisplayLower1  NoAction

Fader1         FXParam 11
DisplayUpper1  FixedTextDisplay "Mid Gain"
DisplayLower1  FXParamValueDisplay 11
Just so I totally get it (still on the first cup of coffee): is the risk that a DisplayUpper/Lower combo could get blanked out due to the NoActions? Does CSI just assign widgets in order? Or does CSI process the NoAction widgets first, then add in the valued widgets after?
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 06:37 AM   #23285
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by Funkybot View Post
My use-case involves totally display-less actions. Whereas in your example, you were assigning FXParam 5 and 11 and both had FXParamValueDisplays. So it was slightly different.

Going back to your example, I'm suggesting, only FXParam 11 has an FXParamValueDisplay, and FXParam 5 gets no displays at all.

Code:
Rotary1        FXParam 5
DisplayUpper1  NoAction
DisplayLower1  NoAction

RotaryPush1    NoAction
DisplayUpper1  NoAction
DisplayLower1  NoAction

Fader1         FXParam 11
DisplayUpper1  FixedTextDisplay "Mid Gain"
DisplayLower1  FXParamValueDisplay 11
Just so I totally get it (still on the first cup of coffee): is the risk that a DisplayUpper/Lower combo could get blanked out due to the NoActions? Does CSI just assign widgets in order? Or does CSI process the NoAction widgets first, then add in the valued widgets after?
If you refactor a bit you get this:
Code:
DisplayLower1  NoAction
DisplayLower1  NoAction
DisplayLower1  FXParamValueDisplay 11
We all know what happens when we start assigning multiple feedback paths to one Widget

Unless we are unfortunate enough to have someone call their display Widget "NullDisplay" -- who would do that -- this serves to trick the CSI Zone parser.

The Zone parser attempts to match up the Widgets to Actions.

If it can't find a Widget -- e.g. NullDisplay -- no Action (as opposed to NoAction ) gets assigned.

Maybe a bit subtle, maybe a downright hack, but definitely very effective
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 06:50 AM   #23286
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Sounds good Geoff. Not a dealbreaker by any means. Users will do most editing in the Edit screen anyway. The NullDisplay hack is a good idea considering the constraints/risks.

One FR for the future: eventually, I think it would be cleaner to make the remap window a proper table with column headers for the available widgets. The screen looks very busy as-is. Particularly on windows with the horizontal scrolling. It's downright scray to look at here. I think a table layout would be much easier to read with thin column/row lines and columns for: Cell #, Rotary, RotaryPush, Fader.

Wouldn't need horizontal scrolling then, just vertical. Reaper already uses this kind of layout for things like the Track Manager screen, so I assume there's something in the code Justin provided that should make that work in a cross-platform matter.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 06:59 AM   #23287
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by Funkybot View Post
Sounds good Geoff. Not a dealbreaker by any means. Users will do most editing in the Edit screen anyway. The NullDisplay hack is a good idea considering the constraints/risks.
Yeah, if you were manually authoring the Zones you would do something like this:

Code:
Rotary1        FXParam 5

RotaryPush1    NoAction

Fader1         FXParam 11
DisplayUpper1  FixedTextDisplay "Mid Gain"
DisplayLower1  FXParamValueDisplay 11
Parsing code is nightmarish at the best of times, it easiest when there are consistent blocks, in this case the ubiquitous trio -- FX Param, Fixed Text, FX Param value.

I just don't even want to think about navigating the above, just contemplating it makes me want to lie down

Quote:
Originally Posted by Funkybot View Post
One FR for the future: eventually, I think it would be cleaner to make the remap window a proper table with column headers for the available widgets. The screen looks very busy as-is. Particularly on windows with the horizontal scrolling. It's downright scray to look at here. I think a table layout would be much easier to read with thin column/row lines and columns for: Cell #, Rotary, RotaryPush, Fader.

Wouldn't need horizontal scrolling then, just vertical. Reaper already uses this kind of layout for things like the Track Manager screen, so I assume there's something in the code Justin provided that should make that work in a cross-platform matter.
I hear ya'

Every time I look at the list, I cringe
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 07:07 AM   #23288
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

The screen wasn't too bad looking until it got expanded with all the additional widgets, which was all of yesterday. Still plenty of time to make it cleaner after the functionality is tested and in place.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 07:14 AM   #23289
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

I can't get the ReMap window to open at all at the momnet without Reaper crashing. If I remove the # lines from the SurfaceFXLayout, it will launch, but then I lose RotaryPush, encoder ring styles etc.

I only have a single C4 in the Reaper setup.
MixMonkey is offline   Reply With Quote
Old 07-06-2023, 07:20 AM   #23290
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Quote:
Originally Posted by MixMonkey View Post
I can't get the ReMap window to open at all at the momnet without Reaper crashing. If I remove the # lines from the SurfaceFXLayout, it will launch, but then I lose RotaryPush, encoder ring styles etc.

I only have a single C4 in the Reaper setup.
I gave the window a quick smoke test earlier with Reaper's audio engine off before work, but the Remap window opened as expected here on Windows.

Maybe just post your:

SurfaceFXLayout
FXLayouts
FXEpilogue (if any)
FXPrologue (if any)

...just to get a second set of eyes [Geoff's] on them.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 07:23 AM   #23291
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Quote:
Originally Posted by Geoff Waddington View Post

Parsing code is nightmarish at the best of times, it easiest when there are consistent blocks, in this case the ubiquitous trio -- FX Param, Fixed Text, FX Param value.
Which is why it might better to use that format for everything. For an SCE24, with two controls (Rotary and RotaryPush) and four display lines, you have two discrete sets of definitions.

With a C4, where there are only two display lines, you still have two definitions, but this time one has two redundant display lines, which go nowhere.
MixMonkey is offline   Reply With Quote
Old 07-06-2023, 07:25 AM   #23292
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Quote:
Originally Posted by Funkybot View Post
I gave the window a quick smoke test earlier with Reaper's audio engine off before work, but the Remap window opened as expected here on Windows.

Maybe just post your:

SurfaceFXLayout
FXLayouts
FXEpilogue (if any)
FXPrologue (if any)

...just to get a second set of eyes [Geoff's] on them.
Code:
Zone SurfaceFXLayout
    Rotary       FXParam
    DisplayUpper FixedTextDisplay
    DisplayLower FXParamValueDisplay    
ZoneEnd

#WidgetTypes Rotary RotaryPush
#RingStyles Dot Fill BoostCut Spread
#DisplayRows DisplayUpper DisplayLower
Code:
Zone FXLayouts
    "" "D" 8
    "" "C" 8
    "" "B" 8
    "" "A" 8
    "Shift" "D" 8
    "Shift" "C" 8
    "Shift" "B" 8
    "Shift" "A" 8
ZoneEnd
MixMonkey is offline   Reply With Quote
Old 07-06-2023, 08:03 AM   #23293
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by MixMonkey View Post
Which is why it might better to use that format for everything. For an SCE24, with two controls (Rotary and RotaryPush) and four display lines, you have two discrete sets of definitions.

With a C4, where there are only two display lines, you still have two definitions, but this time one has two redundant display lines, which go nowhere.
Not sure I understand, we do use that format for the SCE24:

Code:
Zone SurfaceFXLayout
	Rotary FXParam RingStyle=Dot LEDRingColor=#0000ffff PushColor=#003f00ff
	DisplayRow1 FixedTextDisplay TopMargin=0 BottomMargin=24 Font=3 Foreground=#ffff00ff Background=#000000ff
	DisplayRow2 FXParamValueDisplay TopMargin=32 BottomMargin=64 Font=5 Foreground=#ffff00ff Background=#000000ff
ZoneEnd

#WidgetTypes Rotary RotaryPush
#RingStyles Dot Fill BoostCut Spread
#DisplayRows DisplayRow1 DisplayRow2 DisplayRow3 DisplayRow4
#DisplayFonts 0 1 2 3 4 5 6 7 8 9
The only difference is that DisplayRow3 and DisplayRow4 are unused in the initial auto generated Zone.

You have the option of using any 2 of the 4 display rows, but the Zone file is still the same format as every other Zone file:

Code:
Zone "SomeZone"
	Rotary1 FXParam 0
	DisplayRow1 FixedTextDisplay "Meter"
	DisplayRow2 FXParamValueDisplay 0

	RotaryPush1 FXParam 1
	DisplayRow3 FixedTextDisplay "Bypass"
	DisplayRow4 FXParamValueDisplay 1
ZoneEnd
There are never 4 rows for a particular parameter, only 2, struggling to think of what the extra rows could display for one param
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 08:13 AM   #23294
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by MixMonkey View Post
Code:
Zone SurfaceFXLayout
    Rotary       FXParam
    DisplayUpper FixedTextDisplay
    DisplayLower FXParamValueDisplay    
ZoneEnd

#WidgetTypes Rotary RotaryPush
#RingStyles Dot Fill BoostCut Spread
#DisplayRows DisplayUpper DisplayLower
Code:
Zone FXLayouts
    "" "D" 8
    "" "C" 8
    "" "B" 8
    "" "A" 8
    "Shift" "D" 8
    "Shift" "C" 8
    "Shift" "B" 8
    "Shift" "A" 8
ZoneEnd
Here's the stuff for my X Touch, yours looks fine to me, maybe someone else can spot a difference:

Code:
Zone SurfaceFXLayout
	Rotary FXParam
	DisplayUpper FixedTextDisplay
	DisplayLower FXParamValueDisplay
ZoneEnd

#WidgetTypes Rotary RotaryPush
#RingStyles Dot Fill BoostCut Spread
#DisplayRows DisplayUpper DisplayLower

Code:
Zone FXLayouts
	"" "" 8
	"Shift" "" 8
	"Control" "" 8
	"Option" "" 8
ZoneEnd
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 08:17 AM   #23295
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

MM's zones look good to me too. Not sure why the remap window is crashing.

Do you have ValhallaVintageVerb? I got the remap window to open on that earlier today. If you can't figure out what's causing the crash in the next few hours, I can try to reproduce on the Mac with the SCE-24.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 08:18 AM   #23296
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Quote:
Originally Posted by Funkybot View Post
MM's zones look good to me too. Not sure why the remap window is crashing.
It works if I delete the modifier lines. Investigating...
MixMonkey is offline   Reply With Quote
Old 07-06-2023, 09:40 AM   #23297
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Quote:
Originally Posted by MixR View Post
Would it be possible to implement the following (currently missing):
  1. TrackSendInvertPolarityDisplay
  2. and, for completeness' sake, TrackSendStereoMonoDisplay
Without the send window open it's not possible to see whether a send's polarity has been reversed.
Just putting this here in the dev thread.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 10:15 AM   #23298
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Ok, so if I get rid of the modifiers in the FXLayouts Zone it behaves nicely.

Colors/fonts etc no longer appear in Group 2, but are still in Group 3, presumably because I don't have a third declared Widget.

Aliases, steps, RotaryPush assignments and re-arrangement all seem to work fine.

I'd suggest defaulting Rotary and RotaryPush to "Dot" (yes, I know it doesn't make sense for RotaryPush, but unless you do that you don't see the push parameter in the ReMap window).
MixMonkey is offline   Reply With Quote
Old 07-06-2023, 10:26 AM   #23299
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by MixMonkey View Post
Ok, so if I get rid of the modifiers in the FXLayouts Zone it behaves nicely.

Colors/fonts etc no longer appear in Group 2, but are still in Group 3, presumably because I don't have a third declared Widget.

Aliases, steps, RotaryPush assignments and re-arrangement all seem to work fine.

I'd suggest defaulting Rotary and RotaryPush to "Dot" (yes, I know it doesn't make sense for RotaryPush, but unless you do that you don't see the push parameter in the ReMap window).
Group3 was a mess, cleaning it up now.

To set the default for the Rotary just change your SurfaceFXLayout:

Code:
Zone SurfaceFXLayout
	Rotary FXParam RingStyle=Dot
	DisplayUpper FixedTextDisplay
	DisplayLower FXParamValueDisplay
ZoneEnd

#WidgetTypes Rotary RotaryPush Fader
#RingStyles Dot Fill BoostCut Spread
#DisplayRows DisplayUpper DisplayLower
When you say push parameter, do you mean the param number ?
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 10:30 AM   #23300
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Quote:
Originally Posted by Geoff Waddington View Post
Group3 was a mess, cleaning it up now.

To set the default for the Rotary just change your SurfaceFXLayout:

Code:
Zone SurfaceFXLayout
	Rotary FXParam RingStyle=Dot
	DisplayUpper FixedTextDisplay
	DisplayLower FXParamValueDisplay
ZoneEnd

#WidgetTypes Rotary RotaryPush Fader
#RingStyles Dot Fill BoostCut Spread
#DisplayRows DisplayUpper DisplayLower
Got it
Quote:
When you say push parameter, do you mean the param number ?
No, parameter name, but I've just discovered it doesn't survive save/reload anyway. When you re-open the ReMap window, it always shows "Push->", but you know there's an assignment because it doesn't say "NoAction".
MixMonkey is offline   Reply With Quote
Old 07-06-2023, 11:06 AM   #23301
EpicSounds
Human being with feelings
 
EpicSounds's Avatar
 
Join Date: Jul 2009
Posts: 7,734
Default

The new FX Remap function is pretty cool.

1 feature I'd like to have is to duplicate a parameter and assign it to push to reset.
Still kinda miss fx params on faders and knobs.
__________________
REAPER Video Tutorials, Tips & Tricks and more at The REAPER Blog
EpicSounds is offline   Reply With Quote
Old 07-06-2023, 11:25 AM   #23302
MT4U
Human being with feelings
 
MT4U's Avatar
 
Join Date: Jan 2022
Location: Unifield
Posts: 397
Default

Quote:
Originally Posted by EpicSounds View Post
Still kinda miss fx params on faders and knobs.
Do you mean using the Faders instead of the Encoders to control FX Params? If that is the case, FunkyBot is pushing towards the same goal.
__________________

CSI_FX
: SubZone based GUI/Automapper for CSI.(UPD:2024-09-04)
Video Demo/Tutorial
Scripts for CSI: Reaper EEL2 scripts to use with CSI
MT4U is offline   Reply With Quote
Old 07-06-2023, 11:35 AM   #23303
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by EpicSounds View Post
The new FX Remap function is pretty cool.

1 feature I'd like to have is to duplicate a parameter and assign it to push to reset.
Still kinda miss fx params on faders and knobs.
Yeah, it's starting to get there

You can do a push to reset no problem on the latest, just assign the push to the same param num, give it a single step value that you would like for your reset value, and you are good.

Probably a good idea to assign blanks for the displays.

You can also map faders and knobs at the same time, display is a bit tricky with 2 line displays, but we will be adding toggle soon.
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 11:35 AM   #23304
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by MT4U View Post
Do you mean using the Faders instead of the Encoders to control FX Params? If that is the case, FunkyBot is pushing towards the same goal.
You can easily use both now.
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 11:37 AM   #23305
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

New Exp build is up.

https://stash.reaper.fm/v/42044/CSI%20Exp.zip

Cleaned up some things, and yes, there is a special surprise in there.

Still needs tuning, but it is a whole lot better
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 11:58 AM   #23306
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Quote:
Originally Posted by Geoff Waddington View Post
New Exp build is up.

https://stash.reaper.fm/v/42044/CSI%20Exp.zip

Cleaned up some things, and yes, there is a special surprise in there.

Still needs tuning, but it is a whole lot better
The Remap window is much cleaner looking. Thanks!

I think for drag and purposes though, it's probably a good idea to select the whole row when one clicks. I'm dragging and dropping based on name, but I have to click on the number on the far left to actually do that and it's easy to grab the wrong row.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 12:01 PM   #23307
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by Funkybot View Post
The Remap window is much cleaner looking. Thanks!

I think for drag and purposes though, it's probably a good idea to select the whole row when one clicks. I'm dragging and dropping based on name, but I have to click on the number on the far left to actually do that and it's easy to grab the wrong row.
Yeah, we'll have to tune it a bit more, but it is on the right path now

Meanwhile, back at the ranch...

Make sure you do that firmware update !!!
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 12:02 PM   #23308
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

I'd also just make the whole window wider and eliminate the need for horizontal scrolling entirely.

But MUCH better.

Quote:
Originally Posted by Geoff Waddington View Post
Yeah, we'll have to tune it a bit more, but it is on the right path now

Meanwhile, back at the ranch...

Make sure you do that firmware update !!!
Just waiting for 5 o'clock to roll around. I just couldn't wait to see what the surprise was.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 12:03 PM   #23309
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by Funkybot View Post
The Remap window is much cleaner looking. Thanks!

I think for drag and purposes though, it's probably a good idea to select the whole row when one clicks. I'm dragging and dropping based on name, but I have to click on the number on the far left to actually do that and it's easy to grab the wrong row.
Out of my control, that is the nature of that style list view, thanks Windows
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 12:05 PM   #23310
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by Funkybot View Post
I'd also just make the whole window wider and eliminate the need for horizontal scrolling entirely.

But MUCH better.



Just waiting for 5 o'clock to roll around. I just couldn't wait to see what the surprise was.
Haha, knew that would get you

Yes, I think that Window should be wider now.

Once again, make sure to update that firmware, there's another really good surprise in there, great day overall
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 12:46 PM   #23311
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Quote:
Originally Posted by Geoff Waddington View Post
New Exp build is up.

https://stash.reaper.fm/v/42044/CSI%20Exp.zip

Cleaned up some things, and yes, there is a special surprise in there.

Still needs tuning, but it is a whole lot better
Looks a lot nicer Group 3 is gone.

Something weird has happened to the vertical scroll in the ReMap window. When you move the vertical scroll bar to bring widgets into view, when you go to click 'n' drag, the scroll bar snaps back to the top of the window and the parameter move ends up in a random place.

Still get crashing with modifiers.
MixMonkey is offline   Reply With Quote
Old 07-06-2023, 12:49 PM   #23312
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Quote:
Originally Posted by MixMonkey View Post
Still get crashing with modifiers.
Are you doing anything atypical with the modifiers on the C4? Like repurposing buttons or multiple versions of the same modifiers? Just trying to figure out why they'd be crashing for you.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 01:02 PM   #23313
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Quote:
Originally Posted by Funkybot View Post
Are you doing anything atypical with the modifiers on the C4? Like repurposing buttons or multiple versions of the same modifiers? Just trying to figure out why they'd be crashing for you.
Nothing strange and the same thing happens with the iPadMixer and iPadBCR2000.

I don't think it actually has anything to do with the modifiers per se, I think it's because of the large number of widgets they generate.

If I keep to a single row and a single modifier, it works fine.
MixMonkey is offline   Reply With Quote
Old 07-06-2023, 01:17 PM   #23314
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Quote:
Originally Posted by MixMonkey View Post
Nothing strange and the same thing happens with the iPadMixer and iPadBCR2000.

I don't think it actually has anything to do with the modifiers per se, I think it's because of the large number of widgets they generate.

If I keep to a single row and a single modifier, it works fine.
just as a point of reference, this works fine with the X-Touch on Windows...

Code:
Zone FXLayouts
	"" "" 8
	"Shift" "" 8
        "Option" "" 8
	"Control" "" 8
	"Alt" "" 8
	"Shift+Option" "" 8
	"Shift+Control" "" 8
	"Shift+Alt" "" 8
	"Option+Control" "" 8
	"Option+Alt" "" 8
	"Control+Alt" "" 8
ZoneEnd
So I'm also using a lot (88 options once you factor in modifiers, not to mention the addition of a Fader widget on each), but no crashing here on Windows. The C4 has what, 24 widgets? 24x3 is 72 widgets. Which means if you were using non-modified, Shift, Option, you'd still be under the 88 widgets on my list with all the modifier combinations.

Maybe it's the combination of modifiers + A,B,C,D rows. Or maybe the inverse order of the rows (yours go D, C B, A)? Just speculating wildly. I'll be checking out the SCE-24 later tonight.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 01:25 PM   #23315
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Geoff, would it be possible to take one of the existing CSI actions like "Show Output to surfaces" and have it pull in the FX Param # and FX Param Name of the Focused FX? I know creating a new action is tricky.

For VERY large plugins, it would be convenient to find the FXParam # if we had an action that could home in on the Focused FX Param and show us what the number is on the list. Think of a synthesizer plugin like Diva where there are 3 or 4 different oscillator/filter types with similar knobs or a reverb plugin like the Strymon Big Sky where each of the 12 modes has it's own decay, pre-delay, etc. params. Finding a specific FX Param in the list would be tricky.

Bonus points if that could also even display the normalized FXParamValue. Would make manually finding steps on tricky plugins a breeze.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 07-06-2023, 01:35 PM   #23316
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Definitely something hinky going on. Using this FXLayouts.zon:
Code:
Zone FXLayouts
    "" "A" 8
    "" "B" 8
    "" "C" 8
    "" "D" 8
    "Shift" "A" 8
    "Shift" "B" 8
    "Shift" "C" 8
    "Shift" "D" 8
ZoneEnd
I get this auto-generated fx.zon:
Code:
Zone "VST3: TDR VOS SlickEQ (Tokyo Dawn Labs)" "TDR VOS SlickEQ"

#Begin auto generated section

	RotaryA1	FXParam 0 RingStyle=Dot
	DisplayUpperA1	FixedTextDisplay "LOW Gain"
	DisplayLowerA1	FXParamValueDisplay 0

	RotaryPushA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA2	FXParam 1 RingStyle=Dot
	DisplayUpperA2	FixedTextDisplay "LOW Freq"
	DisplayLowerA2	FXParamValueDisplay 1

	RotaryPushA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA3	FXParam 2 RingStyle=Dot
	DisplayUpperA3	FixedTextDisplay "LOW Shape"
	DisplayLowerA3	FXParamValueDisplay 2

	RotaryPushA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA4	FXParam 3 RingStyle=Dot
	DisplayUpperA4	FixedTextDisplay "MID Gain"
	DisplayLowerA4	FXParamValueDisplay 3

	RotaryPushA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA5	FXParam 4 RingStyle=Dot
	DisplayUpperA5	FixedTextDisplay "MID Freq"
	DisplayLowerA5	FXParamValueDisplay 4

	RotaryPushA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA6	FXParam 5 RingStyle=Dot
	DisplayUpperA6	FixedTextDisplay "HIGH Gain"
	DisplayLowerA6	FXParamValueDisplay 5

	RotaryPushA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA7	FXParam 6 RingStyle=Dot
	DisplayUpperA7	FixedTextDisplay "HIGH Freq"
	DisplayLowerA7	FXParamValueDisplay 6

	RotaryPushA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA8	FXParam 7 RingStyle=Dot
	DisplayUpperA8	FixedTextDisplay "HIGH Shape"
	DisplayLowerA8	FXParamValueDisplay 7

	RotaryPushA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB1	FXParam 8 RingStyle=Dot
	DisplayUpperB1	FixedTextDisplay "EQ Model"
	DisplayLowerB1	FXParamValueDisplay 8

	RotaryPushB1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB2	FXParam 9 RingStyle=Dot
	DisplayUpperB2	FixedTextDisplay "EQ Sat"
	DisplayLowerB2	FXParamValueDisplay 9

	RotaryPushB2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB3	FXParam 10 RingStyle=Dot
	DisplayUpperB3	FixedTextDisplay "HP Freq"
	DisplayLowerB3	FXParamValueDisplay 10

	RotaryPushB3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB4	FXParam 11 RingStyle=Dot
	DisplayUpperB4	FixedTextDisplay "OUT Stage"
	DisplayLowerB4	FXParamValueDisplay 11

	RotaryPushB4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB5	FXParam 12 RingStyle=Dot
	DisplayUpperB5	FixedTextDisplay "OUT Drive"
	DisplayLowerB5	FXParamValueDisplay 12

	RotaryPushB5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB6	FXParam 13 RingStyle=Dot
	DisplayUpperB6	FixedTextDisplay "OUT Gain"
	DisplayLowerB6	FXParamValueDisplay 13

	RotaryPushB6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB7	FXParam 14 RingStyle=Dot
	DisplayUpperB7	FixedTextDisplay "Bypass"
	DisplayLowerB7	FXParamValueDisplay 14

	RotaryPushB7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB8	FXParam 15 RingStyle=Dot
	DisplayUpperB8	FixedTextDisplay "Mode"
	DisplayLowerB8	FXParamValueDisplay 15

	RotaryPushB8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC1	FXParam 16 RingStyle=Dot
	DisplayUpperC1	FixedTextDisplay "LOW Bypass"
	DisplayLowerC1	FXParamValueDisplay 16

	RotaryPushC1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC2	FXParam 17 RingStyle=Dot
	DisplayUpperC2	FixedTextDisplay "MID Bypass"
	DisplayLowerC2	FXParamValueDisplay 17

	RotaryPushC2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC3	FXParam 18 RingStyle=Dot
	DisplayUpperC3	FixedTextDisplay "HIGH Bypass"
	DisplayLowerC3	FXParamValueDisplay 18

	RotaryPushC3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC4	FXParam 19 RingStyle=Dot
	DisplayUpperC4	FixedTextDisplay "Auto Gain"
	DisplayLowerC4	FXParamValueDisplay 19

	RotaryPushC4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC5	FXParam 20 RingStyle=Dot
	DisplayUpperC5	FixedTextDisplay "Quality"
	DisplayLowerC5	FXParamValueDisplay 20

	RotaryPushC5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC6	FXParam 21 RingStyle=Dot
	DisplayUpperC6	FixedTextDisplay "Program"
	DisplayLowerC6	FXParamValueDisplay 21

	RotaryPushC6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC7	FXParam 22 RingStyle=Dot
	DisplayUpperC7	FixedTextDisplay "Bypass"
	DisplayLowerC7	FXParamValueDisplay 22

	RotaryPushC7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC8	FXParam 23 RingStyle=Dot
	DisplayUpperC8	FixedTextDisplay "Wet"
	DisplayLowerC8	FXParamValueDisplay 23

	RotaryPushC8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD1	FXParam 24 RingStyle=Dot
	DisplayUpperD1	FixedTextDisplay "Delta"
	DisplayLowerD1	FXParamValueDisplay 24

	RotaryPushD1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


#End auto generated section

ZoneEnd

0 LOW Gain
1 LOW Freq
2 LOW Shape
3 MID Gain
4 MID Freq
5 HIGH Gain
6 HIGH Freq
7 HIGH Shape
8 EQ Model
9 EQ Sat
10 HP Freq
11 OUT Stage
12 OUT Drive
13 OUT Gain
14 Bypass
15 Mode
16 LOW Bypass
17 MID Bypass
18 HIGH Bypass
19 Auto Gain
20 Quality
21 Program
22 Bypass
23 Wet
24 Delta
MixMonkey is offline   Reply With Quote
Old 07-06-2023, 01:55 PM   #23317
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by Funkybot View Post
Geoff, would it be possible to take one of the existing CSI actions like "Show Output to surfaces" and have it pull in the FX Param # and FX Param Name of the Focused FX? I know creating a new action is tricky.

For VERY large plugins, it would be convenient to find the FXParam # if we had an action that could home in on the Focused FX Param and show us what the number is on the list. Think of a synthesizer plugin like Diva where there are 3 or 4 different oscillator/filter types with similar knobs or a reverb plugin like the Strymon Big Sky where each of the 12 modes has it's own decay, pre-delay, etc. params. Finding a specific FX Param in the list would be tricky.

Bonus points if that could also even display the normalized FXParamValue. Would make manually finding steps on tricky plugins a breeze.
Sounds like it might be doable, remind me after we get through this Remap stuff.
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 02:01 PM   #23318
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

New Exp build is up.

https://stash.reaper.fm/v/42044/CSI%20Exp.zip

Hacked the Windows version of the param list, you can at least now drag anywhere in the first column.

Changed the Mac version to right justified, much nicer.

And yes, I tried the same on Windows.
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 02:03 PM   #23319
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Quote:
Originally Posted by MixMonkey View Post
Definitely something hinky going on. Using this FXLayouts.zon:
Code:
Zone FXLayouts
    "" "A" 8
    "" "B" 8
    "" "C" 8
    "" "D" 8
    "Shift" "A" 8
    "Shift" "B" 8
    "Shift" "C" 8
    "Shift" "D" 8
ZoneEnd
I get this auto-generated fx.zon:
Code:
Zone "VST3: TDR VOS SlickEQ (Tokyo Dawn Labs)" "TDR VOS SlickEQ"

#Begin auto generated section

	RotaryA1	FXParam 0 RingStyle=Dot
	DisplayUpperA1	FixedTextDisplay "LOW Gain"
	DisplayLowerA1	FXParamValueDisplay 0

	RotaryPushA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA2	FXParam 1 RingStyle=Dot
	DisplayUpperA2	FixedTextDisplay "LOW Freq"
	DisplayLowerA2	FXParamValueDisplay 1

	RotaryPushA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA3	FXParam 2 RingStyle=Dot
	DisplayUpperA3	FixedTextDisplay "LOW Shape"
	DisplayLowerA3	FXParamValueDisplay 2

	RotaryPushA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA4	FXParam 3 RingStyle=Dot
	DisplayUpperA4	FixedTextDisplay "MID Gain"
	DisplayLowerA4	FXParamValueDisplay 3

	RotaryPushA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA5	FXParam 4 RingStyle=Dot
	DisplayUpperA5	FixedTextDisplay "MID Freq"
	DisplayLowerA5	FXParamValueDisplay 4

	RotaryPushA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA6	FXParam 5 RingStyle=Dot
	DisplayUpperA6	FixedTextDisplay "HIGH Gain"
	DisplayLowerA6	FXParamValueDisplay 5

	RotaryPushA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA7	FXParam 6 RingStyle=Dot
	DisplayUpperA7	FixedTextDisplay "HIGH Freq"
	DisplayLowerA7	FXParamValueDisplay 6

	RotaryPushA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryA8	FXParam 7 RingStyle=Dot
	DisplayUpperA8	FixedTextDisplay "HIGH Shape"
	DisplayLowerA8	FXParamValueDisplay 7

	RotaryPushA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB1	FXParam 8 RingStyle=Dot
	DisplayUpperB1	FixedTextDisplay "EQ Model"
	DisplayLowerB1	FXParamValueDisplay 8

	RotaryPushB1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB2	FXParam 9 RingStyle=Dot
	DisplayUpperB2	FixedTextDisplay "EQ Sat"
	DisplayLowerB2	FXParamValueDisplay 9

	RotaryPushB2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB3	FXParam 10 RingStyle=Dot
	DisplayUpperB3	FixedTextDisplay "HP Freq"
	DisplayLowerB3	FXParamValueDisplay 10

	RotaryPushB3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB4	FXParam 11 RingStyle=Dot
	DisplayUpperB4	FixedTextDisplay "OUT Stage"
	DisplayLowerB4	FXParamValueDisplay 11

	RotaryPushB4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB5	FXParam 12 RingStyle=Dot
	DisplayUpperB5	FixedTextDisplay "OUT Drive"
	DisplayLowerB5	FXParamValueDisplay 12

	RotaryPushB5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB6	FXParam 13 RingStyle=Dot
	DisplayUpperB6	FixedTextDisplay "OUT Gain"
	DisplayLowerB6	FXParamValueDisplay 13

	RotaryPushB6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB7	FXParam 14 RingStyle=Dot
	DisplayUpperB7	FixedTextDisplay "Bypass"
	DisplayLowerB7	FXParamValueDisplay 14

	RotaryPushB7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryB8	FXParam 15 RingStyle=Dot
	DisplayUpperB8	FixedTextDisplay "Mode"
	DisplayLowerB8	FXParamValueDisplay 15

	RotaryPushB8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC1	FXParam 16 RingStyle=Dot
	DisplayUpperC1	FixedTextDisplay "LOW Bypass"
	DisplayLowerC1	FXParamValueDisplay 16

	RotaryPushC1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC2	FXParam 17 RingStyle=Dot
	DisplayUpperC2	FixedTextDisplay "MID Bypass"
	DisplayLowerC2	FXParamValueDisplay 17

	RotaryPushC2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC3	FXParam 18 RingStyle=Dot
	DisplayUpperC3	FixedTextDisplay "HIGH Bypass"
	DisplayLowerC3	FXParamValueDisplay 18

	RotaryPushC3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC4	FXParam 19 RingStyle=Dot
	DisplayUpperC4	FixedTextDisplay "Auto Gain"
	DisplayLowerC4	FXParamValueDisplay 19

	RotaryPushC4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC5	FXParam 20 RingStyle=Dot
	DisplayUpperC5	FixedTextDisplay "Quality"
	DisplayLowerC5	FXParamValueDisplay 20

	RotaryPushC5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC6	FXParam 21 RingStyle=Dot
	DisplayUpperC6	FixedTextDisplay "Program"
	DisplayLowerC6	FXParamValueDisplay 21

	RotaryPushC6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC7	FXParam 22 RingStyle=Dot
	DisplayUpperC7	FixedTextDisplay "Bypass"
	DisplayLowerC7	FXParamValueDisplay 22

	RotaryPushC7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryC8	FXParam 23 RingStyle=Dot
	DisplayUpperC8	FixedTextDisplay "Wet"
	DisplayLowerC8	FXParamValueDisplay 23

	RotaryPushC8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD1	FXParam 24 RingStyle=Dot
	DisplayUpperD1	FixedTextDisplay "Delta"
	DisplayLowerD1	FXParamValueDisplay 24

	RotaryPushD1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	RotaryD8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	RotaryPushD8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA1	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA2	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA3	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA4	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA5	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA6	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA7	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


	Shift+RotaryA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction

	Shift+RotaryPushA8	NoAction
	NullDisplay	NoAction
	NullDisplay	NoAction


#End auto generated section

ZoneEnd

0 LOW Gain
1 LOW Freq
2 LOW Shape
3 MID Gain
4 MID Freq
5 HIGH Gain
6 HIGH Freq
7 HIGH Shape
8 EQ Model
9 EQ Sat
10 HP Freq
11 OUT Stage
12 OUT Drive
13 OUT Gain
14 Bypass
15 Mode
16 LOW Bypass
17 MID Bypass
18 HIGH Bypass
19 Auto Gain
20 Quality
21 Program
22 Bypass
23 Wet
24 Delta
Interesting, will investigate.

[edit] Ok, I managed to get something like what you are seeing when I used modifiers, will dig in more later.
__________________
To install you need the CSI Software and Support Files
For installation instructions and documentation see the Wiki
Donate -- via PayPal to waddingtongeoff@gmail.com

Last edited by Geoff Waddington; 07-06-2023 at 02:25 PM.
Geoff Waddington is offline   Reply With Quote
Old 07-06-2023, 02:25 PM   #23320
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Quote:
Originally Posted by Geoff Waddington View Post
New Exp build is up.

https://stash.reaper.fm/v/42044/CSI%20Exp.zip

Hacked the Windows version of the param list, you can at least now drag anywhere in the first column.

Changed the Mac version to right justified, much nicer.

And yes, I tried the same on Windows.
Dragging still only works within the bounds of the initial window. If you scroll the window to access Widgets lower down, when you try to drag, the list snaps back to the top.
MixMonkey 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 10:51 PM.


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