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

Reply
 
Thread Tools Display Modes
Old 05-04-2021, 06:26 PM   #12721
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 1,942
Default

Quote:
Originally Posted by Geoff Waddington View Post
It gets as verbose as necessary in the vertical direction:

Code:
SCZone "VST: Blah, etc. SomeFX" "Reverb"
    SomeEncoder    Param "3"
                   RingColor 0 127 127
                   BottomColor 32 120 57
                   AnotherParam 34
                   YetAnotherParam 23
                   StillAnotherParam 87 76 87
    AnotherEncoder Param "6"
SCZoneEnd
We are running out of delimiters after the Param -- we've used up {} () [], etc., and are running out of room, need to change strategy.

This is pretty extensible without getting verbose, except when it is necessary to get verbose
This makes sense to me. Am I right in thinking that the:
Code:
Param "3"
Param "6"
...are the actual FX parameters being controlled? If that's the case, maybe call them "FXParam" as you currently do, so they stand out from all the other "Param" statements.
MixMonkey is offline   Reply With Quote
Old 05-04-2021, 07:05 PM   #12722
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,977
Default

Quote:
Originally Posted by MixMonkey View Post
This makes sense to me. Am I right in thinking that the:
Code:
Param "3"
Param "6"
...are the actual FX parameters being controlled? If that's the case, maybe call them "FXParam" as you currently do, so they stand out from all the other "Param" statements.
Yes, been a long day, FXParam is correct
Geoff Waddington is offline   Reply With Quote
Old 05-05-2021, 11:40 AM   #12723
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,977
Default

Ok, after looking at how disruptive the previous approach would be code-wise, let's change gears

How about the much simpler, admittedly more verbose, but also more explicit style where, if there is a property modifier, what was interpreted as an action will now be interpreted as a property -- very straightforward:

Code:
Zone "VST: Blah, etc. SomeFX" "Reverb"

    SomeEncoder          FXParam "3"
    Property+SomeEncoder RingColor 0 127 127
    Property+SomeEncoder BottomColor 32 120 57
    Property+SomeEncoder AnotherParam 34
    Property+SomeEncoder YetAnotherParam 23
    Property+SomeEncoder StillAnotherParam 87 76 87

    AnotherEncoder       FXParam "6"
ZoneEnd
No need for a special SCZone and any Zone can now include properties.

What do you think ?
Geoff Waddington is offline   Reply With Quote
Old 05-05-2021, 11:48 AM   #12724
cjewellstudios
Human being with feelings
 
Join Date: Sep 2017
Posts: 664
Default

Quote:
Originally Posted by Geoff Waddington View Post
Ok, after looking at how disruptive the previous approach would be code-wise, let's change gears

How about the much simpler, admittedly more verbose, but also more explicit style where, if there is a property modifier, what was interpreted as an action will now be interpreted as a property -- very straightforward:

Code:
Zone "VST: Blah, etc. SomeFX" "Reverb"

    SomeEncoder          FXParam "3"
    Property+SomeEncoder RingColor 0 127 127
    Property+SomeEncoder BottomColor 32 120 57
    Property+SomeEncoder AnotherParam 34
    Property+SomeEncoder YetAnotherParam 23
    Property+SomeEncoder StillAnotherParam 87 76 87

    AnotherEncoder       FXParam "6"
ZoneEnd
No need for a special SCZone and any Zone can now include properties.

What do you think ?
That sounds like a better approach to me.

I was with you until this line though

Code:
Property+SomeEncoder AnotherParam 34
That seems like, well, to be honest, I have no idea not even going to guess.
cjewellstudios is offline   Reply With Quote
Old 05-05-2021, 12:53 PM   #12725
Funkybot
Human being with feelings
 
Join Date: Jul 2007
Posts: 2,239
Default

Quote:
Originally Posted by cjewellstudios View Post
That sounds like a better approach to me.

I was with you until this line though

Code:
Property+SomeEncoder AnotherParam 34
That seems like, well, to be honest, I have no idea not even going to guess.
I was imagining "AnotherParam" wasn't an FX param but rather another type of surface parameter. So in my head, something like this...

Code:
Zone "VST: Blah, etc. SomeFX" "Reverb"
    SomeEncoder          FXParam "3"
    Property+SomeEncoder RingColor 0 127 127
    Property+SomeEncoder BottomColor 32 120 57
    Property+SomeEncoder DisplayType 2
    Property+SomeEncoder DisplayColor 0 127 127
