Skip to content

Repository files navigation

PulseMonitor

Reads heart rate from an Arduino pulse sensor over USB and puts it on screen as a live overlay, so a BPM readout and waveform could be shown on stream while playing a game.

Written in 2016. Archived to GitHub in 2026.

This is old code, unfinished, and probably buggy. It was a quick side project that I lost interest in and never polished, and it's archived here as-is.

The overlay composited over Alien: Isolation, showing the waveform and BPM under the game's UI

An example of it overlayed onto Alien: Isolation. See video of it in action: https://www.youtube.com/watch?v=4SECn4RsA4Y

What it Does

There are two windows. The main one has a connect button, large readouts for BPM, inter-beat interval and raw signal, and a scrolling waveform of the raw sensor value.

The desktop window with no sensor connected

The second (not shown) is the overlay. It has no window chrome and sits on a black background, and shows just the BPM figure next to a heart icon along with the waveform. It's meant to be picked up in OBS as a window capture and composited over gameplay by keying out the black background.

Hardware

The sensor is a PulseSensor on an Arduino, connected over USB. The Arduino streams newline-terminated readings at 115200 baud, one reading per line, where the first character tags what the number means:

Prefix Meaning
S Raw sensor signal
B Beats per minute
Q Inter-beat interval, in milliseconds

So a line reads like B72 or S512. This is the format emitted by the PulseSensor "Getting Started" Arduino sketch, which is not included here.

The port and baud rate are hardcoded to COM5 and 115200 in Core/PulseSensor.cs. There's no UI for changing them, so you'd need to edit that to match wherever your board enumerates.

Building

Open the solution in Visual Studio and build. It targets .NET Framework 4.5.2 and WPF, so it's Windows-only.

The 4.5.2 targeting pack often isn't installed on current machines. If the build fails with MSB3644, either install that pack or retarget without editing the project:

msbuild PulseMonitor.csproj /p:Configuration=Debug /p:TargetFrameworkVersion=v4.8

It builds and runs clean against 4.8. Without a sensor attached you'll get the window above, and connecting will fail.

About

WPF app that reads heart rate from an Arduino pulse sensor over USB and shows it as a live OBS overlay while gaming

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages