MixEffect can control up to four HyperDecks from the app and any number of HyperDecks using Shortcuts.

Setting Up HyperDecks

Once you are connected to a switcher, do the following to configure your HyperDecks for use with your switcher. If you have already configured them in ATEM Software Control, you can skip this step.

  1. Tap Settings in the Switcher Section navigation list.

  2. Tap HyperDeck.

  3. Enter the IP address of the HyperDeck.

  4. Configure the Input if the HyperDeck if it is connected to your ATEM switcher.

  5. Set the Auto Roll and Offset values if desired.

  6. Tap Save.

If the switcher is able to connect to the HyperDeck, a green checkmark will appear next to the IP address.

You can configure up to four HyperDecks to work inside the MixEffect application.

Adding the HyperDecks Section

If you create a new switcher, the HyperDecks section will appear in your Switcher Section navigation list. If you are using an existing switcher, the HyperDecks section may not appear in the list. To add it, follow these steps:

  1. Go to the Switcher Detail page for your switcher.

  2. Tap Reset Layout.

The HyperDeck section will appear below Color Generators. You can tap Edit from the Switcher Navigation section to rearrange the order of your switcher sections.

Adding the HyperDecks Panel to a Switcher Page

You can add a HyperDecks panel to your switcher page by following these steps:

  1. Go to the Switcher section.

  2. Tap the Switcher Page menu in the upper-right hand corner.

  3. Tap Edit This Page.

  4. Tap Add Panel to XXX where XXX is the switcher page section you wish to add the panel to.

  5. Choose HyperDecks from the menu that appears.

  6. Tap Edit to rearrange the order of the panel in the section.

  7. Tap Close.

Using the HyperDeck Panel

The HyperDeck panel is where you control the functions of the HyperDeck from MixEffect.

A HyperDeck can either record or playback videos stored on storage cards inserted into the HyperDeck. MixEffect displays these in two separate tabs to differentiate between the two modes.

Record Tab

The Record tab displays the current timecode from the ATEM switcher, along with the amount of recording time available on the currently selected storage card.

If you are not recording, you can tap on the card icons in the bottom-left hand corner to switch storage devices.

There is a Warning icon located in the bottom-right of the Record panel. Enabling that will turn the selected panel red when a recording session is not active. Use this as a reminder that a HyperDeck should be recording.

Playback Tab

The Playback tab is used to controlling the playback of video clips stored on the HyperDeck. It has the following controls:

  • Clip Name: The name of the currently selected clip.

  • Clip Length: The length of the currently selected clip.

  • Time Elapsed: How much time has elapsed in the currently selected clip.

  • Time Remaining: How much time is remaining in the currently selected clip.

  • Back: Goes to the previous clip. If a clip is currently playing and two or more seconds have elapsed, tapping this button will move the playhead to the start of the current clip.

  • Play: Starts and stops playback of the currently selected clip. If no clips are selected, the first clip will start playing.

  • Single Clip: When toggled, MixEffect will instruct the HyperDeck to play just the selected clip and stop. If not toggled, the HyperDeck will play subsequent clips (until the end of the clip list) after completing the current clip.

  • Next: Goes to the next clip. If on the last clip and loop all is not enabled, the last frame of the last clip will be displayed. If loop all is enabled, tapping the Next button will go to the first clip.

  • Loop: Toggle between Single Clip looping, Loop All, and No Loop.

  • Shuttle / Jog Controls: A toggle to switch between shuttle and jog. If you have a device with a Taptic Engine, spinning the Jog Control wheel will provide haptic feedback. Long-press on the Jog Control wheel to increase the jog speed.

  • Clip List: The list of video clips stored on the HyperDeck for the currently selected card.

  • Card List: Icons representing the storage slots of the HyperDeck. Tap to switch cards when not playing or recording.

  • Input: The input of the ATEM switcher that the HyperDeck is attached to.


The Send HyperDeck Command action allows you to send a command to any network-addressable HyperDeck.


  • Command: The command to send to the HyperDeck. See list of commands below.

  • IP address: The IP address of the HyperDeck.

  • Port Number: The port number to communicate with the HyperDeck. The default is 9993.


A string that is the result of the HyperDeck command.


