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

Reply
 
Thread Tools Display Modes
Old 06-16-2018, 03:02 AM   #1361
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by Geoff Waddington View Post
Cool, then I propose the following maps:

For MCU style, I suggest the following:

Pushing the Plugin button maps the single selected tracks FX to the surface:
Plugin MapFXToWidgets

Pushing the Select button unmaps any currently mapped FX:
ChannelSelect UnmapFXFromWidgets
Well, that kinda works already, if you press the select button a second time, the FX is no longer mapped, and it goes back to the rotaries on the MCU controlling pans.

The most crucial aspect which makes it confusing for MCU users is:-

1. There's no visual cue as to which mode you're in (FX/Pans) 'Anything' on the display, or a light somewhere would really help..
2. You can't seem to MapFXToWidgets from the 'plugin' button (I've not tried any others yet).
3. All FX Slots are mapped, when only the selected one should be. And as mix monkey says above, we can use S&M CommandID's to change selected slots then.

While you're looking at this, How hard would it be to put in a MapFXToWidgetsToggle option, so a latch button could be used if the user prefers that setup?
Skijumptoes is offline   Reply With Quote
Old 06-16-2018, 03:29 AM   #1362
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Ok, famous last words, but I'd say now that the architecture is sufficiently stable, we can now put the file format "down on paper".

It's actually dead simple, here goes:

90 5e 7f -- MIDI message from a surface Widget

Button -- type of surface Widget

Now we need to give it a name:

Play -- what I want to call this Widget

Line entry in the .rst file:

Play Button 90 5e 00 7f -- 00 7f the range of the Widget

The .rst file line entry just names the surface Widget.

Now let's get the Widget to actually DO something.

That's where the .axt file comes in.

It simply maps Widget names to Reaper Actions.

An .axt line entry

Play Play

This says when the Widget called Play is pressed, Reaper starts playing, doh

The cool thing is that the .axt file is for a surface Widget on a particular Page.

So you could have another Page with an associated .axt file entry:

Play Stop

On that Page, when the Widget called Play is pressed, Reaper STOPS playing.

Note that Pages have nothing to do with navigation in the track/plugin slot sense, they are a "we're not in Kansas anymore" kind of large change.

Track/plugin slot navigation occurs WITHIN each Page.

As a matter of fact different Pages can simultaneously be in very different parts of the project, track navigation wise, and plugin slot navigation wise.

.fxt files are exactly like .axt files and are for plugins on a particular page.

That's the bare basics.
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-16-2018, 03:56 AM   #1363
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by Skijumptoes View Post
Well, that kinda works already, if you press the select button a second time, the FX is no longer mapped, and it goes back to the rotaries on the MCU controlling pans.

The most crucial aspect which makes it confusing for MCU users is:-

1. There's no visual cue as to which mode you're in (FX/Pans) 'Anything' on the display, or a light somewhere would really help..
2. You can't seem to MapFXToWidgets from the 'plugin' button (I've not tried any others yet).
3. All FX Slots are mapped, when only the selected one should be. And as mix monkey says above, we can use S&M CommandID's to change selected slots then.

While you're looking at this, How hard would it be to put in a MapFXToWidgetsToggle option, so a latch button could be used if the user prefers that setup?
Visual clues -- yup, param names/value display will help here.

MapFXToWidgets is broken and will be fixed in next build.

S&M CommandID's -- right forgot about that, excellent !

OK how about this as a practical first shot at R&D for MCU style plugin control, stealing a few lick from S&M, the old C4 stuff, and the EuCon stuff...

New Action -- Toggle FX mapping -- If on, selecting a track / plugin combo causes mapping of that plugin to the surface.

I like the selected track metaphor extending to the selected plugin, but we need a bit more control.

Lucky for us the S&M code is available in the SWS open source, so we can adapt it to our needs.

We will add actions as necessary that you will use instead of S&M CommandID's.

Then, as a final lick we will make it so that pushing a knob top drills down for more params like we did on the EuCon stuff.

That's probably a pretty good start, what do you think ?
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-16-2018, 04:26 AM   #1364
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by Geoff Waddington View Post
Ok, famous last words, but I'd say now that the architecture is sufficiently stable, we can now put the file format "down on paper".
That all makes logical sense to me, would a better term for 'Pages' be 'Modes' perhaps?
i.e. A page/mode change will be used to change the underlying .axt's for each .rst. - it does no other operation than that, or is it used more advanced in a multi-surface environment?


Your second post, too, makes perfect sense, and if you could incorporate/make equivalent of those S&M actions then even better!
Skijumptoes is offline   Reply With Quote
Old 06-16-2018, 04:47 AM   #1365
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 1,364
Default

Quote:
Originally Posted by Geoff Waddington View Post
New Action -- Toggle FX mapping -- If on, selecting a track / plugin combo causes mapping of that plugin to the surface.
This sounds good- toggling a button makes a lot more sense to me, particularly if it has an indicator LED.

After the button has been pushed and the surface is focussed on plugin control, we're going to need a way to step through 'layers' of surface controls for plugins that have more parameters than will fit on the surface in one go. (normally I would use the term 'pages' instead of 'layers', but that's been taken )
MixMonkey is offline   Reply With Quote
Old 06-16-2018, 05:18 AM   #1366
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by MixMonkey View Post
This sounds good- toggling a button makes a lot more sense to me, particularly if it has an indicator LED.

After the button has been pushed and the surface is focussed on plugin control, we're going to need a way to step through 'layers' of surface controls for plugins that have more parameters than will fit on the surface in one go. (normally I would use the term 'pages' instead of 'layers', but that's been taken )
100% this - which means the current .fxt method needs some rejigging to work on a Channel - ChannelEnd like basis too whereby we can either use a matrix style assignment. At the moment MCU users can only assign to ChannelRotary 1-8 for example and there's no way of assigning beyond that first page.

i.e. in the .fxt:-

FXMatrixRotary 1 1 Pre-Amp
FXMatrixRotary 1 2 Brightness
etc...

'OR' create groups in the .fxt...

FXMatrixRotary
Pre-Amp
Brightness
FXMatrixRotaryEnd

