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.
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
__________________
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
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:
No need for a special SCZone and any Zone can now include properties.
What do you think ?
__________________
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
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:
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.
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)
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...
__________________
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
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?
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
__________________
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; 05-05-2021 at 04:53 PM.
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?
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.
__________________
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; 05-06-2021 at 06:16 AM.
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.
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.
FYI -- new build is up -- see the @sinirach controller thread.
__________________
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
Seems like if it were per surface it would be very confusing.
What do you think ?
__________________
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
There is an example Receive Zone in the MCU.zon file.
Use MapSelectedTrackReceivesToWidgets to trigger the Zone activation.
I have no test environment right now so I have no clue what's going to happen, let me know
I started the wiki update, pretty raw right 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
New build is up.
...
I have no test environment right now so I have no clue what's going to happen, let me know
...
Hello and thank you for this fantastic job !
yesterday i tested the update quickly on osx10.1.1..without success, reaper crashes when I press a button on my controller.
There is an example Receive Zone in the MCU.zon file.
Use MapSelectedTrackReceivesToWidgets to trigger the Zone activation.
I have no test environment right now so I have no clue what's going to happen, let me know
I started the wiki update, pretty raw right now...
Hey Geoff. I like the idea of being able to hit the receive . thanks for this. So I tested it out and the only thing i see a miss is actually being able to change the receive volume. I go into the send zone..all good there. Go into the recieve zone and try to change the recieve volume and it just snaps back to where ever it originally was. and also it reaper crashes leaving the receive zone coming back to home
I set up a session with 8 tracks with eight sends each to eight other tracks.
In the Receive zone, I select a track with eight receives on it. When I move the second fader that is supposed to regulates the send to the current track from track 2, it actually regulates that send for track 1. The fader movement also feeds back to control fader 1 . The fader that's supposed to control the send from track 1 does nothing.
Exiting from the Receive zone can crash CSI and Reaper with it. There's quite a bit of crashing.
Entering the Receive zone and going back to the Home zone can crash on the first time or the fourth. It happens when I go back to the home zone from any track, not just the ones with receives on them.
Looking forward to more testing . Thanks for implementing it all the same.
Hopefully fixed the Zone change crashes, please try it out and let me know.
__________________
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
Finally I have uploaded the ZON and MST files for using the Icon Qcon Lite single fader controller with CSI.
I eventually realised that the ICON needed to be set to run in Cubase/Nuendo mode rather than Logic mode as the fader control would not go the the full extent of +12db to -inf
There's probably still some tinkering to go, and there's a few custom scripts that I got from ReaPack that would need downloading, but it works fine for me as is. https://stash.reaper.fm/v/42006/CSI%...con%20Lite.zip
Thanks again to all those involved in getting this project up and running
Hopefully fixed the Zone change crashes, please try it out and let me know.
I'm getting crashes almost every time I go back to home zone. I even commented out the receivenavigator stuff, but going from Send zone to Home zone crashes CSI too.
It all works fine if I use CSI version 2021-03-26.
Poor practice; I grabbed the updated version which is crashing on mac when switching zones, and failed to back up the working version. Does anyone have a link to the previous version?
Poor practice; I grabbed the updated version which is crashing on mac when switching zones, and failed to back up the working version. Does anyone have a link to the previous version?
I have this one from 26th March, if that's any good.
However this is an EXPERIMENTAL build, so fair warning
OSC/EuCon are not functional, this is Midi only.
The whole Zone/Widgets thing has been a thorn in the CSI project's side for a number of years -- anyone remember the stack ?
Because of the number of R&D experiments in this area, the whole thing was a disaster, code-wise.
So, it got completely rewritten (finally).
We're starting from the ground up, please verify that Zones work properly.
Expect issues, please note them as you find them.
After a bit of pain testing this, we will have a much smoother, more stable sail going forward
__________________
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
However this is an EXPERIMENTAL build, so fair warning
OSC/EuCon are not functional, this is Midi only.
Geoff, may I suggest you create a new file on the Stash for CSI beta/experimental builds and keep v1.0 up for the solid builds? I could see some new user trying to setup CSI on this very Sunday and running into an issue where nothing works and thinking they're doing something wrong. This would also solve for the whole, "hey, does anyone have the last stable build they can share - I didn't back it up before updating" problem.
Geoff, may I suggest you create a new file on the Stash for CSI beta/experimental builds and keep v1.0 up for the solid builds? I could see some new user trying to setup CSI on this very Sunday and running into an issue where nothing works and thinking they're doing something wrong. This would also solve for the whole, "hey, does anyone have the last stable build they can share - I didn't back it up before updating" problem.
Yeah, definitely good point, we've been getting away with cowboy reckless until now
Needless to say working to fix this ASAP.
__________________
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
Nothing doing here, i'm afraid. Nothing loads. Was there some significant change to Zone/Prefs that I missed?
When you say nothing loads, are you including normal channel and other "Home" functionality or is that stuff OK ?
Does Play work properly ?
Does the Play light work properly ?
__________________
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
Play works and some buttons on the MCU (cycle, click) but no lights or feedback of any kind. No buttons, faders or displays in the channel zone work.
How about the C4 ?
__________________
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
Periodically I try to get the Mix units to switch to Mackie mode -- haven't been able to make it work for over a year -- today the stars aligned -- did a full power down and up to ensure it "took"
This means I have a way to test all (well most of) the MCU style stuff -- by far the largest CSI audience.
So, just a matter of time before I sort this out, now that I can test and see results.
Sorry for the last couple of builds folks -- way below standard...
__________________
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
Sorry for the last couple of builds folks -- way below standard...
No probs It's only a matter of swapping a dylib file, but @FunkyBot is right, we should probably have a quarantine zone for experimental builds, lest they escape into the wild and cause much confusion.
No probs It's only a matter of swapping a dylib file, but @FunkyBot is right, we should probably have a quarantine zone for experimental builds, lest they escape into the wild and cause much confusion.
Yeah, definitely was my fault on this one, pushing things too hard, that jury rigged bunch of crap was limping along, until the wheels started to come off a few builds ago , it was way past time to make it right, won't be long 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
You should now have basic transport, channel functions.
Next up -- Sends, Receives, OSC, EuCon, and anything else you folks find
Fingers crossed that things are returning to normal, that was a nasty little interlude.
However, as usual, the outcome will be a more solid internal architecture, the whole Zone thing was a piece waiting to be done for a while 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