English

MIDI · Vídeo · MP3+G · UltraStar · LRC  ·  Windows, macOS, Linux, Android, Meta Quest, iOS

KaraokeMachine

Uma máquina de karaokê que funciona como um aparelho doméstico: escolha uma música pelo número, ela toca, e a letra acende no tempo certo. Ela roda em tela cheia numa televisão, e qualquer celular da mesma rede vira um controle por uma API HTTP. Procure no catálogo, ponha uma música na fila, mude o tom, pule.

Baixar Ver o código Compilar

Software livre, MIT OR Apache-2.0. O pacote do macOS é assinado e reconhecido pela Apple. Todos os outros downloads não são assinados, e a página de versões diz o que cada sistema vai perguntar.

A tela tocando numa televisão: o número, o título e o artista da música no alto, com
              selos de tom e melodia e um disco no canto contando quantas músicas esperam; a linha
              que está sendo cantada em letras grandes, com a sílaba atual preenchida pela metade em
              âmbar; a linha seguinte logo abaixo em cinza; e uma barra de progresso no rodapé

Como ela é

Duas linhas do hino Angels From the Realms of Glory cantadas na tela que está tocando:
              cada sílaba se enche de âmbar enquanto é cantada, a próxima linha espera embaixo em
              cinza, e quando a primeira linha termina a seguinte toma o lugar dela
Cantando. Cada sílaba se enche no tempo da música, e a próxima linha já está esperando.
O km-package-builder num navegador: um painel largo de filtros cuja lista reduzida pode
              ser salva com um nome, sobre uma tabela de músicas com colunas de artista, título,
              língua, duração, adequação, sua própria nota, melodia e número de duplicatas, e botões
              por linha para tocar uma música, guardá-la numa lista de favoritas, corrigir título e
              artista, e procurar no YouTube
km-package-builder, para deixar uma pasta de arquivos em ordem antes de virar pacote.

O que ela faz

Músicas

  • Arquivos MIDI e KAR com letra de karaokê embutida, nas três convenções de karaokê. A máquina detecta uma codificação antiga, como Shift-JIS.
  • Músicas em vídeo — MP4 com H.264/AAC.
  • Músicas em MP3+G — um MP3 com um .cdg de mesmo nome. A própria máquina desenha os gráficos CD+G, em Rust.
  • Músicas em UltraStar — o .txt em que um jogo de cantar marca o tempo das palavras, ao lado do MP3 que ele nomeia. A letra acende sílaba por sílaba.
  • Músicas em LRC — um .lrc com a letra marcada no tempo, ao lado do MP3 de mesmo nome. Um arquivo que marca cada palavra acende palavra por palavra. Um arquivo que marca só as linhas acende a linha inteira de uma vez, e mostra quando voltar a cantar depois de uma pausa.
  • Uma nota de adequação de 0 a 10 para cada arquivo, com o detalhamento. Ela também aponta o canal de melodia quando o encontra com segurança, e diz o motivo quando não.

Tocando

  • Em tela cheia numa televisão, desenhada pelo SDL3, ou numa janela no computador. F alterna entre as duas, e a máquina guarda a escolha. No Linux ela desenha direto no DRM/KMS a partir de um terminal puro, sem nenhum ambiente gráfico instalado.
  • Ou numa televisão em outro cômodo. Com --stream, a máquina não abre janela e serve imagem e som como uma transmissão HLS. Um navegador abre /watch/, e o VLC, o Kodi ou o player da televisão abrem /stream/live.m3u8.
  • A letra acende no tempo certo, sílaba por sílaba, pelo relógio do próprio sequenciador.
  • Tom e ritmo por música, e uma melodia guia que pode ser silenciada.
  • Um ajuste de sincronia da letra em milissegundos, regulável com a música tocando, para o atraso de imagem da televisão. Ele move só o destaque da letra, nunca o áudio, porque os microfones estão nesse áudio.
  • Papéis de parede fotográficos atrás da letra, com transição suave, cada um medido para dar contraste na faixa da tela em que a letra fica.

Controles, e a API

  • A máquina serve um controle no próprio endereço dela. Qualquer celular da rede abre esse controle sem instalar nada, pelo QR code na tela de espera.
  • Um controle offline avulso, que guarda a própria cópia do catálogo de uma máquina. Procurar, navegar e marcar favoritas funciona com a máquina desligada.
  • Uma API HTTP com eventos por WebSocket. Ela cobre busca, fila, controles de reprodução, configurações, pacotes, papéis de parede, modo demonstração, microfones e saída de áudio.
  • O mDNS encontra a máquina na rede.
  • Uma senha de administrador, que a máquina mostra na tela de espera como um PIN de seis dígitos. Tudo sob /api/v1/admin/ pede a senha, e nada do que um cantor faz pede.

