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

Reply
 
Thread Tools Display Modes
Old 09-11-2022, 12:55 PM   #19881
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Nudge might also make a great candidate for a modifier. Allows for this...

Code:
    Nudge                       Nudge

    Nudge+Up                    Reaper "41925"              // Item: Nudge items volume +1dB
    Nudge+Down                  Reaper "41924"              // Item: Nudge items volume -1dB
    Nidge+Left                  Reaper "41279"              // Item edit: Nudge left by saved nudge dialog settings 1
    Nudge+Right                 Reaper "41275"              // Item edit: Nudge right by saved nudge dialog settings 1
...because otherwise, that button is as useful as a screen door on a submarine. But that allows for it to have some meaning.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 09-11-2022, 01:06 PM   #19882
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

If Zoom and Nudge were added as modifiers and the Jogwheel widget was merged, this would be a very good starting point for the X-Touch IMO. Note the changes to the unmodified arrow buttons.

Code:
Zone "Buttons"
    
//  Encoder Assign Buttons

    Track                       GoTrack
    Pan                         GoVCA
    EQ                          GoFolder
    Send                        GoSelectedTrackSend
    Track+Send                  GoTrackSend
    Plugin                      GoSelectedTrackFXMenu
    Track+Plugin                GoTrackFXMenu
    Instrument                  GoSelectedTrackReceive
    Track+Instrument            GoTrackReceive


//  Display Section

    nameValue                   Track
    AssignmentDisplay           TrackModeDisplay 
    TimeDisplay                 MCUTimeDisplay
    smpteBeats                  CycleTimeDisplayModes

 
//  View Buttons
 
    GlobalView                  GoHome
    GlobalView                  Reaper _S&M_WNCLS4          // Closes all(!) FX chain windows
    GlobalView                  Reaper _S&M_WNCLS3          // Closes all(!) floating FX windows  
    MidiTracks                  NoAction
    Inputs                      NoAction
    AudioTracks                 NoAction
    AudioInstrument             NoAction
    Aux                         NoAction
    Busses                      NoAction
    Outputs                     NoAction
    User                        NoAction
           
// Function Buttons

    F1                          ToggleEnableFocusedFXParamMapping
    F2                          ToggleEnableFocusedFXMapping
    F3                          ToggleScrollLink
    F4                          NoAction
    F5                          NoAction
    F6                          NoAction
    F7                          NoAction
    F8                          NoAction
    
//  Modifiers

    Flip                        Flip
    Shift                       Shift
    Option                      Option
    Control                     Control
    Alt                         Alt     

// Automation Buttons

    Read                        TrackAutoMode 1
    Write                       TrackAutoMode 3
    Trim                        TrackAutoMode 0
    Touch                       TrackAutoMode 2
    Latch                       TrackAutoMode 4
    Group                       TrackAutoMode 5
    Shift+Read                  GlobalAutoMode 1
    Shift+Write                 GlobalAutoMode 3
    Shift+Trim                  GlobalAutoMode 0
    Shift+Touch                 GlobalAutoMode 2
    Shift+Latch                 GlobalAutoMode 4  
    Shift+Group                 GlobalAutoMode 5   

//  Utility Buttons

    Save                        SaveProject
    Undo                        Undo
    Hold+Undo                   Reaper 40072                // View: Show undo history window
    Shift+Undo                  Redo
    Cancel                      NoAction
    Enter                       NoAction
    
//  Transport Section

    Marker                      Reaper 40157                // Insert marker at current or edit position
    Shift+Marker                Reaper 40613                // Delete marker near cursor
    Nudge                       Nudge
    Cycle                       CycleTimeline
    Drop                        Reaper 1157                 // Toggle snapping
    Replace                     Reaper 1155                 // Cycle ripple editing mode
    Click                       Reaper 40364                // Toggle metronome
    Shift+Click                 Reaper _SWS_AWCOUNTRECTOG   // Toggle count-in before recording
    Hold+Click                  Reaper 40363                // Show metronome settings
    Rewind                      Rewind   
    FastForward                 FastForward
    Stop                        Stop
    Hold+Stop                   Reaper 40042                // Go to start of project
    Play                        Play
    Record                      Record    
    Solo                        ClearAllSolo
    Option+Solo                 Reaper 40745                // Solo in front (dim solo)  

//  Banking 

    BankLeft                    TrackBank -8
    BankRight                   TrackBank 8
    ChannelLeft                 TrackBank -1
    ChannelRight                TrackBank 1

//  Navigation and Zoom
    
    Zoom                        Zoom
    
    Up                          Reaper _XENAKIOS_TVPAGEUP   // Xenakios/SWS: Scroll track view up (page)
    Down                        Reaper _XENAKIOS_TVPAGEDOWN	// Xenakios-SWS: Scroll track view down 
    Left                        Reaper _SWS_SCROLL_L10      // SWS: Scroll left 10%
    Right                       Reaper _SWS_SCROLL_R10      // SWS: Scroll right 10%
    
    Zoom+Up                     Reaper 40111                // Zoom in vertical                                            
    Zoom+Down                   Reaper 40112                // Zoom out vertical                                                       
    Zoom+Right                  Reaper 1012                 // Zoom in horizontal                                      
    Zoom+Left                   Reaper 1011                 // Zoom out horizontal                                     

    Nudge+Up                    Reaper 41925                // Item: Nudge items volume +1dB
    Nudge+Down                  Reaper 41924                // Item: Nudge items volume -1dB
    Nidge+Left                  Reaper 41279                // Item edit: Nudge left by saved nudge dialog settings 1
    Nudge+Right                 Reaper 41275                // Item edit: Nudge right by saved nudge dialog settings 1

//  Jogwheel

    Decrease+JogWheel           Reaper 40840                // Move edit cursor back one measure (no seek)  
    Increase+JogWheel           Reaper 40839                // Move edit cursor forward one measure (no seek)                                          
    Shift+Decrease+Jogwheel     Reaper 40286                // Track: Go to previous track       
    Shift+Increase+Jogwheel     Reaper 40285                // Track: Go to next track                     
    Option+Decrease+Jogwheel    Reaper 40172                // Go to previous marker or project start
    Option+Increase+Jogwheel    Reaper 40173                // Go to next marker or project end      
    
ZoneEnd
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 09-11-2022, 01:41 PM   #19883
Navelpluisje
Human being with feelings
 
Navelpluisje's Avatar
 
Join Date: Mar 2020
Location: IJsselstein, Netherlands
Posts: 435
Default

Quote:
Originally Posted by Funkybot View Post
If Zoom and Nudge were added as modifiers and the Jogwheel widget was merged, this would be a very good starting point for the X-Touch IMO. Note the changes to the unmodified arrow buttons.

Code:
Zone "Buttons"
    
//  Encoder Assign Buttons

    Track                       GoTrack
    Pan                         GoVCA
    EQ                          GoFolder
    Send                        GoSelectedTrackSend
    Track+Send                  GoTrackSend
    Plugin                      GoSelectedTrackFXMenu
    Track+Plugin                GoTrackFXMenu
    Instrument                  GoSelectedTrackReceive
    Track+Instrument            GoTrackReceive


//  Display Section

    nameValue                   Track
    AssignmentDisplay           TrackModeDisplay 
    TimeDisplay                 MCUTimeDisplay
    smpteBeats                  CycleTimeDisplayModes

 
