|
|
|
@@ -1,37 +1,57 @@ |
|
|
|
# roadamp 🚗🎵 |
|
|
|
# roadamp |
|
|
|
|
|
|
|
Web-based Winamp controller for CarPC setups — optimized for tablets and phones. |
|
|
|
Web-based Winamp controller for CarPC setups — optimised for tablets and phones. |
|
|
|
|
|
|
|
A modern rebuild of a classic Delphi CarPC project, written in Go with a responsive web interface. |
|
|
|
A modern rebuild of a classic Delphi CarPC project, written in Go with a mobile-first web interface. |
|
|
|
|
|
|
|
## Features |
|
|
|
|
|
|
|
- Play / Pause / Stop |
|
|
|
- Next / Previous Track |
|
|
|
- Seek ±15s / ±120s (with auto-mute during seek) |
|
|
|
- Master volume control |
|
|
|
- Track progress display |
|
|
|
- Play / Pause / Stop / Next / Previous |
|
|
|
- Seek +-15 s / +-2 min, click-to-seek progress bar |
|
|
|
- System master volume (Windows Core Audio) + mute |
|
|
|
- Real-time audio spectrum visualisation (WASAPI loopback) |
|
|
|
- Playlist browser — tap any track to jump directly |
|
|
|
- KillList — auto-skip unwanted tracks |
|
|
|
- Resume — restores position after restart |
|
|
|
- Resume — restores track and position after restart |
|
|
|
- PWA — install as a standalone app on phone/tablet |
|
|
|
|
|
|
|
## Stack |
|
|
|
|
|
|
|
- **Backend:** Go (HTTP server + Winamp IPC via Windows messages) |
|
|
|
- **Frontend:** Vanilla JS / HTML / CSS — no framework, mobile-first |
|
|
|
- **Backend:** Go, Windows-only (Winamp IPC via WM_USER/WM_COMMAND, WASAPI loopback, Core Audio COM) |
|
|
|
- **Frontend:** Vanilla JS / HTML / CSS — no framework, no build step |
|
|
|
- **Transport:** WebSocket (real-time status + spectrum), REST (curl/debug) |
|
|
|
|
|
|
|
## Getting Started |
|
|
|
|
|
|
|
```bash |
|
|
|
go build ./cmd/roadamp |
|
|
|
./roadamp.exe |
|
|
|
# Open http://localhost:8080 on your tablet/phone |
|
|
|
```powershell |
|
|
|
# Build |
|
|
|
.\build.ps1 # produces roadamp.exe in the project directory |
|
|
|
|
|
|
|
# Run (Winamp must already be running) |
|
|
|
.\roadamp.exe |
|
|
|
# Open http://<host>:8889 on your tablet or phone |
|
|
|
``` |
|
|
|
|
|
|
|
## Configuration |
|
|
|
|
|
|
|
Copy `config.yaml.example` to `config.yaml` and adjust: |
|
|
|
Copy `config.yaml.example` to `config.yaml` and adjust as needed: |
|
|
|
|
|
|
|
```yaml |
|
|
|
port: 8080 |
|
|
|
winamp_path: "C:\\Program Files\\Winamp\\Winamp.exe" |
|
|
|
host: "0.0.0.0" # bind address; 127.0.0.1 = localhost only |
|
|
|
port: 8889 |
|
|
|
|
|
|
|
# Only needed if you want roadamp to launch Winamp for you: |
|
|
|
# winamp_path: "C:\\Program Files\\Winamp\\Winamp.exe" |
|
|
|
``` |
|
|
|
|
|
|
|
## Deployment |
|
|
|
|
|
|
|
Three files are all you need: |
|
|
|
|
|
|
|
| File | Notes | |
|
|
|
|---|---| |
|
|
|
| `roadamp.exe` | built with `.\build.ps1` | |
|
|
|
| `config.yaml` | copied from `config.yaml.example` | |
|
|
|
| `winamp\` | optional — only if roadamp should start Winamp | |
|
|
|
|
|
|
|
The web frontend is embedded in the binary via `go:embed`. |