FunPlayer

July 20, 2025 ยท View on GitHub

Synchronized Media & Haptic Playback Platform

A modern, high-performance media player that synchronizes audio/video content with haptic feedback devices through the Buttplug.io ecosystem. Built with React and optimized for real-time performance, supporting everything from simple media playback to complex multi-channel haptic orchestration.

License: CC BY-NC-SA 4.0

๐Ÿ—๏ธ Project Structure

This repository contains two separate but related packages:

๐Ÿ“ฆ React Package (/funplayer/)

  • npm package: funplayer-react
  • Purpose: Pure React component library for web integration
  • Builds: Normal library + standalone embed version
  • Target: Web developers, direct browser integration

๐Ÿ“ฆ Streamlit Package (/streamlit_funplayer/)

  • PyPI package: streamlit-funplayer
  • Purpose: Python/Streamlit wrapper for the React component
  • Target: Python developers, data scientists, rapid prototyping

๐Ÿš€ Quick Start

Choose your integration path:

For React/JS developers:

npm install funplayer-react

โ†’ See /funplayer/README.md for React usage

For Python/Streamlit developers:

pip install streamlit-funplayer

โ†’ See /streamlit_funplayer/README.md for Python usage

โœจ Key Features

  • ๐ŸŽฏ Multi-format support: Video, audio, streaming (HLS/DASH)
  • โšก Real-time haptic sync: 120Hz refresh rate with funscript support
  • ๐Ÿฅฝ VR ready: Native browser VR support (Quest, Pico)
  • ๐ŸŽฎ 100+ devices: Compatible through Buttplug.io ecosystem
  • ๐ŸŽจ Professional UI: Real-time visualization and adaptive theming
  • ๐Ÿ”ง Modular architecture: Event-driven, decoupled components

๐Ÿ› ๏ธ Development

Repository Layout

๐Ÿ“ฆ FunPlayer/
โ”œโ”€ ๐Ÿ“„ funplayer.toml          # Version source of truth
โ”œโ”€ ๐Ÿ“„ deploy.py               # Automated dual-package deployment
โ”œโ”€ ๐Ÿ“‚ funplayer/              # React package (funplayer-react)
โ”‚  โ”œโ”€ ๐Ÿ“„ package.json
โ”‚  โ”œโ”€ ๐Ÿ“‚ src/                 # React components & business logic
โ”‚  โ”œโ”€ ๐Ÿ“‚ build/               # Normal build output
โ”‚  โ””โ”€ ๐Ÿ“‚ build-embed/         # Embed build output
โ””โ”€ ๐Ÿ“‚ streamlit_funplayer/    # Streamlit package
   โ”œโ”€ ๐Ÿ“„ pyproject.toml
   โ”œโ”€ ๐Ÿ“‚ streamlit_funplayer/
   โ”‚  โ””โ”€ ๐Ÿ“‚ frontend/         # Streamlit React wrapper
   โ””โ”€ ๐Ÿ“„ funplayer.py         # Demo app

Build & Deploy

# Development
cd funplayer && npm start                    # React dev server
cd streamlit_funplayer && streamlit run funplayer.py  # Streamlit demo

# Production deployment (both packages)
python deploy.py                             # Full deployment
python deploy.py --dry-run                   # Test without publishing

๐Ÿ“‹ Requirements

  • Intiface Central for device connectivity
  • Compatible haptic device (see Buttplug.io device list)
  • HTTPS connection for device access in production environments

๐Ÿ“– Documentation

๐Ÿ“„ License

Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International

For commercial licensing, contact: bferrand.math@gmail.com


Built with โค๏ธ using React, Video.js, Buttplug.io, and Streamlit