//  View Buttons
 
    GlobalView                  GoHome
    GlobalView                  Reaper _S&M_WNCLS4          // Closes all(!) FX chain windows
    GlobalView                  Reaper _S&M_WNCLS3          // Closes all(!) floating FX windows  
    MidiTracks                  NoAction
    Inputs                      NoAction
    AudioTracks                 NoAction
    AudioInstrument             NoAction
    Aux                         NoAction
    Busses                      NoAction
    Outputs                     NoAction
    User                        NoAction
           
// Function Buttons

    F1                          ToggleEnableFocusedFXParamMapping
    F2                          ToggleEnableFocusedFXMapping
    F3                          ToggleScrollLink
    F4                          NoAction
    F5                          NoAction
    F6                          NoAction
    F7                          NoAction
    F8                          NoAction
    
//  Modifiers

    Flip                        Flip
    Shift                       Shift
    Option                      Option
    Control                     Control
    Alt                         Alt     

// Automation Buttons

    Read                        TrackAutoMode 1
    Write                       TrackAutoMode 3
    Trim                        TrackAutoMode 0
    Touch                       TrackAutoMode 2
    Latch                       TrackAutoMode 4
    Group                       TrackAutoMode 5
    Shift+Read                  GlobalAutoMode 1
    Shift+Write                 GlobalAutoMode 3
    Shift+Trim                  GlobalAutoMode 0
    Shift+Touch                 GlobalAutoMode 2
    Shift+Latch                 GlobalAutoMode 4  
    Shift+Group                 GlobalAutoMode 5   

//  Utility Buttons

    Save                        SaveProject
    Undo                        Undo
    Hold+Undo                   Reaper 40072                // View: Show undo history window
    Shift+Undo                  Redo
    Cancel                      NoAction
    Enter                       NoAction
    
//  Transport Section

    Marker                      Reaper 40157                // Insert marker at current or edit position
    Shift+Marker                Reaper 40613                // Delete marker near cursor
    Nudge                       Nudge
    Cycle                       CycleTimeline
    Drop                        Reaper 1157                 // Toggle snapping
    Replace                     Reaper 1155                 // Cycle ripple editing mode
    Click                       Reaper 40364                // Toggle metronome
    Shift+Click                 Reaper _SWS_AWCOUNTRECTOG   // Toggle count-in before recording
    Hold+Click                  Reaper 40363                // Show metronome settings
    Rewind                      Rewind   
    FastForward                 FastForward
    Stop                        Stop
    Hold+Stop                   Reaper 40042                // Go to start of project
    Play                        Play
    Record                      Record    
    Solo                        ClearAllSolo
    Option+Solo                 Reaper 40745                // Solo in front (dim solo)  

//  Banking 

    BankLeft                    TrackBank -8
    BankRight                   TrackBank 8
    ChannelLeft                 TrackBank -1
    ChannelRight                TrackBank 1

//  Navigation and Zoom
    
    Zoom                        Zoom
    
    Up                          Reaper _XENAKIOS_TVPAGEUP   // Xenakios/SWS: Scroll track view up (page)
    Down                        Reaper _XENAKIOS_TVPAGEDOWN	// Xenakios-SWS: Scroll track view down 
    Left                        Reaper _SWS_SCROLL_L10      // SWS: Scroll left 10%
    Right                       Reaper _SWS_SCROLL_R10      // SWS: Scroll right 10%
    
    Zoom+Up                     Reaper 40111                // Zoom in vertical                                            
    Zoom+Down                   Reaper 40112                // Zoom out vertical                                                       
    Zoom+Right                  Reaper 1012                 // Zoom in horizontal                                      
    Zoom+Left                   Reaper 1011                 // Zoom out horizontal                                     

    Nudge+Up                    Reaper 41925                // Item: Nudge items volume +1dB
    Nudge+Down                  Reaper 41924                // Item: Nudge items volume -1dB
    Nidge+Left                  Reaper 41279                // Item edit: Nudge left by saved nudge dialog settings 1
    Nudge+Right                 Reaper 41275                // Item edit: Nudge right by saved nudge dialog settings 1

//  Jogwheel

    Decrease+JogWheel           Reaper 40840                // Move edit cursor back one measure (no seek)  
    Increase+JogWheel           Reaper 40839                // Move edit cursor forward one measure (no seek)                                          
    Shift+Decrease+Jogwheel     Reaper 40286                // Track: Go to previous track       
    Shift+Increase+Jogwheel     Reaper 40285                // Track: Go to next track                     
    Option+Decrease+Jogwheel    Reaper 40172                // Go to previous marker or project start
    Option+Increase+Jogwheel    Reaper 40173                // Go to next marker or project end      
    
ZoneEnd
I prefer the subzones over the use of an extensive list of modifiers. First question that pops up for me is: Where do we stop creating modifiers.

Everyone knows a great candidate for a modifier. On the faderPort there are at least 8 potential candidates. But when it comes to readability it does not make sense to me. Also maintenance wise I think subzones make more sense.

I do also think they are not real modifiers but technicaly subzones (is an opinion we can disagree on ). Zoom is discussable, because of the layout of the controller.

