/KaraokeEternal

Open karaoke party system

Primary LanguageTypeScriptISC LicenseISC

Karaoke Eternal

Host awesome karaoke parties where everyone can easily find and queue songs from their phone's browser. The player is also fully browser-based with support for MP3+G, MP4 videos and WebGL visualizations. The server is self-hosted and runs on nearly everything.

Karaoke Eternal

App in mobile browser (top) controlling player in Firefox/Chrome (bottom)

Features

  • Supports:
    • MP3+G with Winamp/MilkDrop visualizations (WebGL 2)
    • MP4 videos
    • ReplayGain tags for volume normalization
  • Fast, modern mobile browser app designed for "karaoke conditions"
  • Multiple simultaneous rooms/queues (optionally password-protected)
  • Dynamic queues keep parties fair, fun and no-fuss
  • Fully self-hosted
  • No ads or telemetry

Microphones are not required since the player itself only outputs music - this allows your audio setup to be as simple or complex as you like. See the F.A.Q. for more information.

Getting Started

Karaoke Eternal basically has 3 parts. See Getting Started to get up and running step-by-step, or jump to the documentation for each part below:

  • Server: Runs on pretty much anything to serve the web app and your media files, including a Windows PC, Mac, or a dedicated server like a Raspberry Pi or Synology NAS.
  • App: Fast, modern mobile web app designed for "karaoke conditions".
  • Player: Just another part of the app, but meant to run fullscreen on the system handling audio/video for a room

Installation

There are several installation methods available for Karaoke Eternal Server.

Discord & Support

Join the Karaoke Eternal Discord Server for general support and development chat, or just to say hi!

Contributing & Development

Contributions are welcome! Please join the #dev channel of the Discord Server before embarking on major features; the project's scope is limited to ensure success.

Make sure you have Node.js 16 or later, then:

  1. Fork and clone the repo
  2. npm i
  3. npm run dev and look for "Web server running at" for the server URL