Overview
Q2Q is a professional NDI broadcast switcher built natively for macOS. It provides a full production workflow: discover NDI sources on your network, switch between them with 18 transitions in a Program/Preview interface, composite with ME engines and keyers, mix audio with a per-channel DSP chain, and output simultaneously via NDI, RTMP, multiview NDI, and virtual camera.
Q2Q loads the NDI runtime dynamically — it does not bundle the NDI SDK. NDI Tools must be installed separately from ndi.video before launching Q2Q.
Requirements
| Requirement | Details |
|---|---|
| macOS version | macOS 14.6 Sonoma or later |
| Architecture | Apple Silicon (M1, M2, M3, M4) |
| NDI runtime | NDI Tools from ndi.video (free, install before launching) |
| Network | Gigabit Ethernet recommended for production use |
| Distribution | Mac App Store |
Feature List
Inputs
- 10 total input slots: 6 NDI/camera inputs (CAM 1–6), 2 media player inputs (Media 1–2), 2 ME engine outputs (ME 1–2)
- Automatic NDI source discovery via mDNS on the local subnet
- Full-bandwidth NDI and NDI|HX compressed source support
- Hardware-accelerated NDI|HX decoding on Apple Silicon
- Live source status in the source grid (online / offline)
- Media players with playlist support, file loading, and frame-accurate video output
Switching
- Industry-standard Program / Preview dual-monitor layout
- PGM and PVW bus rows for direct source selection
- 18 transitions: Cut, Dissolve, Dip to Black, Dip to White, Wipe Left, Wipe Right, Wipe Up, Wipe Down, Box In, Box Out, Star Wipe, Push Left, Push Right, Push Up, Push Down
- Per-transition duration override plus global master duration setting
- Smoothstep easing on dissolve and dip transitions
- Keyboard shortcut support for Cut and Auto
Mix Effects (ME) Engines
- Two independent ME engines (ME 1 and ME 2), each outputting to the main source grid
- 18 shape masks: Rectangle, Rounded Rect, Circle, Oval, Diamond, Parallelogram, Trapezoid, Chevron Left/Right, Shield, Arch, Hexagon, Pentagon, Triangle, Star, and four organic Blobs
- Per-ME border (colour, width, softness) and drop shadow (opacity, radius, X/Y offset)
- Crop control per ME engine
- 8 saveable presets per ME engine
Keyers
- 2 Downstream Keyers (DSK) — composite over the final program output
- 2 Upstream Keyers (USK) — composite within ME engines before program mix
- Each keyer supports alpha, luma, and chroma key modes
- Chroma key uses a GPU-accelerated 32³ CIColorCube pipeline; cube is cached per settings
- Border and drop shadow on USK layers
- Per-keyer opacity, clip, and gain controls
- DSK TIE mode for transition-linked opacity fade
Audio Mixer
- Per-channel DSP chain: gain → 6-band biquad EQ → compressor → delay → pan
- Audio Follow Video (AFV) with crossfade on Program/Preview switches
- Real-time VU metering and FFT spectrum analysis per channel (spectrum at ~30 fps)
- Local monitor output via AVAudioEngine — routes to any macOS audio device
- NDI embedded audio output on the Program feed (stereo PCM, 48 kHz)
- Media player audio through MTAudioProcessingTap — works with any AVPlayer-supported codec
- Per-channel mute with thread-safe atomic read on the audio thread
Outputs
- NDI Program output — receivable by any NDI-compatible software or hardware on the network
- NDI Multiview output — separate NDI feed showing all sources in a grid
- Dedicated multiview window (native NSView, no GPU readback)
- RTMP streaming to YouTube Live, Twitch, or any custom RTMP endpoint (H.264 + AAC via VideoToolbox)
- Virtual camera output for routing program into other apps on the same Mac
- TCP tally server for compatible tally light controllers
Show Management & macOS Integration
- Full show file save and restore — ME, DSK, USK, audio, and source assignments
- Native macOS SwiftUI app — no Electron, no web wrapper
- Distributed via Mac App Store — sandboxed and notarised
- NDI loaded dynamically via dlopen — no bundled SDK, App Store compatible
- 60 fps ME compositing via CoreImage GPU pipeline
- DSK compositing uses single GPU pass into reusable NDI pixel buffer (no CPU readback)
Specifications
| Specification | Value |
|---|---|
| Minimum macOS | macOS 14.6 Sonoma |
| Architecture | Apple Silicon native (M1+) |
| NDI runtime | NDI Tools from ndi.video (required, not bundled) |
| Input slots | 10 (6 NDI, 2 media players, 2 ME outputs) |
| Transitions | 18 (Cut, Dissolve, 2× Dip, 4× Wipe, Box In/Out, Star Wipe, 4× Push) |
| ME engines | 2 independent, 18 shapes, 8 presets each |
| Keyer layers | 2 DSK + 2 USK (alpha / luma / chroma per layer) |
| Audio | Stereo PCM, 48 kHz; 6-band EQ + compressor + delay + pan per channel |
| NDI output frame rate | Matches source (up to 60 fps) |
| RTMP encoding | H.264 (VideoToolbox) + AAC |
| Tally | TCP server, compatible with standard tally controllers |
| Network | Gigabit Ethernet recommended for 1080p60+ |
Workflow Guide
Initial setup
1. Install NDI Tools from ndi.video. This places the NDI runtime library on your Mac — Q2Q loads it at launch.
2. Install Q2Q from the Mac App Store and launch it. The source grid will begin populating with discovered NDI sources within a few seconds.
3. Assign NDI sources to the 6 CAM slots using the dropdown under each source tile. Load media files into Media 1 or Media 2 using the Load File button.
Basic live switching
1. Click a source in the PVW bus row to send it to Preview. The Preview monitor shows the feed immediately.
2. Select a transition type and duration in the Transition section at the bottom of the window.
3. Press Cut (or the keyboard shortcut) to take the Preview source to Program instantly, or press Auto to execute the selected transition.
4. Q2Q's NDI Program output is available from the moment the app launches. Any downstream NDI receiver can connect to it by name.
Using ME engines
Open the ME 1 or ME 2 panel from the toolbar. Select a source for the ME input, then choose a shape mask. Adjust border, shadow, and crop as needed. Save your setup to one of the 8 presets. The ME output appears as ME 1 or ME 2 in the main source grid and can be switched to Program or Preview like any other source.
Keying (DSK / USK)
Open the DSK or USK panel. Set the fill input to the source you want to key (e.g. a graphics source). Choose alpha, luma, or chroma key mode and adjust clip/gain until the key is clean. Press On Air to activate the layer. DSK layers appear on top of the final program composite; USK layers are applied within the ME engine before the program mix.
RTMP streaming
Open the Output panel and select RTMP. Enter the stream URL and stream key from your platform (YouTube Studio, Twitch Dashboard, etc.), then click Start Stream. Q2Q encodes program video as H.264 via VideoToolbox and audio as AAC — no separate encoder or OBS instance is needed.
Saving and loading a show
Go to File → Save Show to write the current production state to a show file. This includes ME configurations, keyer settings, audio DSP parameters, and source assignments. Use File → Open Show to restore a saved show. The show name is shown in the top-right corner of the main window.
Keyboard Shortcuts
| Action | Shortcut |
|---|---|
| Cut to Preview | Space / Return |
| Auto transition | A |
| Preferences | ⌘, |
| Save Show | ⌘S |
| Open Show | ⌘O |