But this is probably due to the fact that I do not like files with a huge amount of code and/or configurations in them (I'm also on the 1 class per file camp (Hope Geoff will also become a member of that camp)). I like everything in it's own file. Transport in a file, automation in a file, etc. The FaderPort 8 zones are split into 22 files and makes it for me way eaasier to maintain.

Also when it comes to complexity for newbies, I think the multiple file approach makes way more sense. There is nothing more daunting then opening a file with over 100 lines of gibberish (at least for someone seeing it for the first time). In the structure Geoff created you don't have to search for the automation. It's in the automation file, same for transport etc. When opening the file you just see a couple of lines with all related naming.

But this structure has technically the same drawback as the modifiers: Where does it stop? How many zone names are we going to support? If we are getting free to use naming we probably need navigators for the zone files and then we're back at square one.

Tbh, that was one of the drawbacks for me in v2.
__________________
Created ReaSonus FaderPort: Documentation and Download from Github. Report Issues
Created Reapinger BCF2000: Documentation and Download from Reaper Stash
Donations: Buy me a coffee or beer or buy one of my shirts in Europe or North America
Navelpluisje is offline   Reply With Quote
Old 09-11-2022, 01:55 PM   #19884
Navelpluisje
Human being with feelings
 
Navelpluisje's Avatar
 
Join Date: Mar 2020
Location: IJsselstein, Netherlands
Posts: 435
Default

Oh, small side note;
Also to make it easier for the newbies, maybe an idea to add the different controllers to the wiki with a full list of the functionalities as they are in the supported files? That way they initially do not have to open the files to get started
__________________
Created ReaSonus FaderPort: Documentation and Download from Github. Report Issues
Created Reapinger BCF2000: Documentation and Download from Reaper Stash
Donations: Buy me a coffee or beer or buy one of my shirts in Europe or North America
Navelpluisje is offline   Reply With Quote
Old 09-11-2022, 02:06 PM   #19885
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
If Zoom and Nudge were added as modifiers and the Jogwheel widget was merged, this would be a very good starting point for the X-Touch IMO. Note the changes to the unmodified arrow buttons.

Code:
Zone "Buttons"
    
//  Encoder Assign Buttons

    Track                       GoTrack
    Pan                         GoVCA
    EQ                          GoFolder
    Send                        GoSelectedTrackSend
    Track+Send                  GoTrackSend
    Plugin                      GoSelectedTrackFXMenu
    Track+Plugin                GoTrackFXMenu
    Instrument                  GoSelectedTrackReceive
    Track+Instrument            GoTrackReceive


//  Display Section

    nameValue                   Track
    AssignmentDisplay           TrackModeDisplay 
    TimeDisplay                 MCUTimeDisplay
    smpteBeats                  CycleTimeDisplayModes

 
//  View Buttons
 
    GlobalView                  GoHome
    GlobalView                  Reaper _S&M_WNCLS4          // Closes all(!) FX chain windows
    GlobalView                  Reaper _S&M_WNCLS3          // Closes all(!) floating FX windows  
    MidiTracks                  NoAction
    Inputs                      NoAction
    AudioTracks                 NoAction
    AudioInstrument             NoAction
    Aux                         NoAction
    Busses                      NoAction
    Outputs                     NoAction
    User                        NoAction
           
// Function Buttons

    F1                          ToggleEnableFocusedFXParamMapping
    F2                          ToggleEnableFocusedFXMapping
    F3                          ToggleScrollLink
    F4                          NoAction
    F5                          NoAction
    F6                          NoAction
    F7                          NoAction
    F8                          NoAction
    
//  Modifiers

    Flip                        Flip
    Shift                       Shift
    Option                      Option
    Control                     Control
    Alt                         Alt     

// Automation Buttons

    Read                        TrackAutoMode 1
    Write                       TrackAutoMode 3
    Trim                        TrackAutoMode 0
    Touch                       TrackAutoMode 2
    Latch                       TrackAutoMode 4
    Group                       TrackAutoMode 5
    Shift+Read                  GlobalAutoMode 1
    Shift+Write                 GlobalAutoMode 3
    Shift+Trim                  GlobalAutoMode 0
    Shift+Touch                 GlobalAutoMode 2
    Shift+Latch                 GlobalAutoMode 4  
    Shift+Group                 GlobalAutoMode 5   

//  Utility Buttons

    Save                        SaveProject
    Undo                        Undo
    Hold+Undo                   Reaper 40072                // View: Show undo history window
    Shift+Undo                  Redo
    Cancel                      NoAction
    Enter                       NoAction
    
//  Transport Section

    Marker                      Reaper 40157                // Insert marker at current or edit position
    Shift+Marker                Reaper 40613                // Delete marker near cursor
    Nudge                       Nudge
    Cycle                       CycleTimeline
    Drop                        Reaper 1157                 // Toggle snapping
    Replace                     Reaper 1155                 // Cycle ripple editing mode
    Click                       Reaper 40364                // Toggle metronome
    Shift+Click                 Reaper _SWS_AWCOUNTRECTOG   // Toggle count-in before recording
    Hold+Click                  Reaper 40363                // Show metronome settings
    Rewind                      Rewind   
    FastForward                 FastForward
    Stop                        Stop
    Hold+Stop                   Reaper 40042                // Go to start of project
    Play                        Play
    Record                      Record    
    Solo                        ClearAllSolo
    Option+Solo                 Reaper 40745                // Solo in front (dim solo)  

//  Banking 

    BankLeft                    TrackBank -8
    BankRight                   TrackBank 8
    ChannelLeft                 TrackBank -1
    ChannelRight                TrackBank 1

//  Navigation and Zoom
    
    Zoom                        Zoom
    
    Up                          Reaper _XENAKIOS_TVPAGEUP   // Xenakios/SWS: Scroll track view up (page)
    Down                        Reaper _XENAKIOS_TVPAGEDOWN	// Xenakios-SWS: Scroll track view down 
    Left                        Reaper _SWS_SCROLL_L10      // SWS: Scroll left 10%
    Right                       Reaper _SWS_SCROLL_R10      // SWS: Scroll right 10%
    
    Zoom+Up                     Reaper 40111                // Zoom in vertical                                            
    Zoom+Down                   Reaper 40112                // Zoom out vertical                                                       
    Zoom+Right                  Reaper 1012                 // Zoom in horizontal                                      
    Zoom+Left                   Reaper 1011                 // Zoom out horizontal                                     

    Nudge+Up                    Reaper 41925                // Item: Nudge items volume +1dB
    Nudge+Down                  Reaper 41924                // Item: Nudge items volume -1dB
    Nidge+Left                  Reaper 41279                // Item edit: Nudge left by saved nudge dialog settings 1
    Nudge+Right                 Reaper 41275                // Item edit: Nudge right by saved nudge dialog settings 1

//  Jogwheel

    Decrease+JogWheel           Reaper 40840                // Move edit cursor back one measure (no seek)  
    Increase+JogWheel           Reaper 40839                // Move edit cursor forward one measure (no seek)                                          
    Shift+Decrease+Jogwheel     Reaper 40286                // Track: Go to previous track       
    Shift+Increase+Jogwheel     Reaper 40285                // Track: Go to next track                     
    Option+Decrease+Jogwheel    Reaper 40172                // Go to previous marker or project start
    Option+Increase+Jogwheel    Reaper 40173                // Go to next marker or project end      
    
ZoneEnd
First off, let me ask the indulgence of users of surfaces other than MCU and clones, but MCU is indeed the Fender bass of surfaces, Navelpluisje is covering the FP series, and all the rest are less ubiquitous, so forgive us for riffin so heavy on the MCU side of town, just for now

I agree with almost all of this, but would like to propose a couple of tweaks.

Right now, the Track and GlobalView buttons do almost the same thing.

Global View is conveniently labeled... Global View, who knew ?

If we take the position that the new modifier is named Global instead of Track, then it stands to reason that the Global View button toggles between Global (aka Track) and Selected Track mode. The display is conveniently close as well, just up and to the right on the X-Touch, and still quite close on the MCU.

So, when Global View is unlit the display reads "SL" for SelectedTrack.

When you press Global View you switch to Global mode, it lights up, and the display reads "GL".

I also discovered whilst playing around this morning that it is a really good idea to GoHome whenever you change this mode.

Now we have freed up the Track button in the Encoder assign section, that can be used for GoHome.

That fits with the radio button theme we had before with Global View and the buttons to the right, it is now just transposed up to the Encoder Assign section, which makes more sense, given the surface labels.

So, in summary, Track Goes Home and Global View goes Home and switches modes.

Now it makes sense to use the newly named modifier, Global -- was Track -- for the automation buttons:
Code:
    Read        TrackAutoMode 1
    Global+Read GlobalAutoMode 1
and the following still makes semantic sense, at least to me:

Code:
    Send        GoSelectedTrackSend
    Global+Send GoTrackSend
Now we can add the Nudge and Zoom modifiers and we can do as you say for the navigation buttons -- and I will fix the JogWheel in the .mst.

I think it might be good to even add Marker and Scrub modifiers.



There is one caveat with all of this modifier mania though.

CSI will attempt to find an Action for a Widget based on the current modifiers.

If, it cannot, it falls back to search for a non modifier Action for the Widget, all good so far.

What it does not do is look for partial modifiers.

As a concrete example, consider how I ended up using Global (then Track) for automation.

I had Global engaged, and and the automation buttons were working fine for Selected Track automation.

I latched Shift and the buttons did not affect Global automation.

That's because, at this point the modifier wasn't the necessary Shift, but rather Shift+Global.

This is a quagmire.

I would strongly suggest that we drop the ability to compound modifiers if we add all of these new ones.

Looking at a lot of files over the years, I don't see very much usage of compound modifiers at all anyway, most every usage is a single modifier, sometimes paired with a pseudo modifier like InvertFB, Property etc.

If we do that CSI can search first for a widget Action for each of the modifiers that are active, then fall back to a non modified Action.

This is pretty arcane stuff, but is actually a weakness in the CSI architecture that needs correcting, opening the door to more modifiers would help a lot.

Did I explain it clearly enough ?
__________________
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 09-11-2022, 02:07 PM   #19886
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 Navelpluisje View Post
Oh, small side note;
Also to make it easier for the newbies, maybe an idea to add the different controllers to the wiki with a full list of the functionalities as they are in the supported files? That way they initially do not have to open the files to get started
Great idea, if we can come to a consensus as to what said behaviour should be
__________________
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 09-11-2022, 02:19 PM   #19887
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 Navelpluisje View Post
I prefer the subzones over the use of an extensive list of modifiers. First question that pops up for me is: Where do we stop creating modifiers.

Everyone knows a great candidate for a modifier. On the faderPort there are at least 8 potential candidates. But when it comes to readability it does not make sense to me. Also maintenance wise I think subzones make more sense.

I do also think they are not real modifiers but technicaly subzones (is an opinion we can disagree on ). Zoom is discussable, because of the layout of the controller.
Totally understand this point of view.

Quote:
Originally Posted by Navelpluisje View Post
But this is probably due to the fact that I do not like files with a huge amount of code and/or configurations in them (I'm also on the 1 class per file camp (Hope Geoff will also become a member of that camp)). I like everything in it's own file. Transport in a file, automation in a file, etc. The FaderPort 8 zones are split into 22 files and makes it for me way eaasier to maintain.
You unknowingly made a joke

I was a demanding, dogmatic, pedantic, extremely severe, proponent of one file per class for my first 25 years of C++ OO. No one I worked with was left with any doubt where I stood on this issue . I've just changed horses in the last few years on this project

Heck, I used to berate anyone in my charge like the John Cleese regimental sergeant major character -- I was often team lead, architectural lead, etc. for ever daring to do this:

Code:
    if(theBool)
        DoSomething();
as opposed to this:

Code:
    if(true == theBool)
    {
        DoSomething();
    }
now I use the former idiom daily

Quote:
Originally Posted by Navelpluisje View Post
Also when it comes to complexity for newbies, I think the multiple file approach makes way more sense. There is nothing more daunting then opening a file with over 100 lines of gibberish (at least for someone seeing it for the first time). In the structure Geoff created you don't have to search for the automation. It's in the automation file, same for transport etc. When opening the file you just see a couple of lines with all related naming.

But this structure has technically the same drawback as the modifiers: Where does it stop? How many zone names are we going to support? If we are getting free to use naming we probably need navigators for the zone files and then we're back at square one.

Tbh, that was one of the drawbacks for me in v2.
Yup, totally get that too.
__________________
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; 09-11-2022 at 03:16 PM.
Geoff Waddington is offline   Reply With Quote
Old 09-11-2022, 02:22 PM   #19888
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Quote:
Originally Posted by Navelpluisje View Post
Everyone knows a great candidate for a modifier. On the faderPort there are at least 8 potential candidates. But when it comes to readability it does not make sense to me. Also maintenance wise I think subzones make more sense.
I think for me it comes down to: what makes sense to get each surface working as intuitively as possible? When you look at the MCU/X-Touch, the original designers REALLY appeared to want Zoom+Up to zoom-in vertically and Zoom+Right to zoom-in horizontally. That's why the Zoom button is slab-dab in the middle of the arrows. So to me: a Zoom modifier is a no-brainer for MCU surfaces. Maybe it doesn't make sense for FP8 surfaces, and that's ok.

And then Nudge, for example, I don't know what else to do with it that kind of fits the label. But I've been doing that Nudge behavior in a SubZone and I like it for adjusting item volume. Hence the suggestion.

If the FaderPort has things that make sense as modifiers versus zones, maybe it's worth bringing up. Reason: if modifiers are going to make that particular surface behave more like it's supposed to, and more intuitively, why not consider them?

It's important to remember no one is forcing modifier usage. These would just be to get the MCU/X-Touch working a little more intuitively here and there and why not consider the same for the Faderport? Just my two cents.
__________________
CSI v3 Wiki

Last edited by Funkybot; 09-11-2022 at 02:38 PM.
Funkybot is offline   Reply With Quote
Old 09-11-2022, 02:25 PM   #19889
Funkybot
Human being with feelings
 
Funkybot's Avatar
 
Join Date: Jul 2007
Location: New Joisey
Posts: 6,143
Default

Quote:
Originally Posted by Navelpluisje View Post
Oh, small side note;
Also to make it easier for the newbies, maybe an idea to add the different controllers to the wiki with a full list of the functionalities as they are in the supported files? That way they initially do not have to open the files to get started

Quote:
Originally Posted by Geoff Waddington View Post
Great idea, if we can come to a consensus as to what said behaviour should be
Yes, totally agree!

As Mixmonkey suggested, I want to get labeled images up with instructions on what each of the major surfaces does and put that on the wiki in a new "Controllers" page. I've got SnagIt, which does the call-out boxes very well so I can put the images together once settled. Navelpluisje, if you wanted to eventually include some of the ReaSonus documentation there, we could.

But yes, landing on good starting behavior will be key.
__________________
CSI v3 Wiki

Last edited by Funkybot; 09-11-2022 at 02:33 PM.
Funkybot is offline   Reply With Quote
Old 09-11-2022, 02:32 PM   #19890
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
There is one caveat with all of this modifier mania though.

CSI will attempt to find an Action for a Widget based on the current modifiers.

If, it cannot, it falls back to search for a non modifier Action for the Widget, all good so far.

What it does not do is look for partial modifiers.

As a concrete example, consider how I ended up using Global (then Track) for automation.

I had Global engaged, and and the automation buttons were working fine for Selected Track automation.

I latched Shift and the buttons did not affect Global automation.

That's because, at this point the modifier wasn't the necessary Shift, but rather Shift+Global.

This is a quagmire.

I would strongly suggest that we drop the ability to compound modifiers if we add all of these new ones.

Looking at a lot of files over the years, I don't see very much usage of compound modifiers at all anyway, most every usage is a single modifier, sometimes paired with a pseudo modifier like InvertFB, Property etc.

If we do that CSI can search first for a widget Action for each of the modifiers that are active, then fall back to a non modified Action.

This is pretty arcane stuff, but is actually a weakness in the CSI architecture that needs correcting, opening the door to more modifiers would help a lot.

Did I explain it clearly enough ?
In my day-to-day useage, I sometimes use compound modifiers, but not many, and could work around it. Example: Shift+Option+F1 does a NextPage action here. I could find another way to do that. But I'd definitely want to get others weighing in.

I made use of compound modifiers heavily in some SCE-24 FX.zon's but I could've used SubZones there and just didn't. Plus that was really more of a map lots of plugin params "because I can" thing versus a "because I should" thing.
__________________
CSI v3 Wiki
Funkybot is offline   Reply With Quote
Old 09-11-2022, 03:15 PM   #19891
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

OK, I'm not hearing any pushback on renaming the new modifier from Track to Global...

I'll sit on it for a short while, then go ahead.

I agree with Funkybot, Track was a bad name in the first place
__________________
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 09-11-2022, 05:17 PM   #19892
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

OK, Track modifier is now Global modifier and TrackModeDisplay is now GlobalModeDisplay.

Will be in next build.

Would really like to remove compound modifiers:
Code:
    Shift+Alt
    Control+Shift
    Alt+Opt+Shift
    Touch+Alt
    etc.
Note this does not include pseudo modifiers:

Code:
    Hold+Whatever
    InvertFB+Whatever
    Property+Whatever
    Decrease+Whatever
    Increase+Whatever
they are fine.

The goal is to allow only one of these preceding any given Widget:

Code:
    Touch
    Shift
    Option
    Control
    Alt
    Flip
    Toggle
    Global
Any objections?

I don't think anyone, or at least a very very few, use compound modifiers.
__________________
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 09-11-2022, 06:10 PM   #19893
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 builds are up.

CSI Support Fles.zip

Completely revamped the Zone file structure for the X-Touch, have a look, I really like how the Included Zones turned out.

You can now use more Included Zones than Buttons, MasterTrack, Tracks -- all will get SelectedTrackNavigator, see X-Touch support files for examples, it's a lot cleaner.
Sorry, but I really don't think this has made things easier for a beginner to understand

It's true that the Buttons Zone is large but the reason that it's large is because it contains ALL the surface buttons that aren't part of a channel. It's also the Zone that every beginner will try their hand at editing first, simple button (re-)assigns, probably to a Reaper Action.

The very fact that all the buttons are gathered together in one place is a HUGE simplifier. For my part, I tried to keep the order of the buttons in the MCU Buttons file consistent with how they appear on the surface itself, from top to bottom and if they fell naturally into blocks (eg all the function buttons, all the "V-POT Assign" buttons, the transport buttons) then I separated them out with blank lines.

Face it chaps, unless CSI gets a GUI, people will end up having to look at text files if they want to change how the app works. It's worth bearing in mind that these same people have to look at the Reaper Action list, work out how to assign Actions to keyboard keys, how to build custom Actions, re-arrange Menus etc etc. I don't think the CSI Buttons Zone is too complicated in comparison.

The challenge is to supply a default set of Zones for a surface that gives as simple as possible a demonstration of what CSI can do. To this end I would reiterate my previous suggestions:

i) A picture of the surface with info bubbles explaining what each of the buttons do ( ok, you could leave out Play, Stop and Record, but not apparently FFWD and REW) If the info bubbles can be hyperlinked to the Wiki, so much the better.

ii) A simple quick start guide, covering the installation of files and how to set the prefs for the first time. Hopefully we can navigate them round the gotchas.

