Web-based haptic control library for bHaptics devices. A variety of haptic events can be played in your browser.
- Written in TypeScript
- Supports ESM
Play haptic event exported from bHaptics developer portal
Play single-frame feedback with intensity-mapped dot values
Play directional feedback across the surface of a device
npm install tact-js
# or
yarn add tact-js
# or
pnpm add tact-js
- Download and install the bHaptics Player
- Make sure the Player is running
- Connect your bHaptics Device to the Player
- Ensure the Player version is vX.Y.Z or later
import Tact from 'tact-js';
// Initialize the library
Tact.init({
appId: '<APP_ID>',
apiKey: '<API_KEY>',
});
import Tact, { PositionType } from 'tact-js';
// Play an event
Tact.play({ eventKey: key });
import Tact, { PositionType } from 'tact-js';
// Play a dot
Tact.playDot({
position: PositionType.Vest, // e.g., Vest, Head, ForearmL, ForearmR etc.
motorValues: [100, 0, ... , 0], // 0 ~ 100
});
import Tact, { PositionType } from 'tact-js';
// Play a path
Tact.playPath({
position: PositionType.Vest, // e.g., Vest, Head, ForearmL, ForearmR etc.
x: [0.4, 0.42, ... , 1], // 0 ~ 1
y: [0.5, 0.52, ... , 1], // 0 ~ 1
intensity: [100, 89, ... , 49], // 0 ~ 100
});
- Initialize the library
-
params
:-
appId
: string - Your application ID -
apiKey
: string - Your API key -
remote
?: string - (Optional) Remote IP address and Port number of the bHaptics Player (ex. "192.168.0.123:15881")
-
- Play an event
-
params
:-
eventKey
: string - Event key -
startTime
?: number - Start time in milliseconds -
intensityRatio
?: number - Intensity ratio -
durationRatio
?: number - Duration ratio -
offsetX
?: number - Offset X -
offsetY
?: number - Offset Y
-
- Play a dot
-
params
:-
position
: PositionType - Position type -
motorValues
: number[] - Motor values -
duration
?: number - Duration in milliseconds
-
- Play a path
-
params
:-
position
: PositionType - Position type -
x
: number[] - X values -
y
: number[] - Y values -
intensity
: number[] - Intensity values -
duration
?: number - Duration in milliseconds
-
If you are using Vite, you may need to add the following to your vite.config.js
file:
export default defineConfig({
// ...
optimizeDeps: {
exclude: ['tact-js'],
},
// ...
});
- Online demo: tact-js
- Local demo: Check the
demo/
directory for a minimal setup example
bHaptics License