Pondo uma coleção em ordem

  • km-package-builder, um servidor web local sobre uma pasta de arquivos. Navegue, procure dentro da própria letra, dê nota, corrija os nomes, agrupe duplicatas e escolha músicas para os pacotes.
  • km-pack monta e confere pacotes, e km-lyrics mostra a linha do tempo de um arquivo já interpretada. km-wallpaper-pack monta um conjunto de papéis de parede com imagens em que a letra fica legível.
  • Um livro de músicas impresso com quatro colunas: artista, número, título e o começo da letra. Ele segue o livro de fichário de uma máquina comercial, e a máquina serve um para o próprio catálogo.

Imagens e instrumentos, achados para ela

O km-admin acha fotografias em que a letra continua legível. Ele mede cada uma na faixa da tela que a letra ocupa. Ele também oferece bancos General MIDI de uma tabela de sessenta e três, e manda os dois para a máquina. Ele manda também um arquivo que você já tem: um pacote, um banco, uma fotografia sua.

A máquina não consegue fazer isso sozinha. Uma caixa embaixo da televisão não tem terminal e pode não ter internet, e ela não deve guardar as suas contas.

As imagens vêm do Openverse por padrão, e você pode repassar os conjuntos dele. O Pixabay e o Pexels pedem uma chave de API sua, e os termos deles proíbem isso. O campo da chave mostra esses termos.

Números que não podem colidir

O número de uma música é banco × 1000 + vaga. A vaga é o número que o pacote deu à música, de 1 a 999. O banco é o bloco de mil em que ela fica. Dois pacotes que numeram uma música como 500 não colidem: uma é 3500 e a outra é 611500.

O banco de um pacote vem do identificador dele, então os números dele são os mesmos em qualquer máquina. Por isso uma lista de músicas impressa acompanha o arquivo.

Um pacote tem no máximo 999 músicas, e a máquina guarda mil pacotes. O limite existe para incentivar um volume escolhido, em vez de uma pasta inteira.

Deliberadamente, não

Cada uma é uma decisão com um motivo. Para propor uma mudança, comece pelas decisões.

Como obter

Todo pacote está na página de versões, um arquivo por sistema. As dezesseis canções de Natal são um download separado ao lado. Para compilar a partir do código, veja BUILDING.md.

SistemaO que você recebe
Windows Um instalador com os sete programas atrás de caixas de seleção. Ele instala só para o seu usuário e não pede permissão de administrador. Ele também oferece se colocar no seu PATH e abrir arquivos de coleção .kmbuild. Ou uma pasta portátil: descompacte e execute.
macOS Um instalador da Apple com os mesmos sete programas. Os aplicativos vão para /Applications e as ferramentas de linha de comando para /usr/local, já no seu PATH. Ele pede a sua senha de administrador uma vez.
Debian, Ubuntu Um .deb que declara as dependências de ffmpeg e de fontes, então o apt as fornece. Ele instala uma entrada no menu, um ícone e o comando karaokemachine, além do serviço de aparelho, desligado.
Qualquer Linux Um .tar.gz. Descompacte em qualquer lugar e execute, sem root e sem gerenciador de pacotes. Ele carrega o próprio ffmpeg.
Android, Google TV Um APK com as duas arquiteturas, então ele instala num celular e numa televisão.
Meta Quest Um APK próprio, que põe a máquina numa tela no ambiente. Ele instala ao lado do APK de Android, e não por cima.
iPhone, iPad Um .ipa para a máquina e outro para o controle, os dois sem assinatura. Você assina os dois com o seu próprio Apple ID. É a máquina inteira, e as músicas chegam pelo aplicativo Arquivos.

Dezesseis canções de Natal, de graça

Um pacote é de graça: Noite Feliz, Joy to the World e mais catorze canções de Natal. Todas estão em domínio público, com quatro ou cinco estrofes cada.

É um download separado e não vem instalado com a máquina. Uma instalação nova começa vazia, porque as músicas são suas.

É o único pacote desse tipo. Um MIDI de karaokê reúne quatro ou cinco obras: a melodia, o arranjo, a letra, a tradução se houver e as notas digitadas. Canções de Natal estão entre as poucas em que todas são livres.