Skip to content

bhaptics/tact-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

npm license CI Code Quality npm downloads

bHaptics Web SDK

Web-based haptic control library for bHaptics devices. A variety of haptic events can be played in your browser.

  • Written in TypeScript
  • Supports ESM

โœจ Features

๐ŸŽฎ Play events

Play haptic event exported from bHaptics developer portal

video

๐Ÿ”ต Dot mode

Play single-frame feedback with intensity-mapped dot values

dot-mode

๐Ÿงญ Path mode

Play directional feedback across the surface of a device

path-mode

๐Ÿ“ฆ Installation

npm install tact-js
# or
yarn add tact-js
# or
pnpm add tact-js

๐Ÿš€ Quick Start

Prerequisite

  1. Download and install the bHaptics Player
  2. Make sure the Player is running
  3. Connect your bHaptics Device to the Player
  4. Ensure the Player version is vX.Y.Z or later

Usage

Initialize the library

import Tact from 'tact-js';

// Initialize the library
Tact.init({
  appId: '<APP_ID>',
  apiKey: '<API_KEY>',
});

Play an event

import Tact, { PositionType } from 'tact-js';

// Play an event
Tact.play({ eventKey: key });

Play dot mode

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
});

Play path mode

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
});

๐Ÿ“š API

Tact.init(params: InitParams): void

  • 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")

Tact.play(params: PlayParams): void

  • 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

Tact.playDot(params: PlayDotParams): void

  • Play a dot
  • params:
    • position: PositionType - Position type
    • motorValues: number[] - Motor values
    • duration?: number - Duration in milliseconds

Tact.playPath(params: PlayPathParams): void

  • 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

๐Ÿ›  Troubleshooting

Vite

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'],
  },
  // ...
});

Demo

  • Online demo: tact-js
  • Local demo: Check the demo/ directory for a minimal setup example

๐Ÿชช License

bHaptics License

Packages

No packages published

Contributors 7