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.
๐๏ธ 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
- React Integration:
/funplayer/README.md - Streamlit Integration:
/streamlit_funplayer/README.md - Architecture:
/development_guidelines.md
๐ 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