FAQ

General

KaraokeArcade makes no assumptions about audio input so that it can work with any mic setup (including none at all) - the one exception is crowd-noise battle scoring, which listens through the player machine’s own microphone if a room switches it on (this needs a secure origin: localhost or https). To mix the player’s output (the music) with mics, there are generally 2 approaches:

  • Software mixing: The system running the player uses a USB or Thunderbolt audio interface that has mic(s) connected.
  • Hardware mixer: An external/outboard mixer has mic(s) connected, as well as the audio from the system running the player.

Where can I download karaoke songs?

Below is a non-exhaustive, probably U.S.-centric list of sources for licensed MP3+G or MP4 files (additions welcome):

Karaoke tracks require original recording and production. Please support the creators!

KaraokeArcade isn't quite what I'm looking for. What else is out there?

  • Karaoke Mugen : Friends of KaraokeArcade, Karaoke Mugen is geared toward anime and has a large library of downloadable songs.
  • PiKaraoke : “A KTV-style karaoke song search and queueing system.”
  • OpenKJ : “A collection of applications and services intended to make life easier for karaoke DJs.”
  • Ultrastar Deluxe : “A free open source karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment.”
  • Vocaluxe : “A free and open source singing game, inspired by SingStar™ and the great Ultrastar Deluxe project.”

(Are we missing something? Submit a PR!)

Networking

KaraokeArcade Server with NGINX (reverse proxy + custom path)

If you want to host the app at /karaoke for example, run KaraokeArcade Server with --urlPath /karaoke --port <your_server_port> (the port is random by default), then use an NGINX config similar to the following, replacing <your_server_ip> and <your_server_port>:

  location /karaoke {
    proxy_pass http://<your_server_ip>:<your_server_port>/karaoke;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Port $server_port;
}

Also set --serverUrl https://your.host/karaoke so join QR codes point through the proxy instead of the server’s own LAN address.

Troubleshooting

The media scanner stops before scanning all my files?

A file the scanner can’t parse (bad or missing metadata, no matching CDG, and so on) is skipped with a warning, not a stop - the scan continues. If the scan stops outright, the scanner process itself has crashed, often on a huge or corrupt file. Check the scanner log (or console output) and look for the last file the scanner encountered - that’s the usual suspect, and should be removed.

My files have correct artist & title metadata tags; can they be used instead of filenames?

Yes, just place the following _kes.v2.json file in the applicable media folder:

{
  artist: '${meta.artist}',
  title: '${meta.title}',
}

A file missing its artist or title tag is skipped, with a warning logged to the scanner log.

How can I enable auto-play on my browser?

Most browsers block media from playing automatically unless the webpage has been interacted with in some way, which can cause issues when starting the player remotely. See the following links for enabling auto-play on your browser: