Skip to content

phil426/podswitch

Repository files navigation

PodSwitch — The Podcast Auto Camera Switcher

PodSwitch automatically switches OBS Studio scenes based on who's speaking — just like the RØDECaster Video Auto Switching feature, but for everyone.

License: MIT OBS Studio 30+ Platform


✨ Features

Feature Description
Mic → Camera Mapping Link any OBS audio source to any OBS scene
Priority Levels Low / Medium / High bias — give your host cam priority
Responsiveness Modes Relaxed 🐢 / Neutral / Fast ⚡ EMA smoothing
Hold Time Minimum time a camera stays active (no flickering)
Noise Gate Per-mic dBFS threshold — ignore background noise
Fallback Scene Auto-switch to a wide shot when no one speaks
Fade / Cut Transition Optional fade with configurable duration
Live VU Meters Real-time audio levels in the OBS dock
One-click Toggle Big green ON button in the dock — just like the RODECaster

🎬 How It Works

Every ~10ms, PodSwitch:

  1. Reads the RMS audio level of each mapped microphone
  2. Applies Exponential Moving Average smoothing (controlled by Responsiveness)
  3. Adds a priority bias (±6 dB) to favour preferred cameras
  4. Switches to the loudest speaker's scene — respecting the hold time
  5. Falls back to a wide shot when everyone goes silent

📸 UI Overview

Dock Panel

┌─────────────────────────────────┐
│  🎥 PodSwitch             [ON] │
├─────────────────────────────────┤
│  Mic 1 ───┤██████░░░░│→ Host   │
│  Mic 2 ───┤███░░░░░░░│→ Guest  │
│  Mic 3 ───┤░░░░░░░░░░│→ Cam C  │
├─────────────────────────────────┤
│  Responsiveness: [Neutral  ▼]  │
│  [⚙ Open Settings]             │
└─────────────────────────────────┘

Settings Dialog — map each mic to a scene, set thresholds, pick responsiveness, hold time, fallback scene, and transition type.


🔧 Requirements

  • OBS Studio ≥ 30.0.0
  • A C++17 compiler (MSVC 2019+ / Xcode 14+ / GCC 11+)
  • CMake ≥ 3.16
  • Qt 6 (or Qt 5 fallback) — bundled with OBS

🚀 Building

git clone https://github.com/phil426/podswitch.git
cd podswitch

cmake -B build -S . \
  -DCMAKE_BUILD_TYPE=Release \
  -Dlibobs_DIR=/path/to/obs-studio/build

cmake --build build --config Release
cmake --install build

The plugin is auto-installed to your OBS plugins directory.


🎙️ Quick Start

  1. Open OBS → find the PodSwitch dock (View → Docks)
  2. Click ⚙ Open Settings
  3. Add a mapping per speaker:
    • Audio Source → microphone
    • Scene / Camera → OBS scene to cut to
    • Priority → High for close-ups, Low for wide shot
    • Threshold → silence gate (default −40 dB)
  4. Set a Fallback Scene (e.g. wide shot)
  5. Hit ● Enable — PodSwitch takes over 🎉

📁 Project Structure

podswitch/
├── CMakeLists.txt
├── buildspec.json
├── src/
│   ├── plugin-main.cpp         OBS entry point
│   ├── audio-monitor.cpp/h     Audio tap → dBFS callback
│   ├── switch-engine.cpp/h     EMA + priority + hold time logic
│   ├── config.cpp/h            JSON persistence
│   ├── utils.h                 dBFS math + EMA helper
│   └── ui/
│       ├── dock-widget.cpp/h   OBS dock panel
│       └── settings-dialog.cpp/h  Settings UI
└── data/locale/en-US.ini

📄 License

MIT © 2026 phil426

Inspired by the RØDECaster Video Auto Switching feature.

About

PodSwitch — OBS podcast auto camera switcher. Automatically cuts to the active speaker, inspired by the RØDECaster Video Auto Switching feature.

Topics

Resources

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors