backnforth/README.md

151 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Bilateral Stimulation Simulator
Simple browser-based tool with an Admin panel and a full-screen Patient view. The Admin controls everything; the Patient view mirrors motion and audio.
## Admin Options
- Shape
- Options: Circle, Square, Triangle
- Shape Color
- Picker + presets: Green, Blue, Yellow, Red, White
- Background Color
- Picker + presets: Green, Blue, Yellow, Red, White
- Direction
- Left↔Right, Up↕Down, Diagonal ↘, Diagonal ↗
- Speed
- Range: 50600 px/s
- Speed Boost: 1×, 2×, 3×, 4× multiplier
- Size
- Range: 10100 px
- Vertical Position
- Range: 0100% (Reset to 50%)
- Glow Pulse
- Enable/Disable
- Glow Radius: 0200%
- Glow Rate: 0.13.0 Hz
- Ramp Speed
- Enable/Disable, Seconds: 160
- When disabled, motion uses constant speed (Linear)
- Smoothness / Easing
- Linear (constant speed)
- Ease In-Out (slows at edges)
- Edge Pause
- Range: 0150 ms
- Wiggle
- Enable/Disable, Amplitude: 010 px
### Audio
- Audio Mode
- Programmatic, From Files, Off
- Programmatic Presets
- Pink Noise, Hybrid (noise + edge cues), Click, Ping, Woodblock
- Bell, Bass, Kick, Snare, Hi-Hat, Sweep, Zap, Bubble
- Pan Sync to Movement
- Toggle on/off
- Pan Rate (for continuous panning)
- Range: 0.12.0 Hz
- Cue Rate (Hybrid)
- Range: 0.13.0 Hz
- Volume
- Range: 0100%
- Test Sound
- Plays the selected programmatic preset briefly
### File Audio
- Choose Folder, select track from dropdown (MP3/WAV)
### Presets (Admin)
- Save: Enter name and save current state
- Apply: Select from list and apply
- Delete: Remove a preset
- Import/Export: JSON of all presets
### Patient Management
- Patient Name: Save patient
- Load Patient: Select from list
- Clear Sessions: Reset history for loaded patient
- Delete Patient: Remove patient record
- Session History: Auto-listed with start/end time and duration
### Session Controls (Preview Panel)
- Timer (minutes)
- Start Session / End Session
- Status + Elapsed time
## Patient View
- Full-screen canvas with motion synced to Admin
- Audio unlock: most browsers require a user gesture (e.g., click or key press) before audio can play
## How to Run
- Open `index.html` and use the Admin panel
- Click “Open Patient View” to launch `patient.html` in a separate tab/window
## Network Mode Setup (Two Computers on the Same WiFi/LAN)
### Overview
- Therapist runs a lightweight relay (`server.py`) once on their computer.
- Admin connects to the relay with a Session ID and copies the Patient Join Link.
- Patient opens the link on their computer and performs a quick gesture to unlock audio.
### OneTime Install (WebSocket Relay)
- Windows:
- Press `Windows` key → type `PowerShell``Enter`
- Check Python: `python --version` (or `py --version`)
- Install package: `python -m pip install websockets` (or `py -m pip install websockets`)
- Start relay: `python server.py` (or `py server.py`)
- If prompted by Windows Defender Firewall, click “Allow access”.
- macOS:
- Press `Cmd+Space` → type `Terminal``Enter`
- Check Python: `python3 --version`
- Install package: `python3 -m pip install websockets`
- Start relay: `python3 server.py`
- Linux (Ubuntu/Debian/Fedora etc.):
- Press `Ctrl+Alt+T` to open Terminal
- Check Python: `python3 --version`
- Install package: `python3 -m pip install websockets`
- Start relay: `python3 server.py`
### Find Your Therapist Computers IP Address
- Windows: run `ipconfig` → use the `IPv4 Address` on your active adapter (e.g., `192.168.1.5`).
- macOS: run `ipconfig getifaddr en0` (WiFi) or `ipconfig getifaddr en1` (alternate); or `ifconfig | grep "inet "`.
- Linux: run `hostname -I` and pick the local `192.168.x.x` address; or `ip addr show`.
### Connect Admin (Therapist Computer)
1) Open Admin in a browser: `http://localhost:8000/`
2) In “Network Mode”:
- Server URL: `ws://<THERAPIST_IP>:8787` (e.g., `ws://192.168.1.5:8787`)
- Session ID: any label you like (e.g., `room-1`)
- Click `Connect`
3) Copy the Patient Join Link shown below the connection fields.
### Connect Patient (Second Computer)
1) Open the copied Patient Join Link in a browser
2) Perform a quick gesture (mouse move or key press) to unlock audio (browser policy)
3) The Patient view will mirror Admin changes in real time
### Tips
- If the Patient does not connect, verify both computers are on the same network and can reach `ws://<THERAPIST_IP>:8787`.
- On Windows, allow the relay through the firewall when prompted.
- You can disconnect Network Mode and continue Local Mode at any time.
## Data Storage
- Presets: `localStorage` key `bls_presets`
- Patients: `localStorage` key `bls_patients`
## Notes
- If Audio is enabled and Programmatic mode is selected, the Patient tab may need one user interaction to unlock audio
- Speed Boost multiplies the slider value for effective motion speed
## ⚠️ Disclaimer
This tool is for research, education, and personal experimentation with bilateral stimulation. It is NOT a substitute for professional therapy, diagnosis, or treatment. Use at your own discretion.