Skip to content

A Beat Saber custom counter that displays your heart rate in game.

License

Notifications You must be signed in to change notification settings

qe201020335/HRCounter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HRCounter

A Beat Saber custom counter that displays your heart rate in-game.

HR Counter 2.0

Supports BLE HR Monitor, Apple Watch, Fitbit, Galaxy Watch, WearOS and more! Check out instructions on HR monitors.

It also supports anything that Pulsoid, HypeRate, YUR Desktop App / MOD support! Check out instructions on data sources.

It can even pause the game for you if your heart is beating too fast!

Requirements

These can be downloaded from BeatMods or using Mod Assistant (Recommended!).

Alternatively, you can also download them from their own site.

  • BSIPA v4.2.0+
  • BSML v1.6.0+
  • SiraUtil v3.0.0+
  • Counters+ v2.0.0+ (Recommended Optional, install if you want to use Counters+ custom counter system)
  • Websocket-sharp (Optional, install if you want to use Pulsoid, HypeRate or FitbitHRtoWS)
  • YUR Mod (Optional, install if you want to enable YUR Mod support)
  • YUR Desktop App (Optional, install if you want to enable YUR App support)

HOW TO INSTALL

Important

Ensure all the required mods are working correctly before installing this mod!

First-Time Install/Configure

Auto Config Generator for Pulsoid and HypeRate

  1. Head over to the Config Generator and download the mod with config included.
  2. Extract the files into your Beat Saber game directory.
  3. Run the game and read HOW TO USE if you don't know how to use it.

Manual Config Editing

Important

Remember to exit the game first before editing config files.

  1. Download the latest release and extract the files into your Beat Saber game directory.
  2. Run the game once
  3. Depending on your devices, follow the instructions below to configure the auto-generated config file.
  4. Run the game and read HOW TO USE if you don't know how to use it.

The config file is at Beat Saber/UserData/HRCounter.json. You can use notepad to open and edit it.

Update from Old Versions

  1. Download the latest release and extract the files into your Beat Saber game directory.
  2. Choose Overwrite if asked.
  3. Done!

HOW TO USE

  1. Install or update it first. Instructions above.
  2. If you are using Counters+, enable this counter in Counter+'s counter configuration page
  3. Check out the full configuration page of the mod under the "HRCounter" button in the main menu mods section.
  4. Toggle on Auto Pause in the "Health & Safety" tab if you want the mod to pause the game for you. Also, set the Pause Heart Rate for yourself!

Note

Please open an issue if you have any problem using this mod or found a bug.

DATA SOURCES

Pulsoid

Note

If this is the first time configuring, check out Config Generator to download the mod with config included.

Pulsoid Token (Recommended)

  1. Get you self a token HERE for free or HERE if you are a BRO.
  2. Keep that token in a safe place because it will not expire in a short time. You can always reuse the token in the future.
  3. Paste the token in the config file as below and set the value of DataSource to Pulsoid Token. pulsoid token config screenshot

HypeRate

Note

If this is the first time configuring, check out Config Generator to download the mod with config included.

  1. In the HypeRate app on your phone or watch, there is the session ID, which is also the few hex digits at the end of your overlay link.
  2. Change the value of HypeRateSessionID to yours in the config file.
  3. Set the value of DataSource to "HypeRate".

For example, if your overlay link is https://app.hyperate.io/12ab, then your session ID is 12ab and the config will look like "HypeRateSessionID": "12ab"

Fitbit

Pulsoid Support (Recommended!)

Check if your device supports Pulsoid! If so, follow the instructions for Pulsoid above.

FitbitHRtoWS

For support on how to set up FitbitHRtoWS, please ask for help in 200Tigersbloxed's Discord server

  1. Follow the instruction on FitbitHRtoWS and set up your heart rate broadcast.
  2. Change the value of FitbitWebSocket to "ws://YOUR_IP:YOUR_PORT/".
  3. Set the value of DataSource to "FitbitHRtoWS"

