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

Reply
 
Thread Tools Display Modes
Old Yesterday, 01:10 PM   #21121
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 9,130
Default

New build is up.

CSI Exp.zip

Fixed SetXTouchDisplayColors bug.

Added NoFeedback parsing to ActionContext::UpdateWidgetMode.

usage:

Code:
    SomeWidget  WidgetMode NoFeedback

Implemented controls and display for the metronome's primary and secondary volume.

usage:

Code:
Zone "F2"
    DisplayUpper1    MetronomeSecondaryVolumeDisplay "S" // "S"econdary
    DisplayLower1    MetronomePrimaryVolumeDisplay   "P" // "P"rimary
    Fader1           MetronomePrimaryVolume
    Rotary1          MetronomeSecondaryVolume
    F2               LeaveSubZone
ZoneEnd
__________________
To install you need the 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 Yesterday, 04:15 PM   #21122
Funkybot
Human being with feelings
 
Join Date: Jul 2007
Posts: 4,517
Default

Quote:
Originally Posted by Geoff Waddington View Post
This is just a very preliminary idea.


Or maybe this reads better:
Code:
Select Switch  18-1f
Rotary Encoder 10-17
Fader  Fader14 e0-e7
Master Fader14 e8
What about something like this?
Code:
Encoder                    // List name dictates the widget type, all Encoder widgets go here
    RotaryA1 b0 00 7f
    RotaryA2 b0 01 7f
    RotaryA3 b0 02 7f
    RotaryA4 b0 03 7f
...
Encoder_End

FB_Fader7Bit               // For FB, just add the widget name you defined earlier
    RotaryA1
    RotaryA2
    RotaryA3
    RotaryA4
FB_Fader7Bit_End


Press                      // Probably don't even need to define the release if Press, just assume it's same address with last byte as 00, if any press, then define the message
    RotaryPushA1 b1 00 7f b1 00 00
    RotaryPushA2 b1 01 7f b1 01 00
    RotaryPushA3 b1 02 7f b1 02 00
    RotaryPushA4 b1 03 7f b1 03 00
....
Pess_End

FB_MFT_RGB                  // Here I'm saying use the FB_MFT_RGB widget for FB
    RotaryPushA1
    RotaryPushA2
    RotaryPushA3
    RotaryPushA4
...
FB_MFT_RGB_END
It's much less verbose than current, while still allowing users to use different MG or FB processor types, and define the naming convention however they'd like. So it's basically a lot like the current state .mst just with fewer characters.
Funkybot is online now   Reply With Quote
Old Yesterday, 04:44 PM   #21123
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 9,130
Default

Quote:
Originally Posted by Funkybot View Post
What about something like this?
Code:
Encoder                    // List name dictates the widget type, all Encoder widgets go here
    RotaryA1 b0 00 7f
    RotaryA2 b0 01 7f
    RotaryA3 b0 02 7f
    RotaryA4 b0 03 7f
...
Encoder_End

FB_Fader7Bit               // For FB, just add the widget name you defined earlier
    RotaryA1
    RotaryA2
    RotaryA3
    RotaryA4
FB_Fader7Bit_End


Press                      // Probably don't even need to define the release if Press, just assume it's same address with last byte as 00, if any press, then define the message
    RotaryPushA1 b1 00 7f b1 00 00
    RotaryPushA2 b1 01 7f b1 01 00
    RotaryPushA3 b1 02 7f b1 02 00
    RotaryPushA4 b1 03 7f b1 03 00
....
Pess_End

FB_MFT_RGB                  // Here I'm saying use the FB_MFT_RGB widget for FB
    RotaryPushA1
    RotaryPushA2
    RotaryPushA3
    RotaryPushA4
...
FB_MFT_RGB_END
It's much less verbose than current, while still allowing users to use different MG or FB processor types, and define the naming convention however they'd like. So it's basically a lot like the current state .mst just with fewer characters.
All good thoughts, and it does allow for non contiguous values.

I think it will take a few iterations for this to settle into a solution -- thanks for one more iteration
__________________
To install you need the 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 Yesterday, 05:30 PM   #21124
Funkybot
Human being with feelings
 
Join Date: Jul 2007
Posts: 4,517
Default

Quote:
Originally Posted by Geoff Waddington View Post
All good thoughts, and it does allow for non contiguous values.
That particular aspect is what I was looking to solve for. The MFTwister has 4 banks of 16 encoders, and I further subdivide them to get 8 banks of 8 (RotaryA1-A8, B1-B8...H1-H8). Wouldn't want to have Rotary1-64.
Funkybot is online now   Reply With Quote
Old Yesterday, 05:53 PM   #21125
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 3,621
Default

Quote:
Originally Posted by Geoff Waddington View Post
I think it will take a few iterations for this to settle into a solution -- thanks for one more iteration
I don't really see the point in simplifying the .mst at the expense of more complicated/less intuitive Zone files.

The .mst only has to be defined once for a given surface, it can really be as complicated as you care to make it in order to rationalise the underling code base.

As CSI has no GUI to speak of, the Zone files are where the users interact with CSI's functionality. These need to be as easy to understand as possible or a GUI needs to be created that allows complicated control relationships to be presented in a manner that can be understood by people with no coding inclinations.

Perhaps I don't understand what problem you're trying to solve with these changes?
MixMonkey is offline   Reply With Quote
Old Yesterday, 08:34 PM   #21126
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 9,130
Default

Quote:
Originally Posted by MixMonkey View Post
I don't really see the point in simplifying the .mst at the expense of more complicated/less intuitive Zone files.

The .mst only has to be defined once for a given surface, it can really be as complicated as you care to make it in order to rationalise the underling code base.

As CSI has no GUI to speak of, the Zone files are where the users interact with CSI's functionality. These need to be as easy to understand as possible or a GUI needs to be created that allows complicated control relationships to be presented in a manner that can be understood by people with no coding inclinations.

Perhaps I don't understand what problem you're trying to solve with these changes?
Yup, agree with what you are saying.

I think we may be able to achieve all the goals with a few minor changes.

The discussion has been tremendously valuable, as usual.

I think we just need to add modes of this form and we're done:

Code:
    Some Widget SomeAction Feedback=No Align=Center
__________________
To install you need the 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 Yesterday, 09:55 PM   #21127
Funkybot
Human being with feelings
 
Join Date: Jul 2007
Posts: 4,517
Default

I dig it. Keeps it very simple.
Funkybot is online now   Reply With Quote
Old Yesterday, 11:50 PM   #21128
diesel
Human being with feelings
 
Join Date: Sep 2022
Location: Australia
Posts: 28
Default

Quote:
Originally Posted by Geoff Waddington View Post
What are these "CC addresses" you speak of, never heard of them
LOL. Thanks for asking ... it's a MFT specific thing - I believe it stands for "corn chip".
diesel is offline   Reply With Quote
Old Today, 12:07 AM   #21129
diesel
Human being with feelings
 
Join Date: Sep 2022
Location: Australia
Posts: 28
Default

Quote:
Originally Posted by Funkybot View Post
That particular aspect is what I was looking to solve for. The MFTwister has 4 banks of 16 encoders, and I further subdivide them to get 8 banks of 8 (RotaryA1-A8, B1-B8...H1-H8). Wouldn't want to have Rotary1-64.
Yes please. I've also encountered this contiguous naming limitation. I originally had my encoders as 0 to f using hex values. One idea I had was to define a loop syntax where you could set the | values to use. Maybe something like:

Code:
	Loop | = 0 1 2 3 4 5 6 7 8 9 a b c d e f
		SomeWidgetA|	b1 0| 7f b1 0| 00
	EndLoop
It's a parser expansion thing only. Straight text substitution of | for each value in the loop. Maybe? Would be handy in zon files to.
diesel is offline   Reply With Quote
Old Today, 12:22 AM   #21130
diesel
Human being with feelings
 
Join Date: Sep 2022
Location: Australia
Posts: 28
Default

Regarding the conversation around separation of FB, MG and TG widgets ... I actually use both ideas. I needed to separate the LED ring (FB) from the encoder (MG) for meters and faders. But for 'pan' I actually wanted them bound together. Here's an extract from my MFTwister *.mst file for a single control. I have to do this 16 times.