Then CSI lays out the params based on the number of 'FXMatrixRotary' defines in the .rst. i.e 1-8 for MCU, 1-32 for C4. Technically you could copy and paste all the controls from a plugin between the FXMatrixRotary and FXMatrixRotaryEnd to get a quick mapping online.

Same could apply to a FXMatrixRotaryPress entry too, As long as NULL could be used to create blanks so you could space out controls as necessary.

I think being able to group like thatwould make sharing .fxt's across .rst's quite feasible too, i.e. C4 and MCU users could use the same .fxt, but depending on the .rst for each it would spread across the 8 rotaries, or the 64 - or however you want to define it.

Hoping i make make some sense here! :-/
Skijumptoes is offline   Reply With Quote
Old 06-16-2018, 05:29 AM   #1367
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by MixMonkey View Post
After the button has been pushed and the surface is focussed on plugin control, we're going to need a way to step through 'layers' of surface controls for plugins that have more parameters than will fit on the surface in one go. (normally I would use the term 'pages' instead of 'layers', but that's been taken )
Yeah, I'm suggesting we use the metaphor we used with EuCon.

The rotary push switches drill down for more params.

To use a channel strip example:

The first thing you see on the scribble strips when you push plugin is:
Rotary1 Fx Name -- maybe RotaryPush here for bypass -- your choice, your .fxt mapping
Rotary2 Gate -- rotary push drills down to gate params
Rotaries now control gate params
Rotary2 EQ -- rotary push drills down to EQ params
Rotaries now control EQ params
... etc.

You can drill down again to arbitrary depth from any position.

We need to assign a back button to go back up, but you get the idea.
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-16-2018, 05:31 AM   #1368
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by Skijumptoes View Post
100% this - which means the current .fxt method needs some rejigging to work on a Channel - ChannelEnd like basis too whereby we can either use a matrix style assignment. At the moment MCU users can only assign to ChannelRotary 1-8 for example and there's no way of assigning beyond that first page.

i.e. in the .fxt:-

FXMatrixRotary 1 1 Pre-Amp
FXMatrixRotary 1 2 Brightness
etc...

'OR' create groups in the .fxt...

FXMatrixRotary
Pre-Amp
Brightness
FXMatrixRotaryEnd

Then CSI lays out the params based on the number of 'FXMatrixRotary' defines in the .rst. i.e 1-8 for MCU, 1-32 for C4. Technically you could copy and paste all the controls from a plugin between the FXMatrixRotary and FXMatrixRotaryEnd to get a quick mapping online.

Same could apply to a FXMatrixRotaryPress entry too, As long as NULL could be used to create blanks so you could space out controls as necessary.

I think being able to group like thatwould make sharing .fxt's across .rst's quite feasible too, i.e. C4 and MCU users could use the same .fxt, but depending on the .rst for each it would spread across the 8 rotaries, or the 64 - or however you want to define it.

Hoping i make make some sense here! :-/
All good ideas, thanks, these will be added to the plugin mapping gumbo that's coming along quite nicely thanks to you and MixMonkey
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-16-2018, 06:09 AM   #1369
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 8,978
Default

Sounds great ...

-Michael
mschnell is offline   Reply With Quote
Old 06-16-2018, 07:03 AM   #1370
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by Geoff Waddington View Post
Yeah, I'm suggesting we use the metaphor we used with EuCon.
The rotary push switches drill down for more params.
That sounds a fantastic concept, i've not used the EuCon CSurf that you created, but it sounds really good if it was running like that.

Quote:
We need to assign a back button to go back up, but you get the idea.
Yes you would.

Could the plugin button get us back to the start again instead of having a separate back button?, or is that tricky to do if it's already set to latch the plugin mode on/off?

I was thinking plugin button could flash when you're on the root selector (i.e. it's asking for you to pick), and then go solid when you've drilled down, and then off when in standard mixer mode?

If you press it when it's flashing you'll go back to mixer mode.
Skijumptoes is offline   Reply With Quote
Old 06-16-2018, 07:11 AM   #1371
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 1,364
Default

Quote:
Originally Posted by Geoff Waddington View Post
Yeah, I'm suggesting we use the metaphor we used with EuCon.

The rotary push switches drill down for more params.

To use a channel strip example:

The first thing you see on the scribble strips when you push plugin is:
Rotary1 Fx Name -- maybe RotaryPush here for bypass -- your choice, your .fxt mapping
Rotary2 Gate -- rotary push drills down to gate params
Rotaries now control gate params
Rotary2 EQ -- rotary push drills down to EQ params
Rotaries now control EQ params
... etc.

You can drill down again to arbitrary depth from any position.

We need to assign a back button to go back up, but you get the idea.
I think the first thing you see when you push the plugin button should be the plugin assignments for slots 1-8, above rotaries 1-8 (this might be what you meant)Then when you push a rotary, say rotary3, the parameters for the plugin in slot 3 appear on the surface. Buttons assigned to up/down would then step through the layers if there are more parameters than fit on the surface.
I agree with Ski that you need a shortcut back to the first page(the slot display) so it’s quick to switch the surface between plugins
MixMonkey is offline   Reply With Quote
Old 06-16-2018, 07:52 AM   #1372
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 1,364
Default

Quote:
Originally Posted by Geoff Waddington View Post
What have you got the push switches mapped to in the .axt file ?
The only entry in C4.axt is TrackOnSelection MapFXToWidgets, everything else is in the.fxt
MixMonkey is offline   Reply With Quote
Old 06-16-2018, 09:21 AM   #1373
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by MixMonkey View Post
I think the first thing you see when you push the plugin button should be the plugin assignments for slots 1-8, above rotaries 1-8 (this might be what you meant)Then when you push a rotary, say rotary3, the parameters for the plugin in slot 3 appear on the surface.
I think what Geoff is talking about is having a grouping approach for the plugin parameters. Which probably works as a better concept for 1x8 Rotary layouts. So you could put your plugin parameters into groups to help on larger maps.

i.e.
[PLUGIN NAME] [GRP1] [GRP2] [GRP3] [GRP4] [GRP5] [GRP6] [GRP7]

So, think this, you have a track with two slots filled, Slot 1 -Waves H Compressor, then Slot 2- EQ:-

Press Plugin Button
Display comes up as follows for the first slot:-

[H-COMP] [Compressor] [Character]