ZoneEnd
If so, I like it.
Funkybot is offline   Reply With Quote
Old 05-05-2021, 01:01 PM   #12726
siniarch
Human being with feelings
 
Join Date: Jun 2018
Posts: 577
Default

Quote:
Originally Posted by Geoff Waddington View Post
Posting this in the CSI discussion thread because we want a generalized solution, if possible.

The new SCE24 has a ton of controllable parameters.

Because of this there will be a special Zone type -- SCZone.

It would be nice to design this new Zone type in as general a way as possible to allow for future expansion, as well as porting to other "esoteric" controllers.

Suggest using the simple key value pairs approach were the key is the parameter name and the value is simply the collection of values needed for the parameter.

For instance you might want to use a Zone file entry to set the LED ring and Bottom light colours for a particular widget.



Suggest a syntax like:

Code:
SCZone "VST: Blah, etc. SomeFX" "Reverb"
    SomeEncoder    Param "3"
                   RingColor 0 127 127
                   BottomColor 32 120 57
    AnotherEncoder Param "6"
SCZoneEnd
Comments, suggestions, always welcomed.
Hi Geoff,
Thanks so much for helping with this. I think I had figured before how to handle my controller with only special widgets, and that I believe can work also. But having a special Zone might make it more clear for people.

Here is what I have in mind for the 24 encoders, I can add sections for the 8 LED buttons and the 8 OLED buttons next. But just wanted to get this out before you guys got into further discussion.

Code:
SCZone "Full Name of Zone" "Abbreviated ZoneName"
 Cell#     /These could be from A1-A8, B1-B8, C1-C8, D1-D8
   Encoder        FXParam "3"                  / but FXParam could be anything that can be controlled with an encoder like: TrackVolume
   EncoderPush    TrackVolume [ 0.7155 ]       /Again TrackVolume can be replaced by anything that can be used with a push button
   EncoderRelease NoAction                     /I'd like to have access to the push release (this one might be overkill though)
   Touch          SomeAction
   TouchRelease   SomeAction
   Ring           FXParam "3"  { r1 g1 b1 r2 g2 b2 clr3 r3 g3 b3 clr4 r4 g4 b4 }   /This will allow us to control how the ring LEDs will display the value and if you want to show a different parameter value than the encoder parameter. clr3 & clr4 indicate what LED# the 3rd color and the 4th color will start.
   DisplayType    #  { r1 g1 b1 r2 g2 b2 }    /This will determine which screen to show. 1-8 and we can also give a default color which can be overwritten on an individual item basis
          ----------------------------for display type 1---------------------------------
         Bar          FXParam "20" [1-6]          /Bar can be from 1-6. 1-Increase, 2-Decrease, 3-Pan, 4-Width, 5-Boost/Cut, 6-On/Off
         UprTxt       FXParamName "20"
         MdlTxt       FXParamName "3"
         LwrTxt       FXParamValue "3"

          ----------------------------for display type 2---------------------------------
         UprTxt1      SomeParameter
         UprTxt2      SomeParameter
         MdlTxt       SomeParameter "CustomText"
         UprBar       SomeParameter "#" [6]         /Bar in this screen should be On/Off only
         UprBarTxt    SomeParameterName
         MdlBar       SomeParameter "#" [6]         /Bar in this screen should be On/Off only
         MdlBarTxt    SomeParameterName "CustomText"
         LwrBarTxt    SomeParameter "#"
         LwrBar       SomeParameterValue [1-6]
   
          ----------------------------for display type 3---------------------------------
         UprTxt1      SomeParameter "CustomText"
         UprTxt2      SomeParameter "CustomText"
         MdlRgtTxt    SomeParameterValue
         MdlLftTxt1   SomeParameter "CustomText"
         MdlLftTxt2   SomeParameter "CustomText"
         MdlLftTxt3   SomeParameter "CustomText" 
         LwrBar       SomeParameter "#" [6]        /Bar in this screen should be On/Off only
         LwrTxt       SomeParameter "CustomText"
  
          ----------------------------for display type 4---------------------------------
         UprTxt1      SomeParameter "CustomText"
         UprTxt2      SomeParameter "CustomText"
         SymLft       SomeParameterValue  "#"      /still need to figure out if this does something or it's just a visual image
         SymRgt       SomeParameterValue "#"       /still need to figure out if this does something or it's just a visual image  
         MdlTxt       SomeParameterValue "#" 
         LwrTxt       SomeParameter "CustomText"

          ----------------------------for display type 5---------------------------------
         UprTxt1      SomeParameter "CustomText"
         UprTxt2      SomeParameter "CustomText"
         RdBox2       SomeParameterValue "#"
         MdlTxt       SomeParameterValue "#" 
         LwrTxt       SomeParameter "CustomText"

          ----------------------------for display type 6---------------------------------
         UprTxt1      SomeParameter "CustomText"
         RdBox3       SomeParameterValue "#"
         MdlTxt1      SomeParameter "CustomText"
         MdlTxt2      SomeParameter "CustomText"  
         LwrTxt       SomeParameter "CustomText"

          ----------------------------for display type 7---------------------------------
         UprTxt1      SomeParameter "CustomText"
         RdBox4       SomeParameterValue "#"
         MdlTxt1      SomeParameter "CustomText"
         MdlTxt2      SomeParameter "CustomText"  
         LwrTxt1      SomeParameter "CustomText"
         LwrTxt2      SomeParameter "CustomText"  

          ----------------------------for display type 8--------------------------------- 
         UprTxt1      SomeParameter "CustomText"
         MdlTxt1      SomeParameterName "5"
         MdlTxt2      SomeParameterValue "5"  
         MdlTxt3      SomeParameterName "30"  
         MdlTxt4      SomeParameterValue "30"
         LwrTxt1      SomeParameterName "21"
         LwrTxt2      SomeParameterValue "21"  
         LwrTxt3      SomeParameterName "18"  
         LwrTxt4      SomeParameterValue "18"