Code:
Widget Fader1 RotaryWidgetClass
	Encoder        b0 00 7f
WidgetEnd

Widget Meter1
	FB_Fader7Bit   b0 00 7f
WidgetEnd

Widget Pan1 RotaryWidgetClass
	Encoder        b4 00 7f
	FB_Fader7Bit   b4 00 7f
WidgetEnd

Widget Push1
    Press      b1 00 7f
WidgetEnd

Widget Release1
    Press      b1 00 00
WidgetEnd

Widget RGB1
	FB_MFT_RGB b1 00 7f
WidgetEnd

Widget Dim1
    FB_TwoState b2 00 2f b2 00 18
    FB_TwoState b5 00 5f b5 00 48
WidgetEnd

Widget Bypass1
    FB_TwoState b2 00 18 b2 00 2f
    FB_TwoState b5 00 48 b5 00 5f
WidgetEnd
Just my 2 cents...
diesel is offline   Reply With Quote
Old Today, 04:42 AM   #21131
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 3,621
Default

Quote:
Originally Posted by Geoff Waddington View Post

I think we just need to add modes of this form and we're done:

Code:
    Some Widget SomeAction Feedback=No Align=Center
This looks good Having all the definitions related to one Widget on a single line in the Zone file is about as clear as it can be made. Fingers crossed that line doesn't get too long

I guess my take on it is to make the .mst as complicated as need be in order to preserve simplicity in the Zone files.
MixMonkey is offline   Reply With Quote
Old Today, 05:19 AM   #21132
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 9,130
Default

Quote:
Originally Posted by MixMonkey View Post
This looks good Having all the definitions related to one Widget on a single line in the Zone file is about as clear as it can be made. Fingers crossed that line doesn't get too long
Agree, moving the acceleration stuff to the .mst helps a lot, as does moving the step size lists to their own files.

Hopefully the need for overriding those on the Zone definition line will be rare.

Quote:
Originally Posted by MixMonkey View Post
I guess my take on it is to make the .mst as complicated as need be in order to preserve simplicity in the Zone files.
Yes, I think we can leave the .mst alone.
__________________
To install you need the 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 Today, 08:02 AM   #21133
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 9,130
Default

OK, preliminary coding looks like the new way of doing Widget Modes will work well.

The Properties construct will go away.

WidgetMode and SetWidgetMode will go away.

Anyone have issues that must be resolved ?

Ah, with regard to the above that is
__________________
To install you need the 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 Today, 08:38 AM   #21134
Funkybot
Human being with feelings
 
Join Date: Jul 2007
Posts: 4,517
Default

Sounds good here. Should I pass on the last Exp build and just wait for the new changes? Sounds like the wiki will need some major updates once the new method is ready.

Also will Navelpluisje need to update the code for the FaderPort display modes or will the changes rollback and apply to that? As far as I know, WidgetMode is only used for the MCU (setting the pan indicator type) and Faderport displays right now.
Funkybot is online now   Reply With Quote
Old Today, 08:43 AM   #21135
Funkybot
Human being with feelings
 
Join Date: Jul 2007
Posts: 4,517
Default

Quote:
Originally Posted by diesel View Post
Regarding the conversation around separation of FB, MG and TG widgets ... I actually use both ideas. I needed to separate the LED ring (FB) from the encoder (MG) for meters and faders. But for 'pan' I actually wanted them bound together. Here's an extract from my MFTwister *.mst file for a single control. I have to do this 16 times.

Code:
Widget Fader1 RotaryWidgetClass
	Encoder        b0 00 7f
WidgetEnd

Widget Meter1
	FB_Fader7Bit   b0 00 7f
WidgetEnd

Widget Pan1 RotaryWidgetClass
	Encoder        b4 00 7f
	FB_Fader7Bit   b4 00 7f
WidgetEnd

Widget Push1
    Press      b1 00 7f
WidgetEnd

Widget Release1
    Press      b1 00 00
WidgetEnd

Widget RGB1
	FB_MFT_RGB b1 00 7f
WidgetEnd

Widget Dim1
    FB_TwoState b2 00 2f b2 00 18
    FB_TwoState b5 00 5f b5 00 48