So pressing the pot under [H-COMP] could either be set up to bypass that FX Slot, or to open it on screen (Whatever we want).

Whereas pressing [Compressor] will open up compressor controls, i.e.
[INPUT] [RATIO] [THRESHOLD] [KNEE] [ATTACK] [RELEASE] [OUTPUT] [MIX]

Pressing [Character] will open up character controls for the compressor, i.e.
[PUNCH] [ANALOG] etc.

We can then go back with whatever back button and return to the
[H-COMP] [Compressor] [Character]
display again.

From there, if we wanted to move up the FX chain, press the mapped button and you would get the next slot (8 band EQ) and would see:-

[EQ8] [GAIN] [FREQ] [SHAPE] [1-4] [5-8]

Again potting [EQ8] can do bypass etc. whatever you want.

[GAIN] would give you:-
[GAIN1] [GAIN2] [GAIN3] [GAIN4] [GAIN5] [GAIN6] [GAIN7] [GAIN8] etc.

You could have a combined group with the [1-4] and [5-8] options, i.e. [1-4] =
[GAIN1] [FREQ1] [GAIN2] [FREQ2] [GAIN3] [FREQ3] [GAIN4] [FREQ4]


OR your suggestion (Mix monkey), would be:-

Press PLUGIN Button, display changes to show available FX slots:-

[H-COMP] [EQ8]

And you select one with a pot press, and go straight into a simple page system for the FX selected? i.e. first 1-8 controls show on MCU, 1-32 show on a C4, and page up would take you to 9-16 on MCU and 33-64 on C4.

Personally i'd be happy with either method, i think the second may be the most sensible to cover more surfaces however. As we can still group controls if there's a NULL option to space out the encoders, say if we only wanted to have 7 params on one fx page.
Skijumptoes is offline   Reply With Quote
Old 06-16-2018, 10:58 AM   #1374
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 8,978
Default

Quote:
Originally Posted by Skijumptoes View Post
Press Plugin Button
Display comes up as follows for the first slot:-

[H-COMP] [Compressor] [Character]
I suppose "Display" means scribble strips ?!?!

As not all Surfaces do feature scribble strips, would it not be a nice idea to provide a dedicated window on the Reaper screen that shows such message (of course configurable in the configuration files) ? (Happily we already do have the track coring to display the fader bank.)

-Michael
mschnell is offline   Reply With Quote
Old 06-16-2018, 11:25 AM   #1375
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by mschnell View Post
I suppose "Display" means scribble strips ?!?!
As not all Surfaces do feature scribble strips, would it not be a nice idea to provide a dedicated window on the Reaper screen that shows such message (of course configurable in the configuration files) ? (Happily we already do have the track coring to display the fader bank.)
Yeah that's the trouble, which is why it probably needs to dive straight into FX slot one, or like you say, have some kind of screen notification. Or maybe even float that plugin window would be enough notification?

I really don't know how hard it is to put notifications up, or how it affects the performance of REAPER.

Does the plugin control interest you, and if so, how would you like to see it work on your device if screen notifications wasn't viable?
Skijumptoes is offline   Reply With Quote
Old 06-16-2018, 11:35 AM   #1376
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 8,978
Default

Quote:
Originally Posted by Skijumptoes View Post
Does the plugin control interest you, and if so, how would you like to see it work on your device if screen notifications wasn't viable?
In fact I consider myself a Beta- (or pre-Alpha- ) tester and so I am interested in everything that might be of interest for future users.

As I own a Behringer X-Touch Compact (very all-purpose design and without Scribble Strips), I of course am interested in using it for plugins. (Which I already do excessively with my keyboard Live setup, enabled by my own set of JSFXes.)

OTOH I am a total newbie regarding using any surface device with a DAW for "producing".

In fact I suppose a GUI window simulating a set of Surface scribble strips, in an always on top and sizable (stretching the characters) layout, would be a great help.

-Michael

Last edited by mschnell; 06-17-2018 at 01:05 AM.
mschnell is offline   Reply With Quote
Old 06-16-2018, 03:34 PM   #1377
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by MixMonkey View Post
The only entry in C4.axt is TrackOnSelection MapFXToWidgets, everything else is in the.fxt
Ok, you will want to change that line:

TrackOnSelection MapFXToWidgets

to:

SomeButtonInRSTFile MapFXToWidgets


AFTER I put up a build with the fix for the MapFXToWidgets Action.
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-16-2018, 03:36 PM   #1378
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by Skijumptoes View Post
I think what Geoff is talking about is having a grouping approach for the plugin parameters. Which probably works as a better concept for 1x8 Rotary layouts. So you could put your plugin parameters into groups to help on larger maps.

i.e.
[PLUGIN NAME] [GRP1] [GRP2] [GRP3] [GRP4] [GRP5] [GRP6] [GRP7]

So, think this, you have a track with two slots filled, Slot 1 -Waves H Compressor, then Slot 2- EQ:-

Press Plugin Button
Display comes up as follows for the first slot:-

[H-COMP] [Compressor] [Character]

So pressing the pot under [H-COMP] could either be set up to bypass that FX Slot, or to open it on screen (Whatever we want).

Whereas pressing [Compressor] will open up compressor controls, i.e.
[INPUT] [RATIO] [THRESHOLD] [KNEE] [ATTACK] [RELEASE] [OUTPUT] [MIX]

Pressing [Character] will open up character controls for the compressor, i.e.
[PUNCH] [ANALOG] etc.

We can then go back with whatever back button and return to the
[H-COMP] [Compressor] [Character]
display again.

From there, if we wanted to move up the FX chain, press the mapped button and you would get the next slot (8 band EQ) and would see:-

[EQ8] [GAIN] [FREQ] [SHAPE] [1-4] [5-8]

Again potting [EQ8] can do bypass etc. whatever you want.

[GAIN] would give you:-
[GAIN1] [GAIN2] [GAIN3] [GAIN4] [GAIN5] [GAIN6] [GAIN7] [GAIN8] etc.

You could have a combined group with the [1-4] and [5-8] options, i.e. [1-4] =
[GAIN1] [FREQ1] [GAIN2] [FREQ2] [GAIN3] [FREQ3] [GAIN4] [FREQ4]