SCZoneEnd

I'll add the segments for the OLED buttons and the LED buttons next.

EDIT: to clarify once you type Cell#, everything below it will be for the Encoder Specified. (maybe you can do CellA1, and after you are done with it you can do CellEnd, then CellA2 and CellEnd. Similar to Zones. But if you can just do CellA1 and CSI understands not to affect CellA2 until the text CellA2 is typed, then that would work also? (hope that made sense)
__________________
www.SiniCon.io .......... Digital Audio Controllers
www.AcousticalGarden.com ........ Los Angeles Boutique Sound Studio

Last edited by siniarch; 05-05-2021 at 01:11 PM.
siniarch is offline   Reply With Quote
Old 05-05-2021, 03:59 PM   #12727
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,977
Default

Quote:
Originally Posted by Funkybot View Post
I was imagining "AnotherParam" wasn't an FX param but rather another type of surface parameter. So in my head, something like this...

Code:
Zone "VST: Blah, etc. SomeFX" "Reverb"
    SomeEncoder          FXParam "3"
    Property+SomeEncoder RingColor 0 127 127
    Property+SomeEncoder BottomColor 32 120 57
    Property+SomeEncoder DisplayType 2
    Property+SomeEncoder DisplayColor 0 127 127
ZoneEnd
If so, I like it.
Yup, exactly !

The thing that's nice about the Properties approach is that if a given widget doesn't support a property it is ignored, no havoc ensues

In the above example CSI will attempt to set the RingColor, BottomColor, DisplayType, and DisplayColor Properties of SomeEncoder.

Any Properties that SomeEncoder supports will be set, the rest will be ignored.

Kind of like the way it's turning out so far...
Geoff Waddington is offline   Reply With Quote
Old 05-05-2021, 04:36 PM   #12728
siniarch
Human being with feelings
 
Join Date: Jun 2018
Posts: 577
Default

Quote:
Originally Posted by Geoff Waddington View Post
Yup, exactly !

The thing that's nice about the Properties approach is that if a given widget doesn't support a property it is ignored, no havoc ensues

In the above example CSI will attempt to set the RingColor, BottomColor, DisplayType, and DisplayColor Properties of SomeEncoder.

Any Properties that SomeEncoder supports will be set, the rest will be ignored.

Kind of like the way it's turning out so far...
I have to admit it took me a few minutes to decipher the "Property+". I was thinking What property? Then it clicked. Property is to let CSI know that the Encoder's property will be listed after this statement.

I'm totally ok with this method.

Question: does this mean that the DisplayType items will also be a property or handled as before?

Code:
Zone "VST: Blah, etc. SomeFX" "Reverb"
    SomeEncoder          FXParam "3"
    Property+SomeEncoder RingColor r1 g1 b1 r2 g2 b2 r3 g3 b3
    Property+SomeEncoder RingColorChange 50 75 /these two values determine when the ring changes from rgb1 to rgb2 and rgb3.
    Property+SomeEncoder BottomColor 32 120 57
    Property+SomeEncoder DisplayType 1
    Property+SomeEncoder DisplayColor 0 127 127
    Property+SomeEncoder Bar 6 /where 1-increase, 2-decrease, 3-pan, 4-width, 5-boost/cut, 6-on/off
