Zum Inhalt

Heart Rate in OBS anzeigen (Live-Text-Source)

OBS-Text-Source updated bei jedem Heart-Rate-Pulse mit der aktuellen BPM. Klassisches Stream-Overlay.

Voraussetzung: HypeRate oder Pulsoid verbunden (siehe setup.md) + OBS-Verbindung Patterns: Heart Rate Trigger + Set GDI Text Sub-Actions: 1

OBS-Source vorbereiten

In OBS:

  1. Neue Text (GDI+) Source anlegen
  2. Name: HeartRate-Display
  3. Default-Text: ❤ -- BPM
  4. Font: groß und gut lesbar (z.B. 48pt weiß mit schwarzem Outline)
  5. Position: Ecke des Streams

Action: [Event] Heart Rate Display

Trigger

Triggers-Tab → + Add Trigger → einer der beiden: - Integrations → HypeRate.io → Heart Rate Pulse - Integrations → Pulsoid → Heart Rate Pulse

Min/Max: leer (jedes Pulse-Event)

Sub-Action 1: Set GDI Text

Pfad: OBS Studio → Sources → Set GDI Text

Feld Wert
Connection Default
Scene (leer = alle Scenes mit der Source)
Source HeartRate-Display
Text ❤ %heartRate% BPM

Action-Tree

[Event] Heart Rate Display  (Trigger: Heart Rate Pulse)
└── 1. Set GDI Text: HeartRate-Display = "❤ %heartRate% BPM"

Wichtig: Action-Queue

Da der Trigger 1× pro Sekunde feuert, separate Action-Queue verwenden:

  1. Im Action-Editor oben rechts auf Settings (oder Rechtsklick im Actions-Pane)
  2. Queue: Heart Rate Queue (neu anlegen falls nicht vorhanden)
  3. Concurrent: Disabled (nur eine Instanz gleichzeitig)
  4. Blocking: Enabled

So blockiert Heart-Rate nicht deine anderen Actions (Chat-Commands, OBS-Switches, etc.).

Erweiterung: Dynamisches Emoji je nach Range

In der Text-Property mit If/Else verschiedene Emojis:

[Event] Heart Rate Display
├── 1. If/Else: %heartRate% Less Than 60
│   ├── Set GDI Text: "😴 %heartRate% BPM"   (Resting)
│   └── Break
├── 2. If/Else: %heartRate% Less Than 100
│   ├── Set GDI Text: "💚 %heartRate% BPM"   (Normal)
│   └── Break
├── 3. If/Else: %heartRate% Less Than 140
│   ├── Set GDI Text: "💛 %heartRate% BPM"   (Active)
│   └── Break
├── 4. If/Else: %heartRate% Less Than 170
│   ├── Set GDI Text: "🔥 %heartRate% BPM"   (High)
│   └── Break
└── 5. Set GDI Text: "🚨 %heartRate% BPM"    (Critical)

Viewer sehen sofort an der Emoji-Farbe wie hoch dein Puls ist.

Erweiterung: Color-Source statt Text-Source

Statt Text-Source eine Color-Source als "Pulse-Indikator" einfärben:

HR-Range OBS Source Color
<60 #0000FF (Blau, Resting)
60-100 #00FF00 (Grün, Normal)
100-140 #FFFF00 (Gelb, Active)
140-170 #FF8800 (Orange, High)
>170 #FF0000 (Rot, Critical)

Sub-Action: OBS Studio → Sources → Set Color Source Color

[Event] Heart Rate Color
├── If/Else %heartRate% Less Than 60 → Set Color: #0000FF
├── If/Else %heartRate% Less Than 100 → Set Color: #00FF00
├── ... (Cascade)

Erweiterung: Audio-Beat-Sync

Sound-Datei mit Heartbeat-Sound bei jedem Pulse abspielen:

[Event] Heart Rate Display
├── 1. Set GDI Text: "❤ %heartRate% BPM"
└── 2. Play Sound: heartbeat-thud.mp3 (Volume 30%)

Vorsicht: bei 80 BPM ist das 80× pro Minute = störend. Eher nur bei hohen Werten:

2. If/Else: %heartRate% Greater Than 130
   └── Play Sound: heartbeat.mp3

Häufige Fallen

  • GDI Text-Update lagt — wenn OBS-Verbindung instabil, kommt's verzögert. Auto-Reconnect bei OBS aktivieren
  • Source-Name falsch — exakt wie in OBS schreiben (case-sensitive)
  • Action backlog — bei langsamem OBS kann sich Queue stauen. Blocking + Single-Concurrent verhindert das
  • HR-Drop auf 0 — wenn Watch nicht mehr misst, sendet HypeRate manchmal 0. Filter via If/Else %heartRate% Greater Than 30 damit du keine 0 BPM anzeigst

Quellen