For example, "FitbitWebSocket": "ws://localhost:8080/", or "FitbitWebSocket": "ws://192.168.1.100:8080/",

YUR App

  1. Download and start YUR from Steam
  2. Set the value of DataSource to "YUR APP"

HR MONITORS

BLE Compatible HR Monitor

There are 2 options

  1. Download Pulsoid on your phone and set up heart rate broadcast. Then follow instruction for Pulsoid above.
  2. Download HypeRate on your phone and connect to your BLE device. Then follow instructions for HypeRate above

Apple Watch

  1. Download HypeRate on your iPhone and Apple Watch.
  2. Follow instructions for HypeRate above

WearOS Smart Watch

There are 3 options.

  1. Check if your WearOS device is supported by Pulsoid! If so, follow the instructions for Pulsoid above.
  2. Use Heart for Bluetooth on your watch and use it as a BLE heart rate monitor. Then follow the instructions for BLE Compatible HR Monitor above
  3. Install HypeRate on your watch, which you can download on the play store and follow instructions for HypeRate above

Depending on your watch, monitoring quality may not be as good as a dedicated heart rate monitor.

Galaxy Watch

  1. Use HeartRateToWeb and this app on your watch.
  2. Follow the instrucrion on their github page to set up heart rate broadcast. Make sure you download the first realease, the csharp one is bugged (filelock issue, and requires admin for no reason).
  3. Ensure your watch and computer are on the SAME network.
  4. Use from /hr endpoint in the OBS section of HeartRateToWeb instructions.
    • Enter the feedlink as http://YOUR_IP:YOUR_PORT/hr
    • For example "FeedLink": "http://192.168.1.100:6547/hr",

Others

When this mod is requesting hr data, it expects a string containing one of these:

  • A json contains key bpm with int type value and an optional key measured_at with string type value.
  • Only numerical digits. (Regex ^\d+$)

It needs to be accessible from an http/https link. Then set DataSource to "WebRequest" and the link.

More data sources and devices are planned to be supported. See below.

Open an issue if there is a device or data source you want me to support!

Settings

Most options can be changed in game.

Here is a table for all the setting options if you want to edit config file instead.

Field Type Default Description
ModEnable bool true DUH
LogHR bool false Whether the received HR data will be logged
DataSource string "YUR MOD" The data source you want to use to get hr data. Use Random if you want to test things
HypeRateSessionID string "-1" Session ID for HypeRate, it is also the the few hex digits at the end of your overlay link.
PulsoidWidgetID string "NotSet" Widget ID for HypeRate, it is also the last part of your widget link.
FitbitWebSocket string "ws://localhost:8080/" WebSocket Link for FitbitHRtoWS
FeedLink string "NotSet" Your pulsoid feed link
NoBloom bool false Do you want no bloom on the text?
Colorize bool true Whether the hr value will be colorized by the following 4 detail settings
HideDuringReplay bool true Hide this counter while in a replay
HRLow int 120 The lower bound heart rate for when the color gredient will start
HRHigh int 180 The upper bound heart rate for when the color gredient will end
LowColor string "#00FF00" (Green) The RGB color in hex that where your hr is not higher than HRLow. This is also the starting point of color gredient.
MidColor string "#FFFF00" (Yellow) The RGB color in hex which is the middle point of color gredient.
HighColor string "#FF0000" (Red) The RGB color in hex that where your hr is higher than HRHigh. This is also the end point of color gredient.
PauseHR int 200 The heart rate that game pause will be triggered
AutoPause bool false Whether the mod will pause the game if heart rate reaches PauseHR
IgnoreCountersPlus bool false Ignore whether Counters+ is installed, ignore it to allow 2 hr counters to present at the same time
DebugSpam bool false Only effective in Debug build, toggle spamming of debug message in logs
StaticCounterPosition 3D Vector (0, 1.2, 7) Location of the standalone static counter, has no effect on the counters+ counter

Data Sources To Be Supported

Open an issue if there is a device or data source you want me to support!