Refer to the HyperDeck manual for a complete list of support commands. Here is a sampling of the commands you can send to HyperDecks running 1.11 firmware. Note that some older HyperDecks that run the 1.08 firmware may not support all of these commands.

  • help: return list of supported commands

  • commands: return commands in XML format

  • device info: return device information

  • disk list: query clip list on active disk

  • disk list: slot id: {n}: query clip list on disk in slot {n}

  • quit: disconnect ethernet control

  • ping: check device is responding

  • preview: enable: {true/false}: switch to preview or output

  • play: play from current timecode

  • play: speed: {-5000 to 5000}: play at specific speed

  • play: loop: {true/false}: play in loops or stop-at-end

  • play: single clip: {true/false}: play current clip or all clips

  • playrange: query play range setting

  • playrange set: clip id: {n}: set play range to clip {n} only

  • playrange set: clip id: {n} count: {m}: set play range to {m} clips starting from clip {n}

  • playrange set: in: {inT} out: {outT}: set play range to play between:

    • timecode {inT} and timecode {outT}

  • playrange set: timeline in: {in} timeline out: {out}: set play range in units of frames between:

    • timeline position {in} and position {out}

  • playrange clear: clear/reset play range setting

  • play on startup: query unit play on startup state

  • play on startup: enable: {true/false}: enable or disable play on startup

  • play on startup: single clip: {true/false}: play single clip or all clips on startup

  • play option: query play options

  • play option: stop mode: {lastframe/nextframe/black}: set output frame when playback stops

  • record: record from current input

  • record: name: {name}: record named clip (supports UTF-8 name)

  • record spill: spill current recording to next slot

  • record spill: slot id: {n}: spill current recording to specified slot. Use current slot id to spill to same slot

  • stop: stop playback or recording

  • clips count: query number of clips on timeline

  • clips get: query all timeline clips

  • clips get: clip id: {n}: query a timeline clip info

  • clips get: clip id: {n} count: {m}: query m clips starting from n

  • clips get: version: {1/2}: query clip info using specified output version:

    • version 1: id: name startT duration

    • version 2: id: startT duration inT outT name

  • clips add: name: {name}: append a clip to timeline

  • clips add: clip id: {n} name: {name}: insert clip before existing clip {n}

  • clips add: in: {inT} out: {outT} name: {name}: append the {inT} to {outT} portion of clip

  • clips remove: clip id: {n}: remove clip {n} from the timeline (invalidates clip ids following clip {n})

  • clips clear: empty timeline clip list

  • transport info: query current activity

  • slot info: query active slot

  • slot info: slot id: {n}: query slot {n}

  • slot select: slot id: {n}: switch to specified slot

  • slot select: video format: {format}: load clips of specified format

  • slot unblock: unblock active slot

  • slot unblock: slot id: {n}: unblock slot {n}

  • cache info: query cache status

  • dynamic range: query dynamic range settings

  • dynamic range: playback override: {off/Rec709/Rec2020_SDR/HLG/ST2084_300/ST2084_500/ST2084_800/ST2084_1000/ST2084_2000/ST2084_4000/ST2048}: set playback dynamic range override

  • notify: query notification status

  • notify: remote: {true/false}: set remote notifications

  • notify: transport: {true/false}: set transport notifications

  • notify: slot: {true/false}: set slot notifications

  • notify: configuration: {true/false}: set configuration notifications

  • notify: dropped frames: {true/false}: set dropped frames notifications

  • notify: display timecode: {true/false}: set display timecode notifications

  • notify: timeline position: {true/false}: set playback timeline position notifications

  • notify: playrange: {true/false}: set playrange notifications

  • notify: cache: {true/false}: set cache notifications

  • notify: dynamic range: {true/false}: set dynamic range settings notifications

  • goto: clip id: {start/end}: goto first clip or last clip

  • goto: clip id: {n}: goto clip id {n}

  • goto: clip id: +{n}: go forward {n} clips

  • goto: clip id: -{n}: go backward {n} clips

  • goto: clip: {start/end}: goto start or end of clip

  • goto: clip: {n}: goto frame position {n} within current clip

  • goto: clip: +{n}: go forward {n} frames within current clip

  • goto: clip: -{n}: go backward {n} frames within current clip

  • goto: timeline: {start/end}: goto first frame or last frame of timeline

  • goto: timeline: {n}: goto frame position {n} within timeline

  • goto: timeline: +{n}: go forward {n} frames within timeline

  • goto: timeline: -{n}: go backward {n} frames within timeline

  • goto: timecode: {timecode}: goto specified timecode

  • goto: timecode: +{timecode}: go forward {timecode} duration

  • goto: timecode: -{timecode}: go backward {timecode} duration

  • goto: slot id: {n}: goto slot id {n} equivalent to "slot select: slot id: {n}"

  • jog: timecode: {timecode}: jog to timecode

  • jog: timecode: +{timecode}: jog forward {timecode} duration

  • jog: timecode: -{timecode}: jog backward {timecode} duration

  • shuttle: speed: {-5000 to 5000}: shuttle with speed

  • remote: query unit remote control state

  • remote: enable: {true/false}: enable or disable remote control

  • remote: override: {true/false}: session override remote control

  • configuration: query configuration settings

  • configuration: video input: {SDI/HDMI/component/composite}: change the video input

  • configuration: audio input: {embedded/XLR/RCA}: change the audio input

  • configuration: file format: {format}: switch to specific file format

  • configuration: audio codec: {PCM/AAC}: switch to specific audio codec

  • configuration: timecode input: {external/embedded/preset/clip}: change the timecode input

  • configuration: timecode preset: {timecode}: set the timecode preset

  • configuration: audio input channels: {n}: set the number of audio channels recorded to {n}

  • configuration: record trigger: {none/recordbit/timecoderun}: change the record trigger

  • configuration: record prefix: {name}: set the record prefix name (supports UTF-8 name)

  • configuration: append timestamp: {true/false}: append timestamp to recorded filename

  • uptime: return time since last boot

  • format: slot id: {n} prepare: {exFAT/HFS+} name: {name}: prepare formatting operation filesystem type with volume name {name}

    • "slot id" can be omitted for the current mounted slot

    • "name" defaults to current volume name if mounted (supports UTF-8)

  • format: confirm: {token}: perform a pre-prepared formatting operation using token

  • identify: enable: {true/false}: identify the device

  • watchdog: period: {period in seconds}: client connection timeout


Use the Send HyperDeck Command to create interactive interfaces to your HyperDecks via Shortcuts.

The screenshot above shows how you can create a menu to send various commands to a HyperDeck.

It's recommend to store a reference to the HyperDeck's IP address in a variable so you don't have to enter it every time. You can also copy and paste a shortcut action multiple times to do the same thing. Use this sample shortcut as a starter.

Last updated