How cknishan/muvesic works
Muvesic is a browser-based, on-device musical instrument. The main workflow starts a camera or camera-free input session, maps fingertip or pointer movement to musical notes and dynamics, and plays them through a browser synthesizer. Settings, rendering, lifecycle controls, recovery messages, and optional WebMCP tools round out the product. The README and tree establish these capabilities; sampled source did not include the application modules, so uncertain internal call links are omitted.
Main entry points: hand-tracker.js Hand tracker · motion-mapper.js Motion mapping · session.js Session lifecycle · controls.js Control bindings
Components 19
Session and controls
- App composition
dist/app.js - Session lifecycle
dist/app/session.js - Control bindings
dist/app/controls.js - Validated settings
dist/app/settings.js - WebMCP tools
dist/integrations/webmcp.js
Input and tracking
- Pointer and keys
dist/input/pointer-keyboard.js - Hand tracker
dist/tracking/hand-tracker.js - Tracking config
dist/tracking/config.js - Recovery messages
dist/tracking/errors.js
Musical mapping
- Motion mapping
dist/music/motion-mapper.js - Notes and tuning
dist/music/notes.js - Scales
dist/music/scales.js
Audio and presentation
- Synthesizer
dist/audio/synthesizer.js - Instrument voices
dist/audio/voice.js - Instrument view
dist/ui/instrument-view.js - Stage renderer
dist/ui/stage-renderer.js
Other components
- Player
- MediaPipe runtime and model
- Browser camera and audio
Connections 24
- Player → App composition: opens instrument
- App composition → Session lifecycle: composes
- Player → Control bindings: uses controls
- Control bindings → Session lifecycle: controls session
- Control bindings → Validated settings: changes settings
- Session lifecycle → Hand tracker: starts and stops
- Session lifecycle → Browser camera and audio: manages camera and audio
- Hand tracker → MediaPipe runtime and model: runs inference
- MediaPipe runtime and model → Hand tracker: returns landmarks
- Hand tracker → Tracking config: uses configuration
- Hand tracker → Recovery messages: reports recovery
- Hand tracker → Motion mapping: supplies fingertip motion
- Player → Pointer and keys: uses mouse or keys
- Pointer and keys → Motion mapping: supplies pointer motion
- Motion mapping → Notes and tuning: selects pitches
- Motion mapping → Scales: maps to scale
- Motion mapping → Synthesizer: sends note and dynamics
- Synthesizer → Instrument voices: plays instrument voice
- Synthesizer → Browser camera and audio: uses audio context
- Player → Instrument view: views instrument
- Instrument view → Stage renderer: renders stage
- Player → WebMCP tools: optional tool requests
- WebMCP tools → Validated settings: reads or configures
- WebMCP tools → Session lifecycle: stops session