WidgetEnd

Widget Bypass1
    FB_TwoState b2 00 18 b2 00 2f
    FB_TwoState b5 00 48 b5 00 5f
WidgetEnd
Just my 2 cents...
That's an interesting approach you took there. Just shows the flexibility of CSI! So I'm assuming wherever you're using Pan1, you've got to NoAction Fader1 and Meter1 and vice versa...interesting!

Hopefully once this new "WidgetMode" replacement happens with Property, you could figure out how to leverage that to simplify and get rid of some of the other extraneous widgets as discussed a page or two back. A new MFT feedback processor combined with the WidgetMode replacement could handle the colors, dimming, ring type, etc.
Funkybot is online now   Reply With Quote
Old Today, 08:51 AM   #21136
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 9,130
Default

Quote:
Originally Posted by Funkybot View Post
Sounds good here. Should I pass on the last Exp build and just wait for the new changes? Sounds like the wiki will need some major updates once the new method is ready.

Also will Navelpluisje need to update the code for the FaderPort display modes or will the changes rollback and apply to that? As far as I know, WidgetMode is only used for the MCU (setting the pan indicator type) and Faderport displays right now.
Yeah, should be done in a day or two.
__________________
To install you need the 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 Today, 09:08 AM   #21137
Funkybot
Human being with feelings
 
Join Date: Jul 2007
Posts: 4,517
Default

Geoff, please refresh my memory: is ScrollLink completely removed? Is it still a paging action or did that go away? The wiki still references ToggleScrollLink, which I'm almost certain is gone. If it's entirely gone as a feature, I'll remove references to it today. If it's there and just not properly documented, I'll try to add it in, just need a refresher on how it works.
Funkybot is online now   Reply With Quote
Old Today, 10:52 AM   #21138
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 3,621
Default

Quote:
Originally Posted by Funkybot View Post
Geoff, please refresh my memory: is ScrollLink completely removed? Is it still a paging action or did that go away? The wiki still references ToggleScrollLink, which I'm almost certain is gone. If it's entirely gone as a feature, I'll remove references to it today. If it's there and just not properly documented, I'll try to add it in, just need a refresher on how it works.
ToggleScrollLink is alive and well. ForceScrollLink is gone.

When active, ToggleScrollLink makes the on-screen mixer in Reaper follow the selection on the surface and vice-versa. Note that it is the act of selecting a track that forces the scroll, just banking the surface isn't sufficient (though this can be achieved using SelectedTrackBank)

If you have several fader surfaces and would prefer the track you have selected in Reaper to appear on a fader other than the first (so that it appears more centrally in your array of faders) you can set an offest for the Action, eg:
Code:
SomeButton  ToggleScrollLink 17
This will make the selected track in Reaper appear on fader 17 on the surface instead of fader 1. Unfortunately there doesn't appear to be way of making Reaper's on-screen mixer behave in a similar manner; a track selected on the surface will always be the first track on the left hand side of the mixer (until there are insufficient tracks to its right to keep it there).
MixMonkey is offline   Reply With Quote
Old Today, 07:49 PM   #21139
diesel
Human being with feelings
 
Join Date: Sep 2022
Location: Australia
Posts: 28
Default

Quote:
Originally Posted by Funkybot View Post
That's an interesting approach you took there. Just shows the flexibility of CSI! So I'm assuming wherever you're using Pan1, you've got to NoAction Fader1 and Meter1 and vice versa...interesting!
Yeah. CSI is sooo flexible! You can use it at a high level or get detailed and finicky.

The same physical (midi) control can be mapped to several different widgets. In this case though the pan control is using b4 as byte 1 and the fader is using b0. So pan is when the encoder is pushed down so I can have both at the same time. But you are right. They could both be on b0 and you could use one or the other.

Dim & Bypass control LED brightness and share the same everything, just opposite switch states (I'm sure there's a better way to do that - someone please educate me...).

Just make sure you clean up on every unused midi route using NoAction as you suggest.

Last edited by diesel; Today at 07:50 PM. Reason: Wrong byte 1!
diesel 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:11 PM.


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