[Draft discussion] Macro improvements [enum, incremental]

For now, we have pretty simple and basic input controls like macro and buttons.
They are useful as is and in most cases sufficient, but I think it could be better when even more flexible, user-defined input modulators would be introduced.

Here is my short proposal list:

  • Enum modulator (dropdown list type) - can store an arbitrary number of user-defined values with their respective names.
    sad enum modulator

  • Enum modulator (knob-based type) - knob that can snap only to certain values.

  • Button enhancement - Name of the button moved to header (like in macro), customizable label for on/off states
    dynamic button

  • “Ghost” modulator - points to a group of parameters, represents only one of them at a given time, can point to a different one with modulation of some input value. It would be really useful for designing Preset/Device pages. Here is simple example
    ghost modulator example

Such modulators would improve creating remote control pages (UI that user is mainly exposed to, with devices and custom presets), control modulation more precisely in some cases or even help to work with stepped automation mentioned in this case (Automation of discrete values):

For such a case it could be just creating an enum-macro with proper values and names, mapped to a parameter in question and viola!, automation of such parameters is not a pain anymore. With that, automation can show exact value names and precisely snap to it.

There are implementation details that could be discussed, to maximize flexibility of such a modulator but also ensure it is simple to use and not overcomplicated.

Maybe one of you has an idea for some other similar modulator or improvement? I would like to hear it!

Further analysis

With further analysis I came up with a more realistic mockup idea.
As there is no much space in macro itself for position labels (especially on remote control pages), it would show only division marks and macro name or name of current position value, like this:
macro enum mockup1

There is a possibility to include both name and position value on remote control pages but it’s already reserved for modulation arrow and I feel it would just unnecessarily complicate code for such a case.
macro enum mockup2

In my mockup image there is an enum knob with skipped values, I think we can ignore that idea as the user could just use the same values for this space in user-defined enum macro.

Inspector view

Here is my draft how controls for these macros could look like in the inspector panel:


Current implementation of automation for enum dropdown lists forces to select exact choice in given time which is reasonable
current automation behavior

However, for enum knob-based parameters I think interpolation would be required as such parameter behaves similar to macro, but with some value-increment manner.
automation mockup

Similar requests for improvements

I went through the Discord’s #feature-requests channel and these are things that I found related to this topic:

  • Grid: ‘gear switch’ mode for Split/Merge modules - @x.iso (18x :+1:)
    As displayed in this mockup, it would be useful to have a manual control handle for slot select instead of depending on just input node, and especially useful if it could be mapped to remote controls as dropdown box (I could also dream of being able to assign specific names for each slot…). It could also be used as offset to the input of selector.
  • Ability to set default/reset position for macro modulators - @holar (10x :+1:)
    The title says it all, currently when you double-click on macro it’ll always reset to 0 position, but it would be better if we could define custom reset points for them
  • Shift-click to bypass modulation from context menu of parameter - @x.iso (23x :+1:)
    As the title says. Currently we can temporarily disable/bypass parameter modulation via inspector panel by Shift-clicking at modulation mapping. It would be also useful to be able to do that from context menu of parameter itself.
  • Trigger Button Modulator - @Davey (31x :+1: )
    While this already exists as a module inside the Grid, currently we only have a toggle button for use in modulator space. Trigger modulators would be useful for making quick-access control panels for grid patches, and can also be used in conjunction with Random modulators to mimic one tap randomization of device parameters (similar to what Ableton added in Live 11).
  • Increment parameter adjustment with arrow keys - @x.iso (25x :+1: )
    Ability to adjust last selected/touched parameter with arrow keys incrementally

Random thoughts

Also, in addition to the main idea, I have a few thoughts related to modulator’s workflow:

  • ability to type exact value when applying modulation - for now I’m touching a knob and edit values in inspector, that sucks
  • Right mouse button for fine-tune when applying modulation - it is possible to fine-tune any parameter with left-right mouse button combo, but unfortunately not for modulation.
  • when applying modulation, it shows a generic value like +0.1 which is of course useful. I think additional values like original value (where knob points at right now) and current modulation value (all modulation added up, “output value”) could be very useful, too.
  • display scale of macro is just generic 0%-100% range, for case when macro is modulating just one parameter it could inherit units of the target and show its precis value after modulation like 550Hz - 1.2kHz

With that, I think I covered everything I wanted to say.


I had exact same FR sent to them before and mentioned in Discord few times. gonna free up some votes for this when we get to draft

this one is a bit of a headscratcher, not sure how it would be implemented even. this goes a bit beyond what proposed here as it affects Remote Controls behavior and other things. perhaps could be solved with Array modulator idea?

I could live without that, it’s just a wild idea to save some space for control pages like in Delay-2:

As you can see, Beats L and Offset L are useful only when Use 16s L is enabled. Delay L is only useful when Use 16s L is disabled. To save some space I came up with that idea of dynamic, pointer-based modulators which would occupies less space and show parameters that relates to Use 16s L parameter state.

I’m not sure as I don’t feel like I understand whole Array modulator idea :neutral_face:

Thank you @Gethiox !

There are many ideas shared here. I wonder what would be the best way to “package” them into feature requests. All of them in just one?

At a more strategic level, I wonder whether adding more modulators (or adding more complexity in modulators, the possibility to create new modulators, etc) is at odds with the idea of moving the complexity to The Grid, and then have A modulator that loads Grid patches. If Bitwig would say “interesting ideas but we must prioritize one approach over the other because pushing both is too much work”, would that make sense in this case?

For now it’s just a brainstorm and I wanted to gather other users input about bigger picture first rather than just request things that in my opinion should be in Bibwig.

Whole feature request could simply be limited to two new forms of input modulators - enum dropdown list and stepped increment macro. But in addition to that I would like to also discuss other small things that could be improved in this area, for example I think ability to set default value of a macro would be pretty cool to have, on its own this is really tiny thing.

As a form of feature request I think it would be good to group these little ideas and put them in some kind of priority order as users will less likely to utilize their limited vote pool for separated tiny things like that default macro value. But that is just my side of view, I’m waiting for other sides.

1 Like

for now Grid doesn’t really provide much in terms of UI building, so I imagine such ‘modulator’ would be just a mod arrow or at best bunch of them + edit button to open Grid interface.
Here the main point is being able to create custom macros that have user-friendly readings and positions when adjusted. that is having clear ‘steps’ when intended and value readouts, instead of just having 0-100% knob that doesn’t snap anywhere despite controlling parameters that do progress in steps.

as for examples, here’s a knob in Usine and it’s basic settings

here when you set it to integer, then it steps through integers, otherwise you can set it to x.xx or x.xxxxx, etc, which Bitwig doesn’t really need to distinguish between, so I’d rather have it either work with integers or percentage with decimals (as currently is).
for macro in Bitwig I would also like to have ability to name integers if you set it in such mode.

1 Like

Just collateral, but I had no idea that it is technically possible for third parties to code Bitwig modulators and a .bwmodulator file format exists.

afaik it doesn’t work since version 3 (they encrypted the format or something). but this was attempt at making user-made device editor basically. as far as I understand both devices and modulators are made with Nitro, which seems to be that elusive editor of theirs that was showcased before 1.0 launch.

1 Like

I created feature request draft here:

I guess this thread can be archived/closed or something?

1 Like