Laboratório · projeto pessoal · Roblox

AutoPiano

Um script que toca o piano do Roblox soando como gente, e o Cheedar, um assistente de voz que recebe pedidos de música de mim e dos outros jogadores do servidor.

  • 131músicas no repertório
  • 4estilos de toque
  • 3jeitos de pedir música

Projeto pessoal: não está disponível pra download.

A janela do AutoPiano, aba Palco: a música tocando escrita a pincel numa folha, o tempo restante, a fila e os pedidos que chegaram
A janela, aba Palco: o que toca, a fila e quem pediu o quê. Fica num segundo monitor e é lida de relance (dados de demonstração).

Soar como gente

A maioria dos autoplayers despeja teclas numa grade. O motor do AutoPiano lê a partitura e planeja cada nota do jeito que um pianista tocaria.

  • Tempo e pesoPequenas variações de tempo e intensidade, controladas por uma humanização de 0 a 100.
  • Acordes e arpejosNo acorde, os graves chegam um pouco antes dos agudos. O arpejo corre rápido e as notas seguram juntas.
  • Frases que respiramNo fim de frase ele desacelera; linha vazia troca de estrofe e respira.
  • Quatro estilosPreciso, Natural, Expressivo e Robô, mais um auto estilo que escolhe pela partitura.
  • Relógio precisoO motor marca as notas com o relógio de alta precisão do Windows, então o tempo não escorrega.
  • Salvo por músicaAndamento, delay base e estilo ficam guardados em cada música.

Cheedar, o assistente

“Cheedar, toca Viva La Vida.” Os pedidos chegam por três portas, e o microfone sempre tem a palavra final.

MicrofoneA voz do dono. Se eu falar, todo o resto é ignorado na hora.
Voz do jogoEscuta o voice chat do Roblox pelo áudio do computador, então outros jogadores pedem falando.
ChatLê o chat do Roblox pelos logs do jogo, e pela tela com OCR nos mapas que não salvam.
  • tocar · parar · próxima · anterior · repetir
  • fila · aleatória · modo rádio · playlist
  • adicionar aos favoritos · tocar favoritas
  • mais rápido · mais lento · info

Ele responde só por voz (TTS do Edge, levada pro voice chat do jogo) e nunca escreve no chat do Roblox. O nome da música é achado por busca aproximada, e apelido também vale.

Aba Repertório: busca por nome ou apelido, favoritas com estrela e avisos de partitura
Repertório: busca por nome ou apelido, favoritas e avisos de partitura.
Aba Bastidores: voz do Cheedar, dispositivos de áudio, cooldown, limite de fila, bloqueados e confiáveis
Bastidores: a voz do Cheedar, os dispositivos de áudio e a moderação.

Pra ninguém sequestrar o piano

  • BloqueadosJogadores que não podem pedir nada.
  • Só confiáveisOpção em que só uma lista de jogadores pede pelo chat e pela voz do jogo.
  • Cooldown e limite de filaTempo entre pedidos e tamanho máximo da fila, pra uma pessoa só não lotar.

Por dentro

AutoHotkey v1O motor: lê a partitura, planeja cada nota e aperta as teclas com o Roblox em foco. Atalhos de F1 a F12.
PythonO Cheedar: captura do microfone e do áudio do sistema, reconhecimento de voz, comandos, chat, moderação e respostas por voz.
pywebview + HTML/CSS/JSA janela, desenhada como um setlist colado no chão do palco — o mesmo visual desta página.
Arquivos no meioAs duas metades conversam por arquivinhos temporários, então uma reinicia sem derrubar a outra. A lógica tem testes de unidade.

As partituras

As músicas são partituras em texto no formato do Virtual Piano (letras pras teclas, colchetes pros acordes, traço pra segurar). Fiz um tocador que lê e toca o repertório inteiro direto no navegador, cada música no andamento salvo nela.

Abrir o tocador de partituras →