OR your suggestion (Mix monkey), would be:-

Press PLUGIN Button, display changes to show available FX slots:-

[H-COMP] [EQ8]

And you select one with a pot press, and go straight into a simple page system for the FX selected? i.e. first 1-8 controls show on MCU, 1-32 show on a C4, and page up would take you to 9-16 on MCU and 33-64 on C4.

Personally i'd be happy with either method, i think the second may be the most sensible to cover more surfaces however. As we can still group controls if there's a NULL option to space out the encoders, say if we only wanted to have 7 params on one fx page.
Yes, that is much like the EuCon stuff behaves.
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-16-2018, 05:00 PM   #1379
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 1,364
Default

Quote:
Originally Posted by Geoff Waddington View Post
Ok, you will want to change that line:

TrackOnSelection MapFXToWidgets

to:

SomeButtonInRSTFile MapFXToWidgets


AFTER I put up a build with the fix for the MapFXToWidgets Action.
Is this a fix for the C4 pushes or is this the result of our discussions about plugin mapping?
MixMonkey is offline   Reply With Quote
Old 06-17-2018, 12:07 AM   #1380
airon
Human being with feelings
 
airon's Avatar
 
Join Date: Aug 2006
Location: Berlin
Posts: 10,661
Default

That kind of generic access is less direct than I require in every day work.

I’d like to know whether a per-track custom map is possible. If this could be done from within the extension, it would enable speedier setup.

To build such a map, one could us the generic plugin access interface. Enter the custom map edit mode first.

Select the parameter by turning its control since not every control resource is touch-enabled.

Select the control resource you wish to assign to it for this custom track map by using it briefly.

This way you can dedicate a portion of your gear, whatever it is as defined in the hardware setup files, and build your direct access in far less time than in vanilla Reaper, and with feedback to boot.

The user usethis custom track map by default or not, and thus dedicate those control resources to a generic use of those resources or for a custom track map at any time.

Using a generic approach to building a custom track mao seems more user firendly than creating text files by hand, wouldn’t you agree ?
__________________
Dialogue/FX Editor & Re-Recording Mixer
(Video)Using Latch Preview - Faderport16 CSI
"My ego comes pre-shrunk" - Randy Thom
airon is offline   Reply With Quote
Old 06-17-2018, 02:55 AM   #1381
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by MixMonkey View Post
Is this a fix for the C4 pushes or is this the result of our discussions about plugin mapping?
Neither, it's a fix to the MapFXToWidgets Action, which currently only works with TrackOnSelection.
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-17-2018, 03:04 AM   #1382
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by airon View Post
That kind of generic access is less direct than I require in every day work.

I’d like to know whether a per-track custom map is possible. If this could be done from within the extension, it would enable speedier setup.

To build such a map, one could us the generic plugin access interface. Enter the custom map edit mode first.

Select the parameter by turning its control since not every control resource is touch-enabled.

Select the control resource you wish to assign to it for this custom track map by using it briefly.

This way you can dedicate a portion of your gear, whatever it is as defined in the hardware setup files, and build your direct access in far less time than in vanilla Reaper, and with feedback to boot.

The user usethis custom track map by default or not, and thus dedicate those control resources to a generic use of those resources or for a custom track map at any time.

Using a generic approach to building a custom track mao seems more user firendly than creating text files by hand, wouldn’t you agree ?
Agree.

There's more than a few good interface ideas in your post.

Thanks for the opportunity to speak to this:

The current phase of the CSI project concentrates on the architecture/engine.

In the Reaper spirit, this is available ASAP after development, so folks who want to edit files can use it right away.

What you are talking about is great, way beyond resources available to me at this time, would need a GUI/interface programmer in order to proceed at a reasonable pace, simply not available at this time.

That said, getting the fundamentals correct helps/informs interface design, so I think the priority is correct.
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-17-2018, 03:54 AM   #1383
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by airon View Post
That kind of generic access is less direct than I require in every day work.

I’d like to know whether a per-track custom map is possible. If this could be done from within the extension, it would enable speedier setup.
I think the key goal at the moment is to get the CSI core engine running with the setup files that we can configure by hand. It would be too overwhelming to be making such changes and updating interfaces also, it's very early days so big credit to Geoff for having something that is actually usable from a basic mix point of view already.

Once the core is correct and we know what goes into the setup files, this project could go sky high with additional interfaces to build those mappings on the fly, i.e. in the way you suggest. Anything can write into those files when you think about it.

I think right now, it's really important to know what controllers are out there, and whether we can all give Geoff a good sense of a common way that we would like to go between track/plugin control so he can digest it and come up with something that doesn't require continual rewriting.

This modular approach of rst defining widgets, .axt defining 'what' they control and how feedback returns, and .fxt for specific plugins only works if the modules are right at the start.

But yeah, i think everyone wants what you're asking as the final goal!
Skijumptoes is offline   Reply With Quote
Old 06-17-2018, 04:47 AM   #1384
MixMonkey
Human being with feelings
 
MixMonkey's Avatar
 
Join Date: Sep 2017
Location: London, England.
Posts: 1,364
Default

Quote:
Originally Posted by Skijumptoes View Post
I think what Geoff is talking about is having a grouping approach for the plugin parameters. Which probably works as a better concept for 1x8 Rotary layouts. So you could put your plugin parameters into groups to help on larger maps.

i.e.
[PLUGIN NAME] [GRP1] [GRP2] [GRP3] [GRP4] [GRP5] [GRP6] [GRP7]

So, think this, you have a track with two slots filled, Slot 1 -Waves H Compressor, then Slot 2- EQ:-

Press Plugin Button
Display comes up as follows for the first slot:-

[H-COMP] [Compressor] [Character]

So pressing the pot under [H-COMP] could either be set up to bypass that FX Slot, or to open it on screen (Whatever we want).

Whereas pressing [Compressor] will open up compressor controls, i.e.
[INPUT] [RATIO] [THRESHOLD] [KNEE] [ATTACK] [RELEASE] [OUTPUT] [MIX]

Pressing [Character] will open up character controls for the compressor, i.e.
[PUNCH] [ANALOG] etc.

We can then go back with whatever back button and return to the
[H-COMP] [Compressor] [Character]
display again.