iii) Stick as closely as possible to the surface's legending, even if it means dumbing down some of CSI's capabilities (no Marker Zone, I'm afraid). Provide a basic functionality that will allow the user to feel that they can master it without getting lost or having to read the Wiki (that can come later, when they start asking "but can it do this?")
MixMonkey is offline   Reply With Quote
Old 09-11-2022, 06:12 PM   #19894
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
I don't think anyone, or at least a very very few, use compound modifiers.
Fingers crossed on that one
MixMonkey is offline   Reply With Quote
Old 09-11-2022, 06:21 PM   #19895
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
Sorry, but I really don't think this has made things easier for a beginner to understand

It's true that the Buttons Zone is large but the reason that it's large is because it contains ALL the surface buttons that aren't part of a channel. It's also the Zone that every beginner will try their hand at editing first, simple button (re-)assigns, probably to a Reaper Action.

The very fact that all the buttons are gathered together in one place is a HUGE simplifier. For my part, I tried to keep the order of the buttons in the MCU Buttons file consistent with how they appear on the surface itself, from top to bottom and if they fell naturally into blocks (eg all the function buttons, all the "V-POT Assign" buttons, the transport buttons) then I separated them out with blank lines.

Face it chaps, unless CSI gets a GUI, people will end up having to look at text files if they want to change how the app works. It's worth bearing in mind that these same people have to look at the Reaper Action list, work out how to assign Actions to keyboard keys, how to build custom Actions, re-arrange Menus etc etc. I don't think the CSI Buttons Zone is too complicated in comparison.

The challenge is to supply a default set of Zones for a surface that gives as simple as possible a demonstration of what CSI can do. To this end I would reiterate my previous suggestions:

i) A picture of the surface with info bubbles explaining what each of the buttons do ( ok, you could leave out Play, Stop and Record, but not apparently FFWD and REW) If the info bubbles can be hyperlinked to the Wiki, so much the better.

ii) A simple quick start guide, covering the installation of files and how to set the prefs for the first time. Hopefully we can navigate them round the gotchas.

iii) Stick as closely as possible to the surface's legending, even if it means dumbing down some of CSI's capabilities (no Marker Zone, I'm afraid). Provide a basic functionality that will allow the user to feel that they can master it without getting lost or having to read the Wiki (that can come later, when they start asking "but can it do this?")
Yup, i agree 100% !

I think you are right, white space is the ticket in the buttons Zone to cut down on overwhelming folks, and then it's a nice, one stop shop.

I will convert the X-Touch files back, but with more attention to white space.

I did catch the subtle REW/FF reference
__________________
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 09-11-2022, 06:21 PM   #19896
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
Fingers crossed on that one
OK, sounds like you don't use compound modifiers, right ?
__________________
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 09-11-2022, 08:31 PM   #19897
jacksoonbrowne
Human being with feelings
 
jacksoonbrowne's Avatar
 
Join Date: Aug 2017
Location: Ottawa, Canada
Posts: 665
Default

How Yoda might speak this

Code:
if(true == theBool)
{
   DoSomething();
}
Quote:
"Do something if true theBool is"
jacksoonbrowne is offline   Reply With Quote
Old 09-11-2022, 11:55 PM   #19898
Navelpluisje
Human being with feelings
 
Navelpluisje's Avatar
 
Join Date: Mar 2020
Location: IJsselstein, Netherlands
Posts: 435
Default

Quote:
Originally Posted by Funkybot View Post
I think for me it comes down to: what makes sense to get each surface working as intuitively as possible? When you look at the MCU/X-Touch, the original designers REALLY appeared to want Zoom+Up to zoom-in vertically and Zoom+Right to zoom-in horizontally. That's why the Zoom button is slab-dab in the middle of the arrows. So to me: a Zoom modifier is a no-brainer for MCU surfaces. Maybe it doesn't make sense for FP8 surfaces, and that's ok.

And then Nudge, for example, I don't know what else to do with it that kind of fits the label. But I've been doing that Nudge behavior in a SubZone and I like it for adjusting item volume. Hence the suggestion.

If the FaderPort has things that make sense as modifiers versus zones, maybe it's worth bringing up. Reason: if modifiers are going to make that particular surface behave more like it's supposed to, and more intuitively, why not consider them?

It's important to remember no one is forcing modifier usage. These would just be to get the MCU/X-Touch working a little more intuitively here and there and why not consider the same for the Faderport? Just my two cents.
When using them as a momentary button, I can follow your way of thinking, because that's not possible with subzones. If not I do not see the advantage of using the modifiers.
__________________
Created ReaSonus FaderPort: Documentation and Download from Github. Report Issues
Created Reapinger BCF2000: Documentation and Download from Reaper Stash
Donations: Buy me a coffee or beer or buy one of my shirts in Europe or North America
Navelpluisje is offline   Reply With Quote
Old 09-11-2022, 11:56 PM   #19899
Navelpluisje
Human being with feelings
 
Navelpluisje's Avatar
 
Join Date: Mar 2020
Location: IJsselstein, Netherlands
Posts: 435
Default

Quote:
Originally Posted by Geoff Waddington View Post
OK, sounds like you don't use compound modifiers, right ?
Also not for the FaderPort
__________________
Created ReaSonus FaderPort: Documentation and Download from Github. Report Issues
Created Reapinger BCF2000: Documentation and Download from Reaper Stash
Donations: Buy me a coffee or beer or buy one of my shirts in Europe or North America
Navelpluisje is offline   Reply With Quote
Old 09-11-2022, 11:58 PM   #19900
UNdark
Human being with feelings
 
Join Date: Jan 2017
Posts: 280
Default

Quote:
Originally Posted by Geoff Waddington View Post
Send GoSelectedTrackSend
Global+Send GoTrackSend
[/code]

Now we can add the Nudge and Zoom modifiers and we can do as you say for the navigation buttons -- and I will fix the JogWheel in the .mst.

I think it might be good to even add Marker and Scrub modifiers.



There is one caveat with all of this modifier mania though.

CSI will attempt to find an Action for a Widget based on the current modifiers.

If, it cannot, it falls back to search for a non modifier Action for the Widget, all good so far.

What it does not do is look for partial modifiers.

As a concrete example, consider how I ended up using Global (then Track) for automation.

I had Global engaged, and and the automation buttons were working fine for Selected Track automation.

I latched Shift and the buttons did not affect Global automation.

That's because, at this point the modifier wasn't the necessary Shift, but rather Shift+Global.

This is a quagmire.

I would strongly suggest that we drop the ability to compound modifiers if we add all of these new ones.

Looking at a lot of files over the years, I don't see very much usage of compound modifiers at all anyway, most every usage is a single modifier, sometimes paired with a pseudo modifier like InvertFB, Property etc.

If we do that CSI can search first for a widget Action for each of the modifiers that are active, then fall back to a non modified Action.

This is pretty arcane stuff, but is actually a weakness in the CSI architecture that needs correcting, opening the door to more modifiers would help a lot.

Did I explain it clearly enough ?
Sadly for me my whole structure is based on single/multiple modifiers...the layers of EQ/SYNTH etc,plugins with large amounts of params are dealt with like this:
No mod - master page of vols/main controls
SHFT - mode/type/stereo/drive and others
CTRL - Left eq VOL params /VCO1 main controls
SHFT+CTRL - Left eq FREQ params/VCO1 more detailed
CTRL+OPT - Left eq Q params
SHFT+CTRL+OPT - Left eq Q params

because they're momentary, adjustment of freq and q are easy by adding shift or option to control - the displays show accordingly.

ALT and other modifiers - Right of eq/vco2

AlT+CTRL (with other modifiers added) VCO3 all params

It goes on. I've been using this system from day one so it's pretty etched into my workflow...

I am open to change .. though it would mean re writing all my fx zones.. all my previous vids show effects managed as above, which would be a downer, but... if there's a way of doing this with similar logic using subzones ( i started this method before we had subzones so haven't really looked at them) then i'd like to hear. I know Mixmonkey uses an mcu too.. could i parallel this workflow similarly with subzones do you think?
__________________
Mac Mini 2.3 quad 16gb ram os x - High Sierra + Catalina.... sort of.... nearly....
UNdark is offline   Reply With Quote
Old 09-12-2022, 12:01 AM   #19901
Navelpluisje
Human being with feelings
 
