aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2026-04-17 00:13:45 -0700
committerGitHub <noreply@github.com>2026-04-17 00:13:45 -0700
commit9878af2e31c5d087711b4c62a6e2bd8a4235fb16 (patch)
tree92d51df06760b819c0b7b6d3b89abd9f5c679d33 /README.md
parent29fefe94613e4ff8f63c7a1871af8fdf0cd4f656 (diff)
Revise README for LRC-Player and LRC-Type
Updated README to clarify app features and usage.
Diffstat (limited to 'README.md')
-rw-r--r--README.md107
1 files changed, 16 insertions, 91 deletions
diff --git a/README.md b/README.md
index a098892..360f215 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,20 @@
![Next JS](https://img.shields.io/badge/Next-black?style=for-the-badge&logo=next.js&logoColor=white)
![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white)
-A karaoke-oriented media player. Supports simultaneous playback of a main video/audio file, a secondary audio track, LRC lyrics, and SRV3 (YouTube Timed Text) subtitles.
+A web app that does stuff with LRC (lyric) files:
+- **LRC-Player** - A karaoke-oriented media player
+- **LRC-Type** - A typing-tube.net style game that challenges you to type along with the lyrics
-https://github.com/Patchwork-Archive/Patchwork-Karaoke/assets/21994085/5106bb53-d962-45e9-9a6b-6368dd1c6437
+These tools are largely "bring your own media", no user data is stored and all operations occur client side.
+
+## LRC-Player
+- **LRC lyrics** - scrolling line-by-line lyrics with highlight animation
+- **SRV3 subtitles** - YouTube Timed Text rendered over the video
+- **Dual audio** - mix a main media file with a secondary audio track (e.g. vocals + instrumental)
+- **MoekyunKaraoke codes** — shareable codes that load a full session from remote URLs
+
+## LRC-Type
+A typing-tube style game with basic scoring algorithm. Shareable codes available for sharing the same chart.
---
@@ -12,97 +23,11 @@ https://github.com/Patchwork-Archive/Patchwork-Karaoke/assets/21994085/5106bb53-
```sh
pnpm i
-pnpm run dev
+pnpm build
```
---
+https://github.com/user-attachments/assets/c38f9dc1-b000-423e-854f-6ac2dd626db6
-## Features
-
-- **LRC lyrics** — scrolling line-by-line lyrics with highlight animation
-- **SRV3 subtitles** — YouTube Timed Text rendered over the video
-- **Dual audio** — mix a main media file with a secondary audio track (e.g. vocals + instrumental)
-- **Audio/Video balance** — slider to blend the two audio sources
-- **Timing offsets** — independently adjust LRC sync and Audio #2 sync in milliseconds
-- **Drag and drop** — drop any supported file directly onto the player
-- **Resizable panes** — drag the divider between the lyrics and video panels
-- **MoekyunKaraoke codes** — shareable codes that load a full session from remote URLs
-
----
-
-## Supported File Types
-
-| Slot | Accepted formats |
-|------|-----------------|
-| Media (file1) | `mp4`, `webm`, `ogg`, `mp3`, `wav`, `flac`, and any format the browser supports |
-| Audio #2 (file2) | Same as above |
-| Lyrics | `.lrc` |
-| Subtitles | `.srv3` (YouTube Timed Text) |
-
-The purpose of having `Audio #2` is if you want to dynamically change the volume of 2 tracks. As an example, you may want `Media` to be an insturmental, while `Audio #2` to be acapella/vocal-isolated version. This way you can dynamically change the volume of either.
-
-
----
-
-## MoekyunKaraoke Code
-
-A MoekyunKaraoke code is a **Base64-encoded JSON object** that encodes remote URLs and timing settings for a session. Paste one into the input field on the player page, or pass it as a `?code=` URL query parameter to share a fully-loaded session as a single link.
-
-### Encoding / decoding
-
-```js
-// Encode
-const code = btoa(JSON.stringify(payload));
-// Decode (done internally by the player)
-const payload = JSON.parse(atob(code));
-```
-
-### Fields
-
-All fields are optional — include only the ones you need.
-
-| Field | Type | Description |
-|-------|------|-------------|
-| `lrc` | `string` (URL) | URL to an `.lrc` lyrics file. Fetched by the player at load time. |
-| `srv3` | `string` (URL) | URL to a `.srv3` YouTube Timed Text subtitle file. Fetched by the player at load time. |
-| `file1` | `string` (URL) | URL to the main video or audio file. |
-| `file2` | `string` (URL) | URL to the supplemental (secondary) audio file. |
-| `offset` | `number` (ms) | LRC timing offset in milliseconds. Negative values shift lyrics earlier; positive values shift them later. |
-| `offset2` | `number` (ms) | Audio #2 timing offset in milliseconds. |
-
-### Example payload
-
-```json
-{
- "lrc": "https://example.com/song.lrc",
- "file1": "https://example.com/song.webm",
- "offset": -800
-}
-```
-
-Full session with every field:
-
-```json
-{
- "lrc": "https://example.com/song.lrc",
- "srv3": "https://example.com/song.srv3",
- "file1": "https://example.com/song.webm",
- "file2": "https://example.com/instrumental.mp3",
- "offset": -800,
- "offset2": 120
-}
-```
-
-### Sharing via URL
-
-```
-https://your-player-domain.com/?code=eyJsciI6Imh0dHBzOi8v...
-```
-
-### Notes
-
-- `lrc` and `srv3` are fetched client-side and require the hosting server to send permissive CORS headers (`Access-Control-Allow-Origin: *`).
-- `file1` and `file2` are set as media `src` attributes directly and are subject to the same CORS restrictions for cross-origin URLs.
-
-> See [`KARAOKE_CODE.md`](./KARAOKE_CODE.md) for the full format reference including code generation examples in JavaScript and Python.
+https://github.com/Patchwork-Archive/Patchwork-Karaoke/assets/21994085/5106bb53-d962-45e9-9a6b-6368dd1c6437
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage