-
Notifications
You must be signed in to change notification settings - Fork 8
NDI
EmoTracker supports NDI® (Network Device Interface) for broadcasting your tracker layout as a live video source on your local network. This lets you pull the tracker into OBS, vMix, Streamlabs, or any other NDI-capable application without screen capture, window cropping, or chroma keying.
NDI is a royalty-free standard for sending high-quality, low-latency video — including a transparent alpha channel — between devices on the same network. When active, EmoTracker advertises a video source on the local network that any NDI receiver can connect to.
NDI runs on top of mDNS for source discovery and direct TCP/UDP for the video payload. Sender and receiver only need to be on the same network segment; nothing leaves the local network.
You need an NDI runtime installed on the machine running EmoTracker. There are two common ways to get it, depending on what receiver you plan to use.
If you intend to receive the feed in OBS, install DistroAV — the actively-maintained NDI plugin for OBS Studio (the successor to the older obs-ndi plugin). DistroAV's installer offers to install the NDI Runtime alongside the plugin, covering both prerequisites in one step.
- Download: DistroAV releases
- During install, accept the prompt to install the NDI Runtime as well.
If you are not using OBS, install the NDI Tools package directly from the NDI website. NDI Tools includes the NDI Runtime plus utilities like NDI Studio Monitor (useful for previewing your EmoTracker feed independently of OBS).
On macOS, the NDI Runtime is also bundled with the NDI Scan Converter utility from NDI Tools.
The NDI runtime does not need to be installed on the machine receiving the video feed — only on the machine running EmoTracker.
NDI is always enabled — there is no on/off switch. When a pack that defines a Broadcast Layout is loaded, EmoTracker creates a hidden off-screen window that renders and transmits the layout as an NDI source. The NDI logo in EmoTracker's status bar lights up green to confirm a receiver is connected.
NDI requires that the loaded pack defines a Broadcast Layout. If the pack has no broadcast layout, no NDI source is created. See Authoring Layouts for details on adding one to a pack.
Each open EmoTracker window broadcasts its own NDI source, named EmoTracker Broadcast 1, EmoTracker Broadcast 2, and so on, so multi-window setups produce multiple feeds the receiver can pick from independently.
NDI has no in-app settings UI. Options are configured by editing application_settings.json in your EmoTracker data directory:
| Platform | Path |
|---|---|
| Windows | %USERPROFILE%\Documents\EmoTracker\application_settings.json |
| macOS | ~/Documents/EmoTracker/application_settings.json |
| Linux | ~/Documents/EmoTracker/application_settings.json |
If your Documents folder does not exist or is not writable, EmoTracker falls back to %APPDATA%\EmoTracker\ (Windows) or ~/.config/EmoTracker/ (macOS / Linux).
| Key | Type | Default | Description |
|---|---|---|---|
enable_background_ndi |
boolean | true |
When true, the NDI source runs in the background even when the Broadcast View window is closed. When false, the source is only active while the Broadcast View window is open. |
ndi_frame_rate |
number | 30 |
Target frame rate for the NDI output in frames per second. Only written to the file if greater than 1. |
ndi_output_scale |
integer | 1 |
Integer scale multiplier applied to the broadcast layout before sending. 2 doubles the output resolution. Only written to the file if greater than 1. |
Example:
{
"enable_background_ndi": true,
"ndi_frame_rate": 60,
"ndi_output_scale": 2
}Edit the file while EmoTracker is closed, then relaunch for changes to take effect.
- In your OBS scene, click the + button in the Sources panel.
- Choose NDI™ Source (added by DistroAV — see Prerequisites).
- Name the source something memorable (e.g. EmoTracker) and click OK.
In the source properties dialog, set Source name to EmoTracker Broadcast 1 (or EmoTracker Broadcast 2, etc., for additional windows).
The dropdown also shows your computer's hostname after the source name — that is normal. Search the list for EmoTracker if you do not immediately see it.
DistroAV exposes several knobs that affect how the feed is decoded. The defaults are tuned for low-latency video and do not preserve the alpha channel, which makes EmoTracker's transparent layout render as a solid black/dark rectangle in your scene. Adjust as follows:
| Property | Recommended value | Why |
|---|---|---|
| Latency | Normal (Safe) | The "Lowest" / lower-latency modes drop the alpha channel during decode. Normal (Safe) is required for transparency to reach the OBS compositor. |
| Bandwidth | Highest | Tracker layouts contain crisp pixel-art icons. The highest bandwidth setting preserves them losslessly. |
| Behavior | (default) | Affects how the source handles disconnects/reconnects. The default is fine for tracker use. |
| Sync | (default) | Audio sync mode. EmoTracker's NDI source has no audio, so this is unused. |
Click OK to apply. Your tracker layout should now appear with proper transparency — only the items, map markers, and text are visible; the empty space around them shows your underlying scene.
If your pack's broadcast layout looks slightly washed out compared to the in-app view, OBS's Color Correction filter (Right-click source → Filters → +) can compensate. Most packs render correctly out of the box; this is only needed for packs that target a specific in-app contrast that the NDI codec rounds.
The NDI logo does not appear in the status bar : Confirm the NDI runtime is installed (DistroAV's installer can do this for you). Confirm the loaded pack defines a broadcast layout — if it does not, no NDI source is created.
The source does not appear in OBS / vMix : Confirm EmoTracker and your receiving application are on the same local network segment. Some routers block mDNS/multicast traffic between Wi-Fi and wired connections — try connecting both machines to the same network type. On Windows, also confirm the NDI service is allowed through Windows Firewall.
The source appears but shows a solid black or dark rectangle (no transparency) : This is the most common issue with DistroAV / obs-ndi 6+. Open the NDI Source properties in OBS and set Latency to Normal (Safe). The lower-latency modes drop the alpha channel during decode, so transparent regions render as opaque black.
The source appears but shows a black frame (entirely)
: The loaded pack may not define a broadcast layout, or the Broadcast View has never been rendered. Try opening the Broadcast View window once if enable_background_ndi is false.
NDI worked before but stopped after a system update : The NDI runtime may have been uninstalled. Re-run the DistroAV installer and accept the NDI Runtime prompt, or re-install NDI Tools from ndi.video/tools.
Multiple EmoTracker sources show up and I'm not sure which to pick
: Each open EmoTracker window advertises its own source (EmoTracker Broadcast 1, EmoTracker Broadcast 2, …). The number matches the window's open order in your current session. Close windows you don't intend to broadcast, or pick the source whose number lines up with the window you want.
- Installation
- Installing and Loading Packages
- Item Types and Mouse Controls
- Map Locations
- Map Location Colors
- Saving and Loading
- Multi-Tab and Window
- Autotracking
- NDI Broadcasting
- Twitch Chat HUD
- Note Taking
- Voice Control
- Keyboard Shortcuts