Navelpluisje's Avatar
 
Join Date: Mar 2020
Location: IJsselstein, Netherlands
Posts: 435
Default

Quote:
Originally Posted by Geoff Waddington View Post
Yup, i agree 100% !

I think you are right, white space is the ticket in the buttons Zone to cut down on overwhelming folks, and then it's a nice, one stop shop.

I will convert the X-Touch files back, but with more attention to white space.

I did catch the subtle REW/FF reference
:cry-out-loud:

But you will leave this change in, right? So those who like the smaller files, are able to use them.

The last thing I'm going to say about it: I think we look too much with our current level of knowledge to the filesizes. Amen
__________________
Created ReaSonus FaderPort: Documentation and Download from Github. Report Issues
Created Reapinger BCF2000: Documentation and Download from Reaper Stash
Donations: Buy me a coffee or beer or buy one of my shirts in Europe or North America
Navelpluisje is offline   Reply With Quote
Old 09-12-2022, 12:49 AM   #19902
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 jacksoonbrowne View Post
How Yoda might speak this

Code:
if(true == theBool)
{
   DoSomething();
}

"Do something if true theBool is"
Haha, you do see why this is superior for production code, right ?

The compiler will stop you from making this all too typical error:

Code:
if(true = theBool)
{
   DoSomething();
}

Compiler says "cannot not assign to true"
__________________
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 09-12-2022, 01:02 AM   #19903
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 UNdark View Post
Sadly for me my whole structure is based on single/multiple modifiers...the layers of EQ/SYNTH etc,plugins with large amounts of params are dealt with like this:
No mod - master page of vols/main controls
SHFT - mode/type/stereo/drive and others
CTRL - Left eq VOL params /VCO1 main controls
SHFT+CTRL - Left eq FREQ params/VCO1 more detailed
CTRL+OPT - Left eq Q params
SHFT+CTRL+OPT - Left eq Q params

because they're momentary, adjustment of freq and q are easy by adding shift or option to control - the displays show accordingly.

ALT and other modifiers - Right of eq/vco2

AlT+CTRL (with other modifiers added) VCO3 all params

It goes on. I've been using this system from day one so it's pretty etched into my workflow...

I am open to change .. though it would mean re writing all my fx zones.. all my previous vids show effects managed as above, which would be a downer, but... if there's a way of doing this with similar logic using subzones ( i started this method before we had subzones so haven't really looked at them) then i'd like to hear. I know Mixmonkey uses an mcu too.. could i parallel this workflow similarly with subzones do you think?
Ok, I can see why you wanted (and got) the ClearModifiers Action

The dilemma is, the architecture, as it stands, has a flaw, in that, if you have an Action that uses a modifier, and you have that modifier engaged, all is well.

If you then engage another modifier for some reason, the aforementioned Action will not execute, because CSI now expects to see two modifiers for a given Widget->Action execution and your mapping only has one.

You've probably already discovered this, which is why you asked for ClearModifiers in the first place

Luckily, we are at a nice stable place right now.

I think the best move is to promote the Exp build to 2.0 and freeze 2.0.

Matter of fact, I'll do that right now.

CSI version 2.1 will feature the removal of compound modifiers, and will be the recipient of all future development.

That way, you will have time to leisurely move your system forward, if you so choose.
__________________
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 09-12-2022, 01:09 AM   #19904
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 Navelpluisje View Post
:cry-out-loud:

But you will leave this change in, right? So those who like the smaller files, are able to use them.

The last thing I'm going to say about it: I think we look too much with our current level of knowledge to the filesizes. Amen
Yes, of course that change will remain, for those who wish to use multiple files.

Did you see my response re: one file per class ?

In short, back in the day, you would expect to get a huge argument from me for even suggesting placing more than one class in a file.

Why have I changed ?

Simply because IDEs have improved to the point where they now have drop downs to facilitate easily navigating a single file and easily get to any class and contained function.

Just curious, what IDE do you use ?
__________________
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 09-12-2022, 01:17 AM   #19905
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

CSI Exp now promoted to CSI v2_0.

Version 2.0 development is now frozen.

All future development will be part of version 2.1.
__________________
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 09-12-2022, 01:23 AM   #19906
Navelpluisje
Human being with feelings
 
Navelpluisje's Avatar
 
Join Date: Mar 2020
Location: IJsselstein, Netherlands
Posts: 435
Default