/-----here it switches from Property+ to old method----------------
    SomeEncoder_DisTyp1_UprTxt TrackName
    SomeEncoder_DisTyp1_MdlTxt FxParam 20 "ratio"
    SomeEncoder_DisTyp1_LwrTxt FxParamValue 20 { r1 g1 b1 r2 g2 b2 } /these colors would supersede the "DisplayColor" in the Property+ section. 

ZoneEnd
Does the above make sense. The "Property+" section is to just define properties for items, but when you want to link those items to Values such as TrackName or FXParamName, or those sort of things, we revert back to standard CSI Zone syntax?

or would those be also Porperty+ types. As in:

Code:
 Property+SomeEncoder Bar 6
 Property+SomeEncoder UprTxt TrackName
 Property+SomeEncoder MdlTxt FxParam 20 "ratio"
 Property+SomeEncoder LwrTxt FxParamValue 20 { r1 g1 b1 r2 g2 b2 }
__________________
www.SiniCon.io .......... Digital Audio Controllers
www.AcousticalGarden.com ........ Los Angeles Boutique Sound Studio
siniarch is offline   Reply With Quote
Old 05-05-2021, 04:47 PM   #12729
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,977
Default

Quote:
Originally Posted by siniarch View Post
I have to admit it took me a few minutes to decipher the "Property+". I was thinking What property? Then it clicked. Property is to let CSI know that the Encoder's property will be listed after this statement.

I'm totally ok with this method.

Question: does this mean that the DisplayType items will also be a property or handled as before?

Code:
Zone "VST: Blah, etc. SomeFX" "Reverb"
    SomeEncoder          FXParam "3"
    Property+SomeEncoder RingColor r1 g1 b1 r2 g2 b2 r3 g3 b3
    Property+SomeEncoder RingColorChange 50 75 /these two values determine when the ring changes from rgb1 to rgb2 and rgb3.
    Property+SomeEncoder BottomColor 32 120 57
    Property+SomeEncoder DisplayType 1
    Property+SomeEncoder DisplayColor 0 127 127
    Property+SomeEncoder Bar 6 /where 1-increase, 2-decrease, 3-pan, 4-width, 5-boost/cut, 6-on/off
/-----here it switches from Property+ to old method----------------
    SomeEncoder_DisTyp1_UprTxt TrackName
    SomeEncoder_DisTyp1_MdlTxt FxParam 20 "ratio"
    SomeEncoder_DisTyp1_LwrTxt FxParamValue 20 { r1 g1 b1 r2 g2 b2 } /these colors would supersede the "DisplayColor" in the Property+ section. 

ZoneEnd
Does the above make sense. The "Property+" section is to just define properties for items, but when you want to link those items to Values such as TrackName or FXParamName, or those sort of things, we revert back to standard CSI Zone syntax?
In order for existing things not to break there can be a mix of old and new, but your example does bring up a good point -- MAKE SURE the "old style" actions are listed first and any properties for given widget need to be listed on the lines immediately below the widget/action definition as you have with SomeEncoder in your example -- we're using a really cheap way to tie things together for now, as you can tell

[edit] Actually, just noticed -- slight correction -- /-----here it switches from Property+ to old method---------------- sort of -- it also was using the old method for SomeEncoder FXParam "3", then switched to the new Properties syntax to set the properties for SomeEncoder

Last edited by Geoff Waddington; 05-05-2021 at 04:53 PM.
Geoff Waddington is offline   Reply With Quote
Old 05-05-2021, 07:21 PM   #12730
phiz118
Human being with feelings
 
Join Date: May 2021
Posts: 1
Default Faderport 8

I just recently got the faderport 8 to use with reaper and immediately downloaded CSI to see if I could tweak it to do exactly what I want. I started with airon's MST and ZON files and added a few features to them like adding/deleting markers, switching between channel and bank level track scrolling, etc. Unfortunately, I can't seem to figure out how to use the bigger rotary (setup as encoder) to control trackbank. I can get it to go 1 direction, but not the other. What's the syntax for utilizing an encoder on trackbank?

Also, is it possible to utilize it for scroll / zoom on reaper?
phiz118 is offline   Reply With Quote
Old 05-06-2021, 06:03 AM   #12731
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,977
Default

Just an FYI, this was just posted on the @siniarch controller thread:

New build is up.

CSI v1_0.zip

This is for @siniarch for testing with the new controller.

