Bitfocus Buttons is unified control and monitoring software for AV and live production. It brings control, device state, automation, and signal routing into one system, with controls you can use from a browser or hardware surface.
Use this explanation to understand the main concepts before creating your first control. Available capabilities depend on the installed features, license, connected equipment, and your account's access.
Core concepts#
A connection represents a controlled system#
A connection represents one controlled device, application, or service. For example, separate connections might represent an audio mixer, a video switcher, a media server, and a lighting system.
A connection can make several kinds of capability available to the rest of Buttons:
- Actions represent commands that can be sent, such as changing an input, recalling a scene, or starting playback.
- Feedbacks report the state of the connected system to your buttons: whether something is on or off, an image such as a thumbnail, or a live value such as a level or timecode.
- Variables represent values such as
-12 dB, Camera 2, or slide 7 of 24. - Presets, where supported, represent ready-made button configurations supplied by that connection.
The available actions, feedbacks, variables, and presets depend on the connection module and connected system. Connection presets are different from routing Presets, which store routing salvos.
A position represents one person's physical operating position#
A position represents the physical position and complete workspace for one person. Examples could include vision mixing, graphics, sound, shading, or a production desk.
A position coordinates its hardware panels, browser sessions, iPads, and other surfaces as one workspace while keeping its controls, navigation, actions, and state separate from other positions.
For example, a sound position could combine a hardware button panel beside the mixer, a browser on a workstation, and an iPad elsewhere in the room. Its controls can send actions and show received state: a mute control could send the mute action, change color when mute feedback becomes active, and display a level of -12 dB from a variable.
A surface represents an interface to a position#
A surface represents one interface through which a position is used. It can be a hardware panel, browser session, iPad, or another supported interface.
Each surface contributes physical or on-screen controls (such as buttons, displays, encoders, or touch elements) to the position. Available controls and layout depend on the surface.
A workflow represents automation and custom logic#
A workflow represents automation and custom logic. It can respond to events and state, evaluate conditions, transform values, run actions without a button press, and create APIs that exchange data with other systems.
Use a workflow when the task needs custom logic, system-to-system interaction, or coordination beyond a direct control.
A cuelist represents a list of actions#
A cuelist represents a list of actions. It can run actions in a determined order during a show or replace a collection of individual action buttons. A cuelist can be controlled from a position.
Start with the smallest control that gets the job done. Use a direct button action when no sequence or additional logic is needed.
Routing represents real signal paths#
Routing represents how signals travel from sources to destinations through the connected facility. Ports and signal levels describe routable resources; labels and groups give them meaningful names; virtual routing and tielines can describe logical devices and paths across routing domains.
Depending on the enabled features and connected systems, Buttons can provide route execution, presets, labels, virtual routing, tielines, tally/UMD, NMOS, projects, rules, and topology views.
A routing project groups routing activity so temporary resources, such as tielines, can be released together. A project can expire automatically or be released manually.
Routing actions can affect real signal paths immediately. Learn the configured routing behavior before making changes in a production system.
A tag is a free-form building block for organizing resources across types. A resource can have multiple tags from multiple collections, so it can appear in several useful groupings (for example, Studio 1, Audio, and Shared) instead of one fixed hierarchy.
Feedbacks and variables are different#
Feedbacks and variables can both represent state, but they serve different purposes:
- A variable exposes a value that can be displayed, inserted into text, used in an expression, passed to an action, or consumed by a workflow.
- A feedback reports state from a connection. What it can do on a button depends on which of three types the connection module defines it as.
Feedback type | What it reports | What it can do on a button |
|---|
Boolean | On or off, such as a mute being active or a source being on Program. | When on, it applies the text, colors, image, and other styling you set on the feedback. It can also drive a Feedback variable that holds true or false. |
Advanced | A result from the module, sometimes including an image such as a media pool or clip thumbnail. | Any result counts as on, so the styling you set applies. If the result includes an image, that image is shown on the button. Text, colors, and sizes that the module returns are not applied: set your own styling instead. |
Value | A value such as an audio level, a timecode, or a name. | It can't change the button's styling directly. Add it to the button as a Feedback variable, then show the value in the button text, for example $(self.state.level), or use it in an expression. |
Which feedbacks a connection offers, and which type each one is, depends on the connection module. See
Understand variable scope for Feedback variables.
They often work together. A routing variable might expose Camera 2 as the source currently feeding an output, while a routed-state feedback highlights the corresponding control. A slideshow variable might display slide 7 of 24, while a running-state feedback changes the control's appearance.
Where to begin#
After signing in:
- Read Find your way around Buttons to see what is available in each area.
- Create your first backup before building substantial configuration.
- Add an ATEM connection to provide presets and routing ports for the first position.
- Create a position, then add controls from ATEM presets and build a Custom Router.
- Add and attach a surface when you want to use the position on control hardware.