Quote:
Originally Posted by Geoff Waddington View Post
Yes, of course that change will remain, for those who wish to use multiple files.

Did you see my response re: one file per class ?

In short, back in the day, you would expect to get a huge argument from me for even suggesting placing more than one class in a file.

Why have I changed ?

Simply because IDEs have improved to the point where they now have drop downs to facilitate easily navigating a single file and easily get to any class and contained function.

Just curious, what IDE do you use ?
Yeah, read your response . I agree when it comes to improvements of the IDE's, but for getting a quicker understanding of a project, I think the 1 class per file is more beneficial. I personally find it pretty hard to dig through this project for that reason and makes it also harder for me to understand whats going on.

Having everything in 1 file, although the classes are recognizable by the comments, makes it harder to see where what ends and what starts. Also searching for classes, imho, is easier that way.

My lack of C++ experience will not help either
__________________
Created ReaSonus FaderPort: Documentation and Download from Github. Report Issues
Created Reapinger BCF2000: Documentation and Download from Reaper Stash
Donations: Buy me a coffee or beer or buy one of my shirts in Europe or North America
Navelpluisje is offline   Reply With Quote
Old 09-12-2022, 01:33 AM   #19907
jacksoonbrowne
Human being with feelings
 
jacksoonbrowne's Avatar
 
Join Date: Aug 2017
Location: Ottawa, Canada
Posts: 665
Default

Quote:
Originally Posted by Geoff Waddington View Post
Haha, you do see why this is superior for production code, right ?

The compiler will stop you from making this all too typical error:

Code:
if(true = theBool)
{
   DoSomething();
}

Compiler says "cannot not assign to true"
Yup, assignment vs comparison caught me times long, long ago.
I mandated my team to do this very thing
.
__________________
AKA: Roy Wallingford
jacksoonbrowne is offline   Reply With Quote
Old 09-12-2022, 01:33 AM   #19908
Navelpluisje
Human being with feelings
 
Navelpluisje's Avatar
 
Join Date: Mar 2020
Location: IJsselstein, Netherlands
Posts: 435
Default

Quote:
Originally Posted by Geoff Waddington View Post
Just curious, what IDE do you use ?
XCode, but if you know a better one, let me know. Don't like XCode tbh
__________________
Created ReaSonus FaderPort: Documentation and Download from Github. Report Issues
Created Reapinger BCF2000: Documentation and Download from Reaper Stash
Donations: Buy me a coffee or beer or buy one of my shirts in Europe or North America
Navelpluisje is offline   Reply With Quote
Old 09-12-2022, 01:48 AM   #19909
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 Navelpluisje View Post
Yeah, read your response . I agree when it comes to improvements of the IDE's, but for getting a quicker understanding of a project, I think the 1 class per file is more beneficial. I personally find it pretty hard to dig through this project for that reason and makes it also harder for me to understand whats going on.

Having everything in 1 file, although the classes are recognizable by the comments, makes it harder to see where what ends and what starts. Also searching for classes, imho, is easier that way.

My lack of C++ experience will not help either
Got it !

I have been doing OO for over thirty years.

I started with Smalltalk, Actor, Object1, Eiffel, and a bunch of others you've probably not heard of

In the world of Smalltalk, I got used to "following the breadcrumbs" by placing breakpoints (self halt) and just following the trail.

You probably already do that, but just in case you don't...

Another feature that you probably already use, but just in case...

Modern IDEs let you find what Smalltalk calls Senders and Implementers.

For instance, in Xcode there is a right click menu option you can use after highlighting a method name -- Find->find Selected Symbol in Workspace -- which gives you who implements and who calls said method.

As I was typing this, I noticed you posted that you use Xcode, what don't you like about it ?
__________________
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 09-12-2022, 01:53 AM   #19910
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 jacksoonbrowne View Post
Yup, assignment vs comparison caught me times long, long ago.
I mandated my team to do this very thing
.
You're more than welcome to be on any project I'm on, with that attitude and approach

I have worked on HUGE production projects, and, for those, this stuff is absolutely mandatory

BTW, haven't forgotten about reviewing your OSC code, I just have to be in the right space to do it -- aka relaxed and unhurried -- CSI life is anything but that 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
Geoff Waddington is offline   Reply With Quote
Old 09-12-2022, 02:24 AM   #19911
Navelpluisje
Human being with feelings
 
Navelpluisje's Avatar
 
Join Date: Mar 2020
Location: IJsselstein, Netherlands
Posts: 435
Default

Quote:
Originally Posted by Geoff Waddington View Post
Got it !

I have been doing OO for over thirty years.

I started with Smalltalk, Actor, Object1, Eiffel, and a bunch of others you've probably not heard of

In the world of Smalltalk, I got used to "following the breadcrumbs" by placing breakpoints (self halt) and just following the trail.

You probably already do that, but just in case you don't...

Another feature that you probably already use, but just in case...

Modern IDEs let you find what Smalltalk calls Senders and Implementers.

For instance, in Xcode there is a right click menu option you can use after highlighting a method name -- Find->find Selected Symbol in Workspace -- which gives you who implements and who calls said method.

As I was typing this, I noticed you posted that you use Xcode, what don't you like about it ?
I think is more that I do not use it on daily basis. I work in VS Code the rest of the time. This one is a bit more configurable and you can make it do what you want.

XCode is an IDE with a whole different purpose. I'm getting quicker with it finding my way around. Think have to use more of it's power
__________________
Created ReaSonus FaderPort: Documentation and Download from Github. Report Issues
Created Reapinger BCF2000: Documentation and Download from Reaper Stash
Donations: Buy me a coffee or beer or buy one of my shirts in Europe or North America
Navelpluisje is offline   Reply With Quote
Old 09-12-2022, 02:28 AM   #19912
UNdark
Human being with feelings
 
Join Date: Jan 2017
Posts: 280
Default

Quote:
Originally Posted by Geoff Waddington View Post
Ok, I can see why you wanted (and got) the ClearModifiers Action

The dilemma is, the architecture, as it stands, has a flaw, in that, if you have an Action that uses a modifier, and you have that modifier engaged, all is well.

If you then engage another modifier for some reason, the aforementioned Action will not execute, because CSI now expects to see two modifiers for a given Widget->Action execution and your mapping only has one.

You've probably already discovered this, which is why you asked for ClearModifiers in the first place

Luckily, we are at a nice stable place right now.

I think the best move is to promote the Exp build to 2.0 and freeze 2.0.

Matter of fact, I'll do that right now.

CSI version 2.1 will feature the removal of compound modifiers, and will be the recipient of all future development.

That way, you will have time to leisurely move your system forward, if you so choose.
Thanks - i do appreciate that. Ultimately, i just want to make the smoothest simplest to remember system, so i may need to change my whole way of working for the better, in relation to the newer developments. Momentary buttons are so good for editing plugin zones.. I'm hoping Mixmonkey,funkybot or anyone else might look at the way i am accessing the various parameters in that quote and see a way forward for me with the new architecture.. I realised the bigger problem for me there, is i have a system for editing envelopes based on the same principle. Again - i'm up for changing it, just not so familiar with the options, as i've worked this way from day one. Thanks for all this work - it's clearly heading to new territory no other DAW can compare with for controller capabilities.
__________________
Mac Mini 2.3 quad 16gb ram os x - High Sierra + Catalina.... sort of.... nearly....
UNdark is offline   Reply With Quote
Old 09-12-2022, 03:40 AM   #19913
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 506
Default