You can now set the text and background colours 2 different ways with the FB_SCE24_Text.

Code:
Widget SomeWidget
    FB_SCE24_Text 01 02 03 05
WidgetEnd
Using the conventional way:

Code:
Zone "SomeZone"
    SomeWidget FXParamValueDisplay "3" { 150 25 100 34 34 34 }
Zone End
Using the Properties way:
Code:
Zone "SomeZone"
    SomeWidget FXParamValueDisplay "3" 
    Property+SomeWidget Color 150 25 100
    Property+SomeWidget BackgroundColor 34 34 34
Zone End
@siniarch, please check that you get the same results either way -- make sure to remove the {} version when testing the properties method

If this works, the old method will be removed from SCE24_Text so that the Properties concept for both the SCE24 and any other surfaces that support Properties is consistent.

Last edited by Geoff Waddington; 05-06-2021 at 06:16 AM.
Geoff Waddington is offline   Reply With Quote
Old 05-06-2021, 04:20 PM   #12732
siniarch
Human being with feelings
 
Join Date: Jun 2018
Posts: 577
Default

Quote:
Originally Posted by Geoff Waddington View Post
Just an FYI, this was just posted on the @siniarch controller thread:

New build is up.

CSI v1_0.zip

This is for @siniarch for testing with the new controller.

You can now set the text and background colours 2 different ways with the FB_SCE24_Text.

Code:
Widget SomeWidget
    FB_SCE24_Text 01 02 03 05
WidgetEnd
Using the conventional way:

Code:
Zone "SomeZone"
    SomeWidget FXParamValueDisplay "3" { 150 25 100 34 34 34 }
Zone End
Using the Properties way:
Code:
Zone "SomeZone"
    SomeWidget FXParamValueDisplay "3" 
    Property+SomeWidget Color 150 25 100
    Property+SomeWidget BackgroundColor 34 34 34
Zone End
@siniarch, please check that you get the same results either way -- make sure to remove the {} version when testing the properties method

If this works, the old method will be removed from SCE24_Text so that the Properties concept for both the SCE24 and any other surfaces that support Properties is consistent.
First of all, I can't say thank you enough.

2nd, please forgive my delay as today is my wife's b-day and I am still building the prototype. Was waiting for a few screws to come in and have to solder some cables. But I will certainly test this ASAP.
__________________
www.SiniCon.io .......... Digital Audio Controllers
www.AcousticalGarden.com ........ Los Angeles Boutique Sound Studio
siniarch is offline   Reply With Quote
Old 05-06-2021, 07:38 PM   #12733
airon
Human being with feelings
 
airon's Avatar
 
Join Date: Aug 2006
Location: Berlin
Posts: 11,074
Default

Quote:
Originally Posted by phiz118 View Post
I just recently got the faderport 8 to use with reaper and immediately downloaded CSI to see if I could tweak it to do exactly what I want. I started with airon's MST and ZON files and added a few features to them like adding/deleting markers, switching between channel and bank level track scrolling, etc. Unfortunately, I can't seem to figure out how to use the bigger rotary (setup as encoder) to control trackbank. I can get it to go 1 direction, but not the other. What's the syntax for utilizing an encoder on trackbank?

Also, is it possible to utilize it for scroll / zoom on reaper?
Not sure. Have to check with current version of CSI.

The encoders are accelerated as far as I remember, so you could change the MST to have a different widget assigned for each value the encoder can send. Then in the Zone, you assign Track selection actions or whatever CSI has for track selection(don‘t remember right now) to each of those widgets.

This is what some people do with jog wheels. I haven‘t explored this myself, but I might want to do the same thing you want to. Stand by.
__________________
(Video)Using Latch Preview - Faderport16 CSI config
Airon Audio Dia/FX Edit&Mix
"My ego comes pre-shrunk" - Randy Thom
airon is offline   Reply With Quote
Old Yesterday, 08:51 AM   #12734
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 5,977
Default

FYI -- new build is up -- see the @sinirach controller thread.
Geoff Waddington is offline   Reply With Quote
Old Yesterday, 12:30 PM   #12735
siniarch
Human being with feelings
 
Join Date: Jun 2018
Posts: 577
Default

Quote:
Originally Posted by Geoff Waddington View Post
FYI -- new build is up -- see the @sinirach controller thread.
Thank you again. Will be testing this today.
__________________
www.SiniCon.io .......... Digital Audio Controllers
www.AcousticalGarden.com ........ Los Angeles Boutique Sound Studio
siniarch 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 12:39 AM.


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