HardStimV4 User Guide
HardStimV4 User Guide
User Guide
Introduction
HardStimV4 (HS4) is an e-stim and bdsm session software providing remote control features
and a built-in audio signal generator. It is a hobby project, so I will try to improve it from time
to time and also try to incorporate feedback.
I highly recommend joining the HardStim Community Discord server. It is an open place for
knowledge sharing and discussing HardStim related topics. In addition, new features,
releases and updates on the development status get announced here.
This guide is focused on using HS4. For details on download, installation and system
requirements head over to the Discord server.
Quickstart
Action Bar
Below the title you can find an action bar. It shows the current status of HS4 and provides a
set of actions depending on the current page and status. On the right side you can find a
menu with some additional items. Most importantly the Configuration page can be found
here.
Channel Controls
HS4 provides two independent e-stim audio generators which can be controlled via the
Channel 1 and Channel 2 sections.
On the left side you can pick a Mode. Each mode provides an individual e-stim pattern.
Some are smooth and others a bit harsher. Take your time to become familiar with the
different e-stim modes and sensations they provide. When changing modes HS4 will
automatically fade-in the intensity for a few seconds to avoid jolts due to switching signals.
On the right side you can find the Intensity slider. Increase or decrease the intensity by
dragging the slider left or right. If you prefer to use buttons to set the intensity value
gradually, head over to Menu ➔ Configuration ➔ Other ➔ Show +/- buttons on sliders.
The Adjust slider allows you to influence the feeling of the active mode. It is specific to each
mode and often related to the frequency. Try it out to get an idea what it does and how it
feels for different modes.
Hit the Stop button in the action bar to change intensity levels to zero for both channels.
In case you want to switch the audio device for outputting e-stim signals, switch to Menu ➔
Configuration ➔ E-Stim ➔ Output device.
Punishment
This panel is intended to create some more or less punishing sensations. Basically it
modifies the intensity levels for a specified amount of time.
● Boost - Increase the intensity for a given duration by the given offset:
Select the channels to be affected by clicking them in the Channels section on the
left. Change the Duration and Offset to your desired values. When hitting the Fire
button, the intensities will increase by the given offset and return to their previous
values after the specified duration. Note that only channels with an intensity set to
10% or higher are affected by this. Furthermore it is possible to reach intensity levels
higher than 100% using the boost feature.
● Shock - Set intensity to zero and restore its value for the given duration:
Select the channels to be affected by clicking them in the Channels section on the
left. Each channel selected here gets muted immediately. This also gets visualized by
blinking zeros in the intensity sliders. When deselecting a channel the intensity will
fade to its previous value.
Change the Duration to your desired value. When hitting the Fire button the intensity
gets set to its previous value immediately and returns to zero after the specified
duration.
Ongoing punishments can be aborted by clicking the Stop button in the action bar.
Functions
The function panel shows up to three different functions which can be configured in the
Configuration page. A function can be used to control, e.g., a vibrator or other computer
controllable toys. Read more about functions in the related sections.
Remote Sessions
The main feature of HS4 are remote sessions. A remote session synchronizes the
dashboards of two or more people. You can either be a driver or a rider in a remote session.
While the driver has access to the controls on the dashboard a rider cannot change anything
on his dashboard.
Create a Session
To create a remote session click the Connect button in the action bar. You might get asked
to set a username. This makes it easier for other users to identify you in session. Be aware
that there are no registered accounts. Anybody can pick any username as nobody else is
logged on with it already. You can also set your username via Menu ➔ Configuration ➔
Network ➔ Nickname.
In the next window you can create or join a remote session. Click Create to continue with the
session configuration.
You can decide if you want to be the driver of your session or if you want to join as a rider.
For now, enable the switch Set me as driver. You can also change this afterwards if
needed.
Below you can switch the Driver Access Key system on or off. The basic idea is to limit
driver rights to specific people. You should keep this option enabled unlike you want anybody
in your session to be able to become a driver.
You can use the two label fields to add some labels for the channels, telling others in the
session which body parts are intended to be stimulated using the respective channels.
Click Create to finish the session setup. If successful you are now connected to a session as
a driver. This is also shown in the action bar at the top.
● via Driver Link: Click Copy Driver Link to copy a link and share it.
This link can be used in two ways:
○ Open in a browser to join as driver and drive without having HS4 installed.
○ Join via HS4 app and be a rider, but have the right to become a driver (see
Join a Session).
● via Session ID: Click Copy ID to copy the session ID and share it.
This ID can be used to join the session via the HS4 app only (see Join a Session).
Join a Session
To join a remote session, click the Connect button in the action bar and select Join. Paste a
Driver Link or Session ID to connect to the respective session. In any case you will join the
session as a rider. Learn how to become a driver in sessions below.
If you have received a Driver Link you can also open it in your preferred browser to join a
session as driver without having to install/run HS4. However, sound output is only available if
you use the HS4 app to join sessions.
Become a Rider
If you are a driver in a session you can become a rider by opening the Remote Session
menu and click Become Rider.
Become a Driver
Only one user can be a driver in a remote session at a time. Whenever there is no driver in a
session every user who owns a Driver Access Key has the chance to become a driver. By
default following users own a Driver Access Key:
Users owning a Driver Access Key can share it with other users in the session via the
Remote Session menu by clicking the icon next to a user. Users owning a Driver Access
Key are marked with a icon.
To become a driver, open the Remote Session menu. If you are entitled to become a driver,
you can click Become Driver.
Safeword
HS4 provides a simple safeword function for remote sessions. Riders can enable the
Safeword button in the action bar to indicate that they do not want/can take any more. The
driver of the session gets notified about it by a red flashing safeword sign. Hover the
safeword sign to see which user(s) activated it.
It is up to the driver to decide on what to do in this situation. Usually it means the driver
should decrease the intensity level or even stop completely. It might be a good idea to clarify
and agree on a strategy for this situation beforehand.
There might be users who keep their safeword switch enabled for no reason. This is
annoying and makes it difficult for the driver to react to actual safeword indications from
other users. However, drivers have the option to mute safeword indication for selected users:
In result the safeword sign will no longer start flashing if the muted users enable their
safeword button.
Disconnect
Open the Remote Session menu and click Disconnect. If there is nobody left in a session,
it gets closed automatically after some time.
Custom Modes
To extend the set of available e-stim modes in HS4 users can create and share their own
modes using the built-in mode editor.
Editor Overview
Open the Mode Editor via Menu ➔ Mode editor.
Action Bar
The action bar provides following controls:
● A slider to change the Adjust value during testing (effect depends on your custom
mode design).
Workspace
On the left side you can find the Workspace. Here you can configure and connect basic
modules to define your custom mode. You can use the scrollbars or the middle button of
your mouse to move around.
Toolbox
On the right side the Toolbox can be found. It contains a Scope, which is basically a graph
to visualize the signals your mode creates. Below there is a set of available Modules which
you can add to your custom mode. In Mode Settings you can set whether you want your
mode to be available in your remote sessions.
General Concept
A mode in HS4 is basically a set of different virtual modules, some configuration and
connections between them.
Each module provides a specific functionality and a set of input and outputs, which can be
used to connect them to other modules. You can connect an output with an input by
right-clicking the output and then right-clicking the input. Repeat this process for an existing
connection to delete it.
Adjust
The Adjust module outputs a value within a configurable range and based on the Adjust
slider in the actionbar. When using your custom mode the adjust slider in the generator
panel can be used to change it. By default it will output a value between 0 and 1. Click the
field to change its range. You can have multiple Adjust modules with different ranges in your
custom mode.
You can connect its output to inputs of oscillators to adjust the respective values. The range
of the Adjust value has to be equal to or smaller than the expected input range of the
module is connected to.
Example: Oscillators expect a frequency between 0.1 and 100(Hz). A valid adjust range
would be 0.1 to 20, while 0 to 10 would be invalid. This situation gets indicated by a red
connection between input and output:
Oscillator
An Oscillator provides a waveform pattern which gets repeated at a given frequency and
amplitude.
Form
The form field sets the waveform the oscillator generates:
● sine
● triangle
● sawtooth
● square
● pulse (like square but pulse-width can be adjusted)
Frequency
This field sets the amount of repetitions per second. It can be set manually or dynamically by
connecting it to an output of another module. This way the actual frequency can be
modulated. Make sure that the source outputs values within the supported frequency range
(0.1 to 100 Hz).
Width
This field sets the width of the pulse waveform. It does not have any effect for other
waveforms. Width is set to 0 by default, which means that the waveform is high for half of the
cycle and then turns low for the other half. Below you can find some diagrams showing
different width values for a pulse waveform.
Amplitude
Change this field to set the strength of the output signal. By connecting it to another
module's output it can be modulated dynamically. Make sure that the source outputs values
within the supported frequency range (0 to 1).
Signal
The signal field outputs the generated signal and can be connected to an input of another
oscillator or carrier module. Click the signal field to adjust some output settings:
● low: A value between -100 and 100. It defines the value of the waveform at its lowest
possible point with amplitude set to 1.
● high: A value between -100 and 100. It defines the value of the waveform at its
highest possible point with amplitude set to 1.
● origin: When the amplitude is set or modulated to a value below 1, the waveform’s
value range gets reduced accordingly. This setting allows to set the origin of
waveform, which is equal to the output value for an amplitude of 0:
○ center (default): Set origin to the center between low and high value.
○ low: Set origin to equal low value.
○ high: Set origin to equal high value.
○ zero: Set origin to 0.
Technically it is possible to set low to a value greater than high. This can be used to invert
the output and generate, e.g., a reverse sawtooth signal.
Move the Adjust slider in the action bar and observe how the waveform changes for
different amplitude values. The upper and lower lines in the scope represent 1 and -1 values,
while the middle line equals zero.
Carrier
Every custom mode requires at least one carrier module to be able to output a signal. The
carrier module modulates the carrier signal according to its amp (Amplitude) input. This input
can be connected to one or more oscillator signals. Make sure to set the oscillators output
range to 0 to 1 or smaller. The diagram below demonstrates the modulation of the base
signal using a sawtooth signal.
Use the gain field to adjust the output strength. This is especially useful if you have more
than one oscillator connected to a carrier module or if you have multiple carrier modules in
your mode.
Within the editor a 700 Hz sine wave is used as for the carrier signal.
C:\Users\<Username>\AppData\Roaming\hardstimv4\user-modes
You can open this folder by clicking Menu ➔ Configuration ➔ E-Stim ➔ Modes ➔ View.
After adding or deleting files in this folder you should restart HS4.
Modes can be shared between users by simply sending mode files using your preferred
messenger etc.
Best practices
Especially if you want to share your modes with other users, you should have a look at the
following remarks:
● Avoid adding too many modules to your mode. Try to achieve the desired effect with
a small set of modules. Large amounts of modules could cause performance issues
on slower computers.
● Compare your custom mode’s perceived intensity with the default modes. Try to
adjust the output gain(s) to avoid large intensity differences between different modes.
Use the scope tool to check the output waveform. In general it should slightly touch
the upper and lower indicator lines.
● Try to find a short and meaningful filename for your mode. This allows drivers and
other users to get a rough idea of its effect and/or purpose.
Advanced Features
Some more advanced features can be configured in the Configuration page. Some features
might require some technical knowledge and have an experimental character.
Serial Devices
HS4 can connect to serial devices (e.g. Arduino) to send and receive commands. This
feature can be used to control toys like vibrators or bondage systems.
To set up a serial device, click the + button in the Serial Devices section and then click
configure next to the newly created device.
Following options should be set for each serial device:
● Serial Port - Sets the serial port the device is connected to.
● Baudrate - Sets the symbol rate (communication speed) used for communication.
Check the documentation of your device or (Arduino) code to set this field correctly.
There are some more advanced options, which can be set for a serial device:
● 5s Ping - If enabled HS4 will send a small payload to your device every 5 seconds.
The idea is to have some code running on your device, which sets it to a safe state
(e.g. bondage disabled) in case the ping messages no longer appear (HS4 or PC
crashed). You can specify the payload format and content in the corresponding fields.
Click OK to save and close the dialog. HS4 will try to establish a connection to your device
and also attempts to reconnect to it if connection gets lost.
Custom Functions
Each user can set up three individual functions which can be accessed from the dashboard
and are also accessible for the driver in remote sessions. A function is basically a
combination of a control element (e.g. a button), which shows up on the dashboard, and one
or more actions that get executed when interacting with the control elements.
Basic Configuration
Click the configure button next to Function 1, 2 or 3 to set it up. First select one of the
available UI Types:
● Switch - Can be toggled between two states and triggers separate actions when
doing so.
● Knob - Can be used to set a value (e.g. vibrator speed). It has a settable maximum,
minimum and step value. Whenever the knob gets changed the specified action gets
triggered.
Use the Function Label field to tell what the function is doing.
● Button
○ Push Label - A label that shows up in the center of the button.
○ Action ‘Press’ - Sets an action for the button getting pressed.
● Switch
○ Label ON button - A label that shows up in the ON part of the switch
(typically “ON”)
○ Label OFF button - A label that shows up in the OFF part of the switch
(typically “OFF ”)
○ Action ‘Switch on’ - Sets an action for the switch getting switched to ON
state
○ Action ‘Switch off’ - Sets an action for the switch getting switched to OFF
state
● Knob
○ Label UP button - A label that shows up in the UP part of the knob (typically
“UP ”)
○ Label DOWN button - A label that shows up in the DOWN part of the knob
(typically “DOWN ”)
○ Minimum value - The lower limit of the knob.
○ Maximum value - The upper limit of the knob.
○ Step: Increase/decrease amount.
○ Action ‘Chang’ - Sets an action for the knob value getting changed. It is
possible to incorporate the current knob value in the action (see below).
Action Configuration
Click the configure button for an action to set it up. There are multiple action types
available:
● Serial Command - Can be used to send a payload to a serial device. You have to
set up your serial device first (as described above) to be able to select it for Serial
Command actions.
Hover the configuration fields to read more details on how to use them. You can click Test to
execute the action for testing.
Cam Scene Control
HS4 does not provide webcam streaming but instead it is intended to be used with existing
video-chat software or websites. For more complex session setups it might be useful to have
more than one webcam and allow drivers to switch between them.
Note: This is an experimental feature and it might require some learning and experimenting
until everything is set up correctly.
2. Run OBS Studio and click Tools ➔ Websocket server settings and set a password
for the websocket connection. Ensure that the websocket server is enabled.
5. Select the OBS Virtual Camera as input device in your preferred video chat software
(e.g. Skype, Discord etc.).
6. In HS4 navigate to Menu ➔ Configuration and click configure next to “Cam Scene
Control”. Enable the Enabled switch, leave the Address field as is (default:
“localhost:4444”) and provide the same Password you have set in OBS Studio.
7. Click OK. Once HS4 establishes a connection to OBS Studio, you and remote
session drivers can switch between your OBS Studio scenes via the button provided
in the Functions panel on the dashboard.
Troubleshooting