Quote:
Originally Posted by UNdark View Post
Thanks - i do appreciate that. Ultimately, i just want to make the smoothest simplest to remember system, so i may need to change my whole way of working for the better, in relation to the newer developments. Momentary buttons are so good for editing plugin zones.. I'm hoping Mixmonkey,funkybot or anyone else might look at the way i am accessing the various parameters in that quote and see a way forward for me with the new architecture.. I realised the bigger problem for me there, is i have a system for editing envelopes based on the same principle. Again - i'm up for changing it, just not so familiar with the options, as i've worked this way from day one. Thanks for all this work - it's clearly heading to new territory no other DAW can compare with for controller capabilities.
Yeah I thought of you right away with the recent talk of only one modifier. I almost mentioned your name before you had a chance to reply lol.

I bet you won’t have to change too much, though. We still have 4 modifiers and subzones will cover the rest (I’m mainly talking about FX, but iirc, subzones are allowed anywhere?). It is a bit of a bummer since you’ve made all those videos and have a pretty in depth system that utilizes multiple modifiers. But like I said, 4 single modifiers you can still do a lot with.

I’m going to have to brush up on subzones though.

Edit: Maybe since we are restricting modifiers to one at a time, we could add one or two more? Idk what you would call them and this would require more buttons on a surface but… maybe it would help UNdark?
Puck is offline   Reply With Quote
Old 09-12-2022, 04:11 AM   #19914
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 Puck View Post
Yeah I thought of you right away with the recent talk of only one modifier. I almost mentioned your name before you had a chance to reply lol.

I bet you won’t have to change too much, though. We still have 4 modifiers and subzones will cover the rest (I’m mainly talking about FX, but iirc, subzones are allowed anywhere?). It is a bit of a bummer since you’ve made all those videos and have a pretty in depth system that utilizes multiple modifiers. But like I said, 4 single modifiers you can still do a lot with.

I’m going to have to brush up on subzones though.

Edit: Maybe since we are restricting modifiers to one at a time, we could add one or two more? Idk what you would call them and this would require more buttons on a surface but… maybe it would help UNdark?
Absolutely !

That's one of the reasons we're removing compound modifiers.

The MCU, X-Touch, and all, are screaming for a concept I'll call "local modifiers" -- aka modifiers that act on a certain physical block of the surface - for instance, the JogWheel/up/down/left/right block.

Now that these "local modifiers" won't affect the rest of the surface, we're contemplating adding Zoom, Scrub, Marker, and Nudge modifiers.

The other reason we're removing compound modifiers is to correct an architectural flaw in the CSI modifier design, as stated in previous posts.
__________________
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 09-12-2022, 04:29 AM   #19915
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 11,569
Default

Hmmm...

Wonder if maybe the new Marker, Nudge, Zoom, and Scrub modifiers should be radio buttons...
__________________
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 09-12-2022, 04:29 AM   #19916
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
OK, sounds like you don't use compound modifiers, right ?
I used to use them in FX Zones (the C4 Configurator makes this easy), but now that SubZones are working fine on Mac, I use those instead.

I was never keen on the global nature of modifiers, so adding more means their reach is more likely to be restricted to a single surface.

I worry that there are now a significant number of CSI users out there, who we don't hear from because their systems are working to their satisfaction. They read the documentation, looked at the example files and just got on with it. Customising Reaper in all its facets has set them in good stead, and CSI was a relatively minor challenge. Let's try to focus a bit on backwards compatibility for them. There's only a few times you can fundamentally change the operation of the system before they'll lose interest.
MixMonkey is offline   Reply With Quote
Old 09-12-2022, 04:36 AM   #19917
Puck
Human being with feelings
 
Puck's Avatar
 
Join Date: Feb 2022
Location: Almost Canada
Posts: 506
Default

Quote:
Originally Posted by Geoff Waddington View Post
Absolutely !

That's one of the reasons we're removing compound modifiers.

The MCU, X-Touch, and all, are screaming for a concept I'll call "local modifiers" -- aka modifiers that act on a certain physical block of the surface - for instance, the JogWheel/up/down/left/right block.

Now that these "local modifiers" won't affect the rest of the surface, we're contemplating adding Zoom, Scrub, Marker, and Nudge modifiers.

The other reason we're removing compound modifiers is to correct an architectural flaw in the CSI modifier design, as stated in previous posts.
Oh ok good! That sounds wonderful!

I didn’t catch that if that was implied previously. There are a couple things happening in CSI land that I haven’t acclimated myself to yet.

I’ve also halted any video production for now. I was moving at a snails pace anyhow but things are changing enough around here that we will need to let the dust settle a bit. Even in the 1:00 or so of video I do have there are already things that are incorrect due to the last couple weeks here.

I can go back to working on my layout and adding a Track View similar to eucon, a birds eye view of the all the tracks in a single project.
Puck is offline   Reply With Quote
Old 09-12-2022, 04:41 AM   #19918
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 5,003
Default

Quote:
Originally Posted by UNdark View Post
It goes on. I've been using this system from day one so it's pretty etched into my workflow...

I am open to change .. though it would mean re writing all my fx zones.. all my previous vids show effects managed as above, which would be a downer, but... if there's a way of doing this with similar logic using subzones ( i started this method before we had subzones so haven't really looked at them) then i'd like to hear. I know Mixmonkey uses an mcu too.. could i parallel this workflow similarly with subzones do you think?
ZIP up a couple of your FX Zones that demonstrate this and I'll see if I can come up with a survival strategy

The one thing you will currently lose is the momentary nature of modifiers. I wonder if we could have a "momentary SubZone"? That is to say, a GoSubZone that is active as long as the button is held down and then returns/leaves when the button is released.
MixMonkey is offline   Reply With Quote
Old 09-12-2022, 04:41 AM   #19919
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
I used to use them in FX Zones (the C4 Configurator makes this easy), but now that SubZones are working fine on Mac, I use those instead.

I was never keen on the global nature of modifiers, so adding more means their reach is more likely to be restricted to a single surface.

I worry that there are now a significant number of CSI users out there, who we don't hear from because their systems are working to their satisfaction. They read the documentation, looked at the example files and just got on with it. Customising Reaper in all its facets has set them in good stead, and CSI was a relatively minor challenge. Let's try to focus a bit on backwards compatibility for them. There's only a few times you can fundamentally change the operation of the system before they'll lose interest.
Yup, that's exactly why I just froze version 2.0, it will continue to work fine for those folks.

Don't forget, we didn't want to remove compound modifiers just because of our new initiative, there was a fundamental architectural design flaw.

If you have an Action that uses a modifier, and you have that modifier engaged, all is well.

If you then engage another modifier for some reason, the aforementioned Action will not execute, because CSI now expects to see two modifiers for a given Widget->Action execution, and your mapping only has one.

CSI already had a fallback position, it would also look for a completely unmodified Action to execute.

But it had no position for partial fallback.

Let's use automation as an example.

Non modified automation buttons work on the Selected Track.

Typically we used Shift to achieve global automation.

Because of the aforementioned, the following psychedelic behaviour would occur:

No modifiers -- Selected Track automation

Shift engaged -- Global automation

Shift and Alt engaged -- Selected Track automation

That's the more fundamental reason we want to remove compound modifiers.
__________________
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 09-12-2022, 04:42 AM   #19920
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
Hmmm...

Wonder if maybe the new Marker, Nudge, Zoom, and Scrub modifiers should be radio buttons...
If they can't be active at the same time, then yes, they should be radio buttons.
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 09:08 PM.


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