An open API service indexing awesome lists of open source software.

https://github.com/koniz-dev/vinyl-music-player

A product from the Musical Universe
https://github.com/koniz-dev/vinyl-music-player

canvas-api color-customization content-creation creative-tools drag-and-drop event-driven javascript lyrics-sync modular-architecture music-player music-visualization progressive-web-app state-management video-export video-generation vinyl-players web-audio-api

Last synced: 2 days ago
JSON representation

A product from the Musical Universe

Awesome Lists containing this project

README

          

# ๐ŸŽต Vinyl Music Player

> Turn any audio file into a vinyl-spin music video with synced lyrics โ€” **right in your browser**, no upload, no install.

[![Live Demo](https://img.shields.io/badge/demo-live-success?style=for-the-badge)](https://koniz-dev.github.io/vinyl-music-player/)
[![License: MIT](https://img.shields.io/badge/license-MIT-green?style=for-the-badge)](LICENSE)
[![PWA](https://img.shields.io/badge/PWA-offline_ready-5A0FC8?style=for-the-badge)](docs/architecture.md#pwa--offline)
[![No build](https://img.shields.io/badge/build-not_required-blue?style=for-the-badge)](docs/architecture.md#why-no-build-step)

**[Live Demo](https://koniz-dev.github.io/vinyl-music-player/)** ยท **[Docs](docs/)** ยท **[Report a Bug](https://github.com/koniz-dev/vinyl-music-player/issues)**

---

Drop in an MP3, type the song title, add timed lyrics, click export. You get a **1080ร—1920 vertical MP4 (or WebM)** ready for TikTok, Reels, or YouTube Shorts โ€” other aspect ratios available too. Audio never leaves your device โ€” the whole pipeline (decode, render, encode) runs in the browser.

## Why use this

- ๐ŸŽฌ **Real video export** โ€” Canvas + `MediaRecorder` to MP4 or WebM, not a screen recording
- ๐Ÿ“ **Synced lyrics** โ€” type per-line or bulk-paste JSON; live preview as audio plays
- โœจ **AI auto-sync** โ€” Whisper runs *in your browser* to time your lyrics (or transcribe from scratch); nothing is uploaded
- ๐ŸŽจ **Live vinyl preview** โ€” record spins, tonearm tracks, lyrics fade in/out
- ๐Ÿ”’ **100% local** โ€” no servers, no uploads, no account
- ๐Ÿ“ฆ **Offline-ready PWA** โ€” works on the train after the first load
- โšก **Zero install** โ€” open the [demo](https://koniz-dev.github.io/vinyl-music-player/) and go

## Quickstart

```bash
git clone https://github.com/koniz-dev/vinyl-music-player.git
cd vinyl-music-player
npm install
npm run dev
```

Open . Need more detail? See [Getting Started](docs/getting-started.md).

> ES modules require an HTTP origin โ€” don't open `index.html` via `file://`.

## Documentation

| | |
|---|---|
| [Getting Started](docs/getting-started.md) | Install, run, first export in 60 s |
| [Usage Guide](docs/usage.md) | UI walkthrough โ€” upload, lyrics, color, export |
| [JSON Lyrics Format](docs/json-lyrics-format.md) | Bulk-import spec, LRC conversion |
| [Architecture](docs/architecture.md) | Modules, event bus, render pipeline |
| [Troubleshooting](docs/troubleshooting.md) | Browser matrix + fixes |
| [Contributing](docs/contributing.md) | Dev workflow + code style |

## Tech

Vanilla HTML / CSS / JavaScript. ES modules, no build step, no backend. Uses `MediaRecorder`, Web Audio, Canvas, a service worker for offline support, and on-device Whisper (transformers.js + ONNX Runtime, WebGPU/WASM) for lyric auto-sync. Full breakdown in [docs/architecture.md](docs/architecture.md).

## License

[MIT](LICENSE) ยฉ [koniz-dev](https://github.com/koniz-dev)