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 IDapiKey
: string - Your API keyremote
?: 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 keystartTime
?: number - Start time in millisecondsintensityRatio
?: number - Intensity ratiodurationRatio
?: number - Duration ratiooffsetX
?: number - Offset XoffsetY
?: number - Offset Y
- Play a dot
params
:position
: PositionType - Position typemotorValues
: number[] - Motor valuesduration
?: number - Duration in milliseconds
- Play a path
params
:position
: PositionType - Position typex
: number[] - X valuesy
: number[] - Y valuesintensity
: number[] - Intensity valuesduration
?: 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