From there, if we wanted to move up the FX chain, press the mapped button and you would get the next slot (8 band EQ) and would see:-

[EQ8] [GAIN] [FREQ] [SHAPE] [1-4] [5-8]

Again potting [EQ8] can do bypass etc. whatever you want.

[GAIN] would give you:-
[GAIN1] [GAIN2] [GAIN3] [GAIN4] [GAIN5] [GAIN6] [GAIN7] [GAIN8] etc.

You could have a combined group with the [1-4] and [5-8] options, i.e. [1-4] =
[GAIN1] [FREQ1] [GAIN2] [FREQ2] [GAIN3] [FREQ3] [GAIN4] [FREQ4]

I can get my head around this, but it does seem to be more complicated than necessary.

Here's a bit more elaboration on my method:

i) Pushing the plugin button you see the plugins on the first 8 insert slots of the selected channel, across the displays above the 8 channels of the surface.

ii) [SHIFT] push a channel's rotary* bypasses that slot's plugin. (*or any suitable channel button apart from [SELECT])

iii) Without [SHIFT], you see the first 8 plugin parameters for that slot's plugin, as defined in the .fxt file for that plugin. We get to define the most important 8 parameters.

iii) To see more parameters we use defined up/down buttons. Again, each set of 8 parameters comes from the .fxt file that we define. You decide whether you map all the available parameters, or just a few you know you'll use and in what order.

iv) A defined 'return' button jumps you back to the slot/plugin selection at i), where you see the 8 slots for the selected channel. Pressing the plugin button exits plugin mode back to pan etc

v) On any level, including the first (slot display) it should be possible to switch the channel focus using [SELECT] and see the plugin assignments for the new channel, or a row of plugin parameters for the same slot on the new channel.

This all seems simpler to me. HOWEVER, if the code already exists for the other method (from the Eucon project) let's go with that, it's nothing I can't live with

Regarding surfaces without displays, how about the virtual display that nofish demonstrates in post#180 in this thread. Perhaps that could be modified to show plugin parameters in addition to track names etc.
MixMonkey is offline   Reply With Quote
Old 06-17-2018, 05:47 AM   #1385
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by MixMonkey View Post
I can get my head around this, but it does seem to be more complicated than necessary.

Here's a bit more elaboration on my method:

i) Pushing the plugin button you see the plugins on the first 8 insert slots of the selected channel, across the displays above the 8 channels of the surface.

ii) [SHIFT] push a channel's rotary* bypasses that slot's plugin. (*or any suitable channel button apart from [SELECT])

iii) Without [SHIFT], you see the first 8 plugin parameters for that slot's plugin, as defined in the .fxt file for that plugin. We get to define the most important 8 parameters.

iii) To see more parameters we use defined up/down buttons. Again, each set of 8 parameters comes from the .fxt file that we define. You decide whether you map all the available parameters, or just a few you know you'll use and in what order.

iv) A defined 'return' button jumps you back to the slot/plugin selection at i), where you see the 8 slots for the selected channel. Pressing the plugin button exits plugin mode back to pan etc

v) On any level, including the first (slot display) it should be possible to switch the channel focus using [SELECT] and see the plugin assignments for the new channel, or a row of plugin parameters for the same slot on the new channel.

This all seems simpler to me. HOWEVER, if the code already exists for the other method (from the Eucon project) let's go with that, it's nothing I can't live with

Regarding surfaces without displays, how about the virtual display that nofish demonstrates in post#180 in this thread. Perhaps that could be modified to show plugin parameters in addition to track names etc.
I think you just made a very good case for the CSI project !

We should allow both styles, for workflow reasons but also for ergo reasons -- the drill down style may be better for some plugins , others may map better to the up/down style.

Great stuff everyonec!!
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-17-2018, 06:11 AM   #1386
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 9,605
Default

Quote:
Originally Posted by MixMonkey View Post
Regarding surfaces without displays, how about the virtual display that nofish demonstrates in post#180 in this thread. Perhaps that could be modified to show plugin parameters in addition to track names etc.
That virtual display emulates an MCU display, so yes, if plugin parameters are shown on the MCU scribble strips, it would work with the virtual display also.
To get an idea, here's a video I once did showing controlling plugins with Klinke's MCU plugin. At ~0:15 you can see the plugin parameters appear when switching to plugin mode.

https://www.youtube.com/watch?v=HE-1DfeSZv4
nofish is offline   Reply With Quote
Old 06-17-2018, 10:55 AM   #1387
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Puzzle of the day, just in from the devil's in the details department

We touched upon this a while ago, but now we're deep in the weeds so time to ask again...

Should single .fxt's be allowed to span surfaces ?

For instance, if you have an MCU and XT it could be useful to press the FX button and have plugin params spill across both the MCU (say, the EQ)and the XT (say, the compressor), so far, so good.

But how about ONE plugin, where some parameters show up on the MCU and some parameters show up on the XT.

What would happen if you have TWO MCU's, how would that work, etc. ?

Just stirrin' the pot
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-17-2018, 11:11 AM   #1388
Freex
Human being with feelings
 
Freex's Avatar
 
Join Date: Jul 2011
Location: Northern Ireland
Posts: 587
Default

Personally I wouldn't use it, but I guess some might and anything that makes it all capable is better than restricting. Unless it's a big pain in the arse and requires a shed load of coding.
Freex is offline   Reply With Quote
Old 06-17-2018, 11:25 AM   #1389
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by Geoff Waddington View Post
We touched upon this a while ago, but now we're deep in the weeds so time to ask again...

Should single .fxt's be allowed to span surfaces ?
Personally i think it would give users extra flexibility, because it's just a case of matches the defines from the .rst in that .fxt as to whether you want it to function like that or not.

i.e. for the MCU.rst you 'may' have:-

FXGROUP 8
mcuFXMatrixRotary x x x xxxx
mcuFXMatrixRotaryPress x x x xxxx
mcuFXMatrixDisplay x x x xxx
FXGROUPEND

for the XT.rst you 'may' have:-

FXGROUP 8
mxtFXMatrixRotary x x x xxx
mxtFXMatrixRotaryPress x x x xxx
mxtFXMatrixDisplay x x x xxxx
FXGROUPEND


Then in an SSL/Channel Strip style .fxt you could go with:-

