Default Bluetooth (BLE) broadcast name is
MEL-############, where ############ - are the 6-byte device BLE MAC address. All command and scripting integrations are handled through the single production API:
HapticsConnect API: https://api.getmelody.io
📘 Glossary
General Terms
| Term | Meaning |
|---|---|
| HDC | Haptics Direct Control |
| HSC | Haptics Script Control |
| HPS | Haptics Points Stream |
| HLC | Haptics Loop Control |
| OTA | Over‑the‑air update |
| OTP | One‑time password |
| GATT | Generic Attribute Profile (BLE) |
Device Components
| Component | Description |
|---|---|
| Stroker | Linear actuator providing haptic motion |
| Hall sensor | Magnetic position sensor used for calibration |
| Encoder | Motor feedback sensor for positional accuracy |
| PCB | Printed circuit board, contains temperature and thermal safety sensors |
Position Terminology
| Concept | Description |
|---|---|
| Position (angle) | Stroker position expressed in radians (0 to 2π) |
| Position (ranged) | Normalized position (0–100% or 0–10000 points) |
| Calibration limits | Physical min/max detected during hardware calibration |
| User limits | Software range bound within calibration limits |
| Position shift | User defined offset relative to calibrated bounds |
Velocity Terminology
| Concept | Description |
|---|---|
| Velocity (angle) | Stroker angular velocity (radians/second) |
| Velocity (ranged) | Normalized velocity (0–100% of max hardware speed) |
| Max velocity | Hardware maximum safe velocity |
| User max velocity | Software enforced speed cap |
Playback States
| State | Meaning |
|---|---|
| IDLE | No active playback |
| MANUAL | Device controlled via physical buttons |
| WIFI | Controlled via WiFi API |
| BLE | Controlled via BLE API |
📊 Data Ranges
| Parameter | Type | Range | Units |
|---|---|---|---|
| Position (ranged) | uint16/uint32 | 0–10000 | points (0.01% resolution) |
| Position (angle) | float | 0 → 2π | radians |
| Velocity (ranged) | uint8/uint32 | 0–100 | % of max |
| Velocity (angle) | float | varies | rad/s |
| Battery level | uint8 | 0–100 | % |
| Battery voltage | float | 10.0–15.0 | V |
| Temperature | float | varies | °C |
| Time | uint16/uint32/uint64 | varies | milliseconds |
📡 Device Modes
Active Control Modes
Playback mode is selected using the physical mode button on the device.| Mode | Requirements | Behavior |
|---|---|---|
| WiFi Mode | Requires bearer device token from HapticsConnect server | Device controlled through WiFi API |
| BLE Mode | Nearby BLE pairing | Device controlled directly through BLE commands |
| Offline Mode | No connectivity | Local pattern and script playback inside the app |
Service / Maintenance Modes
Stroker motion is disabled during service modes for safety.| Service Mode | Description |
|---|---|
| CALIBRATION | Detects lowest and highest mechanical bounds, identifies hall sensor positions. |
| OTA Update | Firmware update initiated from the device menu or WiFi API. Requires explicit user confirmation. |
| OTP Retrieval | Generates short‑lived one‑time secrets during onboarding or device binding. Initiated from device or API. |
🎮 Playback Protocols
🎛 HDC (Haptics Direct Control)
Supported Transports: WiFi, BLEDirect position control where you define a target position and movement duration. Best for:
- Manual control
- UI‑driven or interactive applications
- Simple positional motion
🎵 HSC (Haptics Script Control)
Supported: WiFi onlyDevice downloads a motion script from a remote URL, while the server orchestrates start, stop, pause, and seek. Best for:
- Pre‑recorded video or VR content
- Scripted and synchronized playback
📈 HPS (Haptics Points Stream)
Supported Transports: WiFi, BLEStream timestamped motion points; the device calculates velocity using time deltas between sequential points. Requirements: Min 2 points to compute motion velocity. Best for:
- Real‑time streaming experiences
- Dynamically generated motion content
- External timeline drivers
🔁 HLC (Haptics Loop Control)
Supported Transports: WiFi, BLEAutomatic stroking loop inside a defined motion range at a set velocity. Best for:
- Continuous rhythmic sensation loops
- Automatic repeating motion patterns
✅ API Coverage Summary
| Feature | WiFi API | BLE API |
|---|---|---|
| Device information | ✓ | ✓ |
| Device status | ✓ | ✓ |
| Stroker status | ✓ | ✓ |
| Stroker settings | ✓ | ✓ |
| WiFi setup | ✓ | ✓ |
| OTP token | ✓ | ✓ |
| HDC control | ✓ | ✓ |
| HSC control | ✓ | ✗ |
| HPS control | ✓ | ✓ |
| HLC control | ✓ | ✓ |
| Debug information | ✓ | ✗ |
| Server connection | ✓ | ✗ |
| Calibration info | ✓ | ✗ |
🔍 WiFi vs BLE Protocol Differences
Command Size & Encoding
- WiFi API uses 32/64-bit values (flexible numeric types, larger payloads)
- BLE API uses packed binary (optimized for MTU limits of ~512 bytes)
- HDC Command
WiFi: 2×uint32 (8 bytes)BLE: 2×uint16 (4 bytes, packed binary) - HPS Point Stream
WiFi: uint32 pos + uint64 timeBLE: uint16 pos + uint32 time (6 bytes, packed)
Position Range
- Both transports use
0–10000ranged position values - Resolution: 0.01% of full motion range
- BLE uses
uint16(max65535, enough for range) - WiFi uses 32-bit values for protocol flexibility
Time Limits by Protocol
| Protocol | WiFi | BLE |
|---|---|---|
| HDC Time | uint32 (≈ 65 years max) | uint16 (≤ 65535 ms, ≈ 65 seconds) |
| HPS Stream Time | uint64 (unlimited timeline) | uint32 (≤ 49 days continuous stream) |
🧠 Ecosystem Philosophy
Melody was designed to be:- Universal – partner devices behave consistently via shared command schemas
- Seekable – timeline‑driven playback state control
- Smooth – motion interpolation derived automatically from point streams
- Secure – protected by JWT bearer authentication as defined in OpenAPI
Developers implement once, creators script once — every supported device feels in sync.
Next: explore how to upload scripts, start sessions, and stream motion in the dedicated API reference tabs.