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:
- Neue Text (GDI+) Source anlegen
- Name:
HeartRate-Display - Default-Text:
❤ -- BPM - Font: groß und gut lesbar (z.B. 48pt weiß mit schwarzem Outline)
- 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:
- Im Action-Editor oben rechts auf
Settings(oder Rechtsklick im Actions-Pane) - Queue:
Heart Rate Queue(neu anlegen falls nicht vorhanden) - Concurrent:
Disabled(nur eine Instanz gleichzeitig) - 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:
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 30damit du keine 0 BPM anzeigst
Quellen¶
- Heart Rate Trigger: setup.md
- Set GDI Text: https://docs.streamer.bot/api/sub-actions/obs-studio/sources/set-gdi-text