Todos os projetos

x1biu

Batalha 1 contra 1 de assobios: o microfone capta o pitch e o servidor pontua a afinação em tempo real por WebSocket.

Tela · x1biu
x1biu: Batalha 1 contra 1 de assobios: o microfone capta o pitch e o servidor pontua a afinação em tempo real por WebSocket.

Sobre o projeto

Um projeto declaradamente inútil: dois jogadores entram na fila, são pareados, a mesma música toca para os dois e cada um assobia acompanhando a melodia. Quem assobiar mais afinado vence e sobe no ranking.

O navegador capta o microfone com a Web Audio API e encontra a frequência do assobio por autocorrelação, sem bibliotecas. Cada frame vai por WebSocket para o Django Channels, que compara com a referência da música em cents, normalizando a oitava, e devolve a pontuação dos dois jogadores ao vivo.

O pareamento roda numa tarefa periódica do Celery Beat, e o histórico de pitch de cada partida fica salvo para desenhar o gráfico depois.

Leia o artigo: Hz

O que foi entregue

  • Detecção de pitch no navegador por autocorrelação, com portão de silêncio e faixa de assobio
  • Pontuação em cents com normalização de oitava
  • Partidas em tempo real com Django Channels e WebSocket
  • Fila e pareamento com Celery Beat e Redis
  • Ranking global e histórico de partidas com gráfico de pitch

Como funciona

  1. 01 · Navegador
    • Web Audio API
    • Autocorrelação
    • Next.js
  2. 02 · Tempo real
    • WebSocket
    • Django Channels
  3. 03 · Back-end
    • Django + DRF
    • Pontuação em cents
    • Celery Beat
  4. 04 · Dados
    • PostgreSQL
    • Redis
Próximo projeto →Crew AI for Questions