For EQ:
mcuFXMatrixRotary 1 1 EQparam1
mcuFXMatrixRotary 1 2 EQparam2
mcuFXMatrixRotary 1 3 EQparam3
mcuFXMatrixRotary 1 4 EQparam4
mcuFXMatrixRotary 1 5 EQparam5
mcuFXMatrixRotary 1 6 EQparam6
mcuFXMatrixRotary 1 7 EQparam7
mcuFXMatrixRotary 1 8 EQparam8

For Comp:
mxtFXMatrixRotary 1 1 COMPParam1
mxtFXMatrixRotary 1 2 COMPParam2
mxtFXMatrixRotary 1 3 COMPParam3
mxtFXMatrixRotary 1 4 COMPParam4
mxtFXMatrixRotary 1 5 COMPParam5
mxtFXMatrixRotary 1 6 COMPParam6
mxtFXMatrixRotary 1 7 COMPParam7
mxtFXMatrixRotary 1 8 COMPParam8

That keeps things extremely flexible and doable for users as you're simply utilising the defines you've setup previously.


One other question, what are the possibilities of being able to use the faders as part of the plugin mode? That would be really handy for plugs that have level controls such as limiters/compressors/EQ's etc.

Or do people prefer to keep the faders as mixer channels even when in plugin mode - or could that also be a settable option based around the MapFXToWidgets action so users can chose their own preferences? I suppose if you put faders into an FX Group (If that's the concept you go for), CSI will make use of them regardless?
Skijumptoes is offline   Reply With Quote
Old 06-17-2018, 11:35 AM   #1390
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by Skijumptoes View Post
i.e. for the MCU.rst you 'may' have:-

FXGROUP 8
mcuFXMatrixRotary x x x xxxx
mcuFXMatrixRotaryPress x x x xxxx
mcuFXMatrixDisplay x x x xxx
FXGROUPEND

for the XT.rst you 'may' have:-

FXGROUP 8
mxtFXMatrixRotary x x x xxx
mxtFXMatrixRotaryPress x x x xxx
mxtFXMatrixDisplay x x x xxxx
FXGROUPEND
What are FXGROUPs ?

Are you suggesting we add new grammar to the .rst ?


Quote:
Originally Posted by Skijumptoes View Post
Then in an SSL/Channel Strip style .fxt you could go with:-

For EQ:
mcuFXMatrixRotary 1 1 EQparam1
mcuFXMatrixRotary 1 2 EQparam2
mcuFXMatrixRotary 1 3 EQparam3
mcuFXMatrixRotary 1 4 EQparam4
mcuFXMatrixRotary 1 5 EQparam5
mcuFXMatrixRotary 1 6 EQparam6
mcuFXMatrixRotary 1 7 EQparam7
mcuFXMatrixRotary 1 8 EQparam8

For Comp:
mxtFXMatrixRotary 1 1 COMPParam1
mxtFXMatrixRotary 1 2 COMPParam2
mxtFXMatrixRotary 1 3 COMPParam3
mxtFXMatrixRotary 1 4 COMPParam4
mxtFXMatrixRotary 1 5 COMPParam5
mxtFXMatrixRotary 1 6 COMPParam6
mxtFXMatrixRotary 1 7 COMPParam7
mxtFXMatrixRotary 1 8 COMPParam8

That keeps things extremely flexible and doable for users as you're simply utilising the defines you've setup previously.
Yes, the example is fine, but the .fxts don't span surfaces, all the EQ controls are on the MCU and all the compressor controls are on the XT, that's already allowed.

I'm talking about some of the EQ params on the XT and some on the MCU, not sure if it's that useful in reality, that's why I'm checking.

Are you suggesting a new grammar here as well ?

Quote:
Originally Posted by Skijumptoes View Post
One other question, what are the possibilities of being able to use the faders as part of the plugin mode? That would be really handy for plugs that have level controls such as limiters/compressors/EQ's etc.
Sure, you can use any control in place of any other, has been this way since day one.
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki

Last edited by Geoff Waddington; 06-17-2018 at 11:41 AM.
Geoff Waddington is offline   Reply With Quote
Old 06-17-2018, 12:30 PM   #1391
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by Geoff Waddington View Post
What are FXGROUPs ?

Are you suggesting we add new grammar to the .rst ?
I was kinda running through it in my head as i was typing.

I was thinking how to set up an array of rotaries using a similar concept to Channel and ChannelEnd in occasions that the FX (Rotary) controls array quantity may differ to those for the channel defines. It probably doesn't need a different name like FXGroup though.

If the Channel and ChannelEnd functions are simply building the array and stepping each value up by one, then we could use Channel and ChannelEnd - but just add a number to the end of them to signal the array count?

i.e. devices don't always follow the same fader same encoders design:-
Livid Ohm64 - 8 faders 4x4 encoders
Faderports - 8 Faders 1x1 Encoder
Nektar Products - 8 Faders 2x banks of 1x8 encoders
Novation Launch Control - 8 Faders, 3x8 encoders

I was thinking all of those products above would have 8 faders setup for the Channel and ChannelEnd grouping, and that could go on the end of the 'Channel' keyword in the .rst, rather than in the REAPER dialog for CSI. So, then they could assign the rotaries in a similar manner but provide the array.

Examples:-

MCU:
Channel 8
MCUFader x x x xxxx
MCURotary x x x xxxx
ChannelEnd

FaderPort:
Channel 8
FDPFader x x x xxxx
ChannelEnd

FDPRotary1 x x x xxxxx

Livid:
Channel 8
LVDFader x x x xxxxx
ChannelEnd

Channel 16
LVDRotary x x x xxxxx
ChannelEnd

And, as the widgets are more specifically defined with the device name included, they could be used later in .axt and .fxt files to spread controls 'if' the user wanted to.

Does that make more sense?


Quote:
Yes, the example is fine, but the .fxts don't span surfaces, all the EQ controls are on the MCU and all the compressor controls are on the XT, that's already allowed.
Well, that's where user customisation comes in, because you could span the EQ by doing the following:-

mcuFXMatrixRotary 1 1 EQparam1
mcuFXMatrixRotary 1 2 EQparam2
mcuFXMatrixRotary 1 3 EQparam3
mcuFXMatrixRotary 1 4 EQparam4
mcuFXMatrixRotary 1 5 EQparam5
mcuFXMatrixRotary 1 6 EQparam6
mcuFXMatrixRotary 1 7 EQparam7
mcuFXMatrixRotary 1 8 EQparam8

mxtFXMatrixRotary 1 1 EQFreq1
mxtFXMatrixRotary 1 2 EQFreq2
mxtFXMatrixRotary 1 3 EQFreq3
mxtFXMatrixRotary 1 4 EQFreq4
mxtFXMatrixRotary 1 5 EQFreq5
mxtFXMatrixRotary 1 6 EQFreq6
mxtFXMatrixRotary 1 7 EQFreq7
mxtFXMatrixRotary 1 8 EQFreq8

As the widgets have been device specifically defined it gives you that flexibility.

The .fxt would then have to move to a parent sub of course, and not be device specific. Just throwing out ideas to see if you/anyone can see the benefit and in a way that fits in with the path you're walking.

Quote:
I'm talking about some of the EQ params on the XT and some on the MCU, not sure if it's that useful in reality, that's why I'm checking.
Well, how does the above sit with you as a concept? If you could see it working then the flexibility is there if the end user wants it, and from my less-than-educated perspective it's not breaking away a great deal from what you have already.

Quote:
Are you suggesting a new grammar here as well ?
mcuFXMatrixRotary and mxtFXMatrixRotary are purely examples of what a user may choose to call their widgets in the .rst, if they're specifically named for the real surface then you can refer to them in the .fxt, is my thinking.

The numbers are purely just an idea of how the matrix 'could' work i.e. 1 1 = Row/Page 1, Channel/Col 1.

Last edited by Skijumptoes; 06-17-2018 at 12:36 PM.
Skijumptoes is offline   Reply With Quote
Old 06-17-2018, 01:24 PM   #1392
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Hmmm...

Keep in mind that the Channel keyword is simply to prevent having to make 8 entries times the number of items -- ChannelPan, ChannelMute, ChannelFader, etc.

It is just shorthand to keep the tedious typing down.

So in the very same way you could define a C4 like this (ignoring the MIDI messages for now):

Channel
UpperDisplayA
LowerDisplayA
RotaryEncoderA
RotaryPushA

UpperDisplayB
LowerDisplayB
RotaryEncoderB
RotaryPushB

UpperDisplayC
LowerDisplayC
RotaryEncoderC
RotaryPushC

UpperDisplayD
LowerDisplayD
RotaryEncoderD
RotaryPushD
ChannelEnd

Now in the Real Surface config, just indicate 8 Channels, voila !!, a 4 row, 8 column matrix.

As far as the .axt side, that's where the fun happens.

We can treat sets of control as channels, a 1 row, many column matrix, more like a C4 type matrix, etc.
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-17-2018, 03:10 PM   #1393
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Ah ok, that makes sense, yes that's well thought outl.

The only thing that's left in my mind is something that maybe users may need to be aware of, in would happen if there were an 8x fader + 4x4 Encoder Matrix, but the Encoders don't follow sequential from row to row.

So the the user (Wrongly perhaps) has this in their .rst:-

Channel
Fader 90 10 00 7f
RotaryA 90 20 00 7f
RotaryB 90 30 00 7f
RotaryC 90 40 00 7f
RotaryD 90 50 00 7f
ChannelEnd

In the Real Surface config the user has set it up as 8 channels.

So, 'physically' the control surface has the following (using RotaryA as an example):-

RotaryA1 90 20 00 7f
RotaryA2 90 21 00 7f
RotaryA3 90 22 00 7f
RotaryA4 40 23 00 7f

Whereas CSI will setup reference to the widgets as so based on the 8 channels:-

RotaryA1 90 20 00 7f
RotaryA2 90 21 00 7f
RotaryA3 90 22 00 7f
RotaryA4 90 23 00 7f
RotaryA5 90 24 00 7f
RotaryA6 90 25 00 7f
RotaryA7 90 26 00 7f
RotaryA8 90 27 00 7f

In that situation, what happens if the 90 24 00 7f - 90 27 00 7f addresses (RotaryA5 - RotaryA8) physically exist elsewhere on the device? Would it cause issues?

I'm guessing that in this case, you would advise the user to explicitly setup the entries for A1,A2,A3,A4, B1, B2, B3 separately?

In that scenario, how do you plan to deal with multi-page plugins? Would you be looking at each widget being defined for each page (Similar to how i exampled?), or an array type listing for which CSI manages the pages? I presumed that you were using the channels defined in the Real Surface config to bank by that number, which may not work for odd-ratio controllers.

I guess an array approach within the .fxt could cover multiple control surfaces (i.e. 32 FX Params in an array, CSI puts them across 4x 8 widget pages, or 2x 16 widget pages - depending on .rst), but i remember reading earlier in this thread that you didn't have that kind of approach in mind with this project, and that .fxt will need to be designed with their .rst in mind? Is that still the case?
Skijumptoes is offline   Reply With Quote
Old 06-17-2018, 03:35 PM   #1394
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by Skijumptoes View Post
Ah ok, that makes sense, yes that's well thought outl.

The only thing that's left in my mind is something that maybe users may need to be aware of, in would happen if there were an 8x fader + 4x4 Encoder Matrix, but the Encoders don't follow sequential from row to row.

So the the user (Wrongly perhaps) has this in their .rst:-

Channel
Fader 90 10 00 7f
RotaryA 90 20 00 7f
RotaryB 90 30 00 7f
RotaryC 90 40 00 7f
RotaryD 90 50 00 7f
ChannelEnd

In the Real Surface config the user has set it up as 8 channels.

So, 'physically' the control surface has the following (using RotaryA as an example):-

RotaryA1 90 20 00 7f
RotaryA2 90 21 00 7f
RotaryA3 90 22 00 7f
RotaryA4 40 23 00 7f

Whereas CSI will setup reference to the widgets as so based on the 8 channels:-

RotaryA1 90 20 00 7f
RotaryA2 90 21 00 7f
RotaryA3 90 22 00 7f
RotaryA4 90 23 00 7f
RotaryA5 90 24 00 7f
RotaryA6 90 25 00 7f
RotaryA7 90 26 00 7f
RotaryA8 90 27 00 7f

In that situation, what happens if the 90 24 00 7f - 90 27 00 7f addresses (RotaryA5 - RotaryA8) physically exist elsewhere on the device? Would it cause issues?

I'm guessing that in this case, you would advise the user to explicitly setup the entries for A1,A2,A3,A4, B1, B2, B3 separately?
Yes, exactly !

The Channel keyword is just to ease the typing chores.

You can always just name everything explicitly, at the expense of more typing.


Quote:
Originally Posted by Skijumptoes View Post
In that scenario, how do you plan to deal with multi-page plugins? Would you be looking at each widget being defined for each page (Similar to how i exampled?), or an array type listing for which CSI manages the pages? I presumed that you were using the channels defined in the Real Surface config to bank by that number, which may not work for odd-ratio controllers.

I guess an array approach within the .fxt could cover multiple control surfaces (i.e. 32 FX Params in an array, CSI puts them across 4x 8 widget pages, or 2x 16 widget pages - depending on .rst), but i remember reading earlier in this thread that you didn't have that kind of approach in mind with this project, and that .fxt will need to be designed with their .rst in mind? Is that still the case?
Don't recall exactly, there has been lots of discussion, but the current thinking is to put all of this type of thing in the .axt/.fxt files.

The only dependence the .axt/.fxt files have on the .rst is the available pool of named widgets, you need a named widget to associate with the .axt/.fxt Action.

Very early days, but I think that will give us the most flexibility for using the widgets we've defined in the .rst file.
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-17-2018, 09:09 PM   #1395
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 8,978
Default

Quote:
Originally Posted by Geoff Waddington View Post
The Channel keyword is just to ease the typing chores. You can always just name everything explicitly, at the expense of more typing.
How to do a moving bank without "Channel" ?
Is there a dedicated naming scheme (*A, *B, *C, ...) that is recognized in the .act file ?

-Michael
mschnell is offline   Reply With Quote
Old 06-18-2018, 01:36 AM   #1396
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by mschnell View Post
How to do a moving bank without "Channel" ?
Is there a dedicated naming scheme (*A, *B, *C, ...) that is recognized in the .act file ?

-Michael
Right now you can't move anything without using Channel, that's a shortcut we're taking, for now we utilize the built-in surface channel order.

When the whole .axt/.fxt matrix layout design is working, then you will be able to build a Channel in a Virtual Surface without having defined one in the .rst file.

The concept is already defined for a 1 row, n Column matrix -- Channel

The general grammar for matrices in is now up for discussion...
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-18-2018, 02:53 AM   #1397
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by Geoff Waddington View Post
The general grammar for matrices in is now up for discussion...
As you have experience with the EuCon project, could you share with us an example of what you used there? i.e. a brief sample of the .fxt or equivalent?

Also, in hindsight is there anything that you would like to have improved perhaps?

How did you handle parameter 'types' with the EuCon? i.e. i've already noticed certain controls don't respond correctly with the current CSI build so presume that eventually somewhere in the .fxt will be additional parameters to correct that? Or is CSI able to read that from the plugin itself?

i.e. if a plugin element has 4 options, and it's permissible values are 1-4, not 0-127 etc.

You've got vastly more experience on this so would be really interesting for us to understand what did and didn't work, previously.
Skijumptoes is offline   Reply With Quote
Old 06-18-2018, 03:40 AM   #1398
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by Skijumptoes View Post
As you have experience with the EuCon project, could you share with us an example of what you used there? i.e. a brief sample of the .fxt or equivalent?

Also, in hindsight is there anything that you would like to have improved perhaps?

How did you handle parameter 'types' with the EuCon? i.e. i've already noticed certain controls don't respond correctly with the current CSI build so presume that eventually somewhere in the .fxt will be additional parameters to correct that? Or is CSI able to read that from the plugin itself?

i.e. if a plugin element has 4 options, and it's permissible values are 1-4, not 0-127 etc.

You've got vastly more experience on this so would be really interesting for us to understand what did and didn't work, previously.
You should be able to use any control anywhere.

You could use the Fader as a switch if you wanted.

All values are normalized to a value between 0.0 - 1.0.

Which controls don't respond properly ?
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington is offline   Reply With Quote
Old 06-18-2018, 04:38 AM   #1399
Skijumptoes
Human being with feelings
 
Join Date: Mar 2018
Location: Norfolk, UK
Posts: 285
Default

Quote:
Originally Posted by Geoff Waddington View Post
Which controls don't respond properly ?
An example is the Roland Cloud Juno 106 AUi plugin, if i press the UI button in REAPER so i can see the values each control utilitizes, i notice that the controls go from 0.0000 - 255.0000.

Moving a control widget from min to max on the MCU via CSI it will update incrementally from 0.0000 to 0.9999 on screen, so the movement isn't even noticeable on the plugin itself.

However, if i move the plugin control via mouse, the widget which is linked on my MCU will move up to the top immediately and stay there.
Skijumptoes is offline   Reply With Quote
Old 06-18-2018, 04:53 AM   #1400
Geoff Waddington
Human being with feelings
 
Geoff Waddington's Avatar
 
Join Date: Mar 2009
Location: Dartmouth, Nova Scotia
Posts: 4,886
Default

Quote:
Originally Posted by Skijumptoes View Post
An example is the Roland Cloud Juno 106 AUi plugin, if i press the UI button in REAPER so i can see the values each control utilitizes, i notice that the controls go from 0.0000 - 255.0000.

Moving a control widget from min to max on the MCU via CSI it will update incrementally from 0.0000 to 0.9999 on screen, so the movement isn't even noticeable on the plugin itself.

However, if i move the plugin control via mouse, the widget which is linked on my MCU will move up to the top immediately and stay there.
Aha, Ok, this is new.

I've never seen a non normalized value, I think VST's restrict them 0.0-1.0 in the spec IIRC.

We'll have to introduce something to deal with this situation.
__________________
CSI - You can donate here: geoffwaddington.ca
Beta software: https://stash.reaper.fm/v/38349/CSI%20beta.zip
installation and documentation here: https://github.com/malcolmgroves/reaper_csi/wiki
Geoff Waddington 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 07:49 PM.


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