Skip to content

request: expose transition rate and enable incremental adjustment for rotaries #390

@directimages

Description

@directimages

Currently, the ATEM module in Companion allows us to set the transition rate (per M/E, per style), but there is no way to read the current rate into a variable or to adjust it relatively.

This creates two major limitations:
• We can’t display the current rate on a Stream Deck Plus rotary/OLED.
• We can’t implement rotary-style incremental control (+1 / –1) without workarounds.

What I’m asking for:
1. Expose the current transition rate as a variable/feedback
• e.g. $(atem:me1_transitionrate), $(atem:me2_transitionrate)
• Ideally per style as well:
• $(atem:me1_mixrate)
• $(atem:me1_diprate)
• $(atem:me1_wiperate)
• $(atem:me1_dverate)
2. Add a “Transition Rate: Adjust (relative)” action
• Parameters: delta (positive or negative integer), min, max
• Example: +1 → increments by one frame until max, –1 → decrements until min.

Use case:
Stream Deck Plus rotaries. The hardware is ideal for scrubbing a parameter like transition rate. Operators could:
• Rotate left → decrement rate (min 1 frame)
• Rotate right → increment rate (max per ATEM model, often 250 frames)
• OLED shows live rate feedback via variable.

Benefit:
This makes Companion much more powerful for ATEM users, especially with Stream Deck Plus, by letting us adjust and monitor transition rates smoothly without external bridges or shadow variables.

SDK reference:
The ATEM API already exposes this:

// For Mix transition parameters
IBMDSwitcherTransitionMixParameters* mixParams = nullptr;
meBlock->QueryInterface(IID_IBMDSwitcherTransitionMixParameters, (void**)&mixParams);

if (mixParams) {
uint32_t rate;
mixParams->GetRate(&rate); // <-- read current rate
mixParams->SetRate(rate+1); // <-- example increment
}

Equivalent GetRate/SetRate methods exist for Dip, Wipe, and DVE parameter interfaces.

References:
• ATEM SDK: GetRate() and SetRate() available for Mix, Dip, Wipe, and DVE transition parameter interfaces.
• Current Companion module already implements Set but not Get or Adjust.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions