Calculadora BPM a partir de toques
Toques em 0, 500, 1000 e 1500 ms deixam três intervalos de 500 ms, ou seja, um andamento de 120 BPM. Digite os momentos em que você marcou a batida de um groove e receba um andamento para usar no seu projeto. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Toques
- 0, 500, 1.000, 1.500
- Toques (ms)
- 0, 500, 1.000, 1.500 bpm
- Número de toques
- 4
- Intervalos (ms)
- 500, 500, 500
- Número de intervalos
- 3
Uma calculadora de BPM a partir de intervalos de toque transforma uma sequência de carimbos de tempo informados por você em um único tempo reproduzível em batidas por minuto. Você fornece pelo menos dois instantes ordenados em milissegundos —deslocamentos relativos desde o primeiro toque ou valores absolutos de relógio— e a ferramenta mede cada intervalo consecutivo, calcula a média desses espaços positivos e converte o espaçamento médio com a relação clássica de estúdio: BPM igual a sessenta mil divididos pelos milissegundos médios por batida. Produtores que ouvem um groove sem ter tempo de projeto, professores que demonstram o fluxo de tap-tempo e desenvolvedores que escrevem testes de metrônomo ou sequenciador precisam da mesma aritmética determinística sem abrir uma planilha nem adivinhar com um cronômetro.
Como os carimbos de toque se tornam batidas por minuto
A estimativa de tempo por toque parte da observação de que um pulso estável produz lacunas de tempo quase iguais entre batidas sucessivas. Se você registra o instante de cada toque em milissegundos e exige que a sequência seja estritamente crescente, cada diferença consecutiva é um intervalo positivo que representa um período de batida sob o pressuposto de um toque por batida.
Fazer a média desses intervalos suaviza pequenos erros humanos de sincronia: um toque atrasado ou adiantado desloca apenas um ou dois intervalos, enquanto a média de muitos intervalos converge para o pulso pretendido. Converter o intervalo médio em batidas por minuto usa o mesmo recíproco de toda a produção musical: há sessenta mil milissegundos em um minuto, de modo que dividir essa constante pelos milissegundos médios por batida indica quantos pulsos de semínima ocorreriam se esse espaçamento se mantivesse por um minuto inteiro.
Por exemplo, quatro toques em zero, quinhentos, mil e mil e quinhentos milissegundos produzem três intervalos iguais de quinhentos milissegundos e uma média de quinhentos, o que corresponde a cento e vinte BPM —a grade familiar de house e pop—. Toques irregulares ao vivo também funcionam: intervalos de quatrocentos e oitenta, quinhentos e vinte e quinhentos milissegundos têm média quinhentos e ainda reportam cento e vinte BPM após o arredondamento.
Rejeitar intervalos não positivos é essencial; um intervalo zero implicaria tempo infinito e um intervalo negativo significaria carimbos fora de ordem. Por isso, esta capacidade converte cada carimbo em um número finito, constrói apenas deltas positivos, calcula a média e publica BPM, intervalo médio, a lista completa de intervalos e passos ordenados para que estudantes e testes unitários recompõem a aritmética à mão.
Dicas práticas, limites e buscas relacionadas
Toque pelo menos entre quatro e oito vezes quando puder: mais intervalos reduzem a influência de um único golpe mal sincronizado, embora dois carimbos já definam um tempo de intervalo único para testes com script. Pontos de verificação comuns de estúdio são fáceis de confirmar à mão: quinhentos milissegundos de média são cento e vinte BPM, seiscentos milissegundos são cem BPM, e cerca de quatrocentos e vinte e oito ponto cinquenta e sete milissegundos rondam cento e quarenta BPM.
Esta página atende quem busca uma calculadora de BPM a partir de toques, tempo por intervalos de tap ou batidas por minuto a partir de carimbos; não é um detector de onsets de áudio, nem um quantizador de swing, nem uma tabela de notas de BPM para milissegundos —para tempo de projeto já conhecido convertido em durações de notas e delays use em vez disso a calculadora irmã de BPM para milissegundos—. Prefira esta capacidade quando sua fonte forem toques humanos ou programáticos sem uma grade prévia.
Verificações de ida e volta são diretas: recalcule cada diferença consecutiva, faça a média, divida sessenta mil por essa média e confirme que o resultado coincide com o bpm publicado dentro do arredondamento a doze casas decimais.
Casos de uso
Estimar o tempo da sessão a partir de um groove tocado
Produtores marcam o pulso sobre uma faixa de referência ou uma tomada ao vivo, colam os carimbos em milissegundos e definem o BPM do projeto na DAW com o tempo médio devolvido.
Perguntas frequentes
Como se calcula o BPM a partir de carimbos de toque?
Meça cada intervalo positivo consecutivo em milissegundos, faça a média desses intervalos e calcule BPM como 60000 divididos pelo intervalo médio. Um período médio de batida indica quantas batidas cabem em um minuto.
Quantos toques eu preciso?
Pelo menos dois carimbos de tempo (um intervalo positivo). Mais toques melhoram a estabilidade porque a média suaviza erros de sincronia de um único golpe.
E se meus toques não forem estritamente crescentes?
Qualquer intervalo zero ou negativo indica sequência fora de ordem ou duplicada.
São necessários relógios absolutos ou posso começar em zero?
Ambos funcionam. Só importam as diferenças entre carimbos consecutivos, de modo que deslocamentos relativos que começam em 0 equivalem a milissegundos absolutos no estilo epoch.
A calculadora de BPM a partir de intervalos de toque é grátis?
A ferramenta do navegador é gratuita e roda localmente.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/hobby/music-bpm-from-tap \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"taps":[0,500,1000,1500]}'const res = await fetch("https://api.kit.forhosting.com/hobby/music-bpm-from-tap", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"taps": [
0,
500,
1000,
1500
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/music-bpm-from-tap",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"taps": [
0,
500,
1000,
1500
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/music-bpm-from-tap", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"taps":[0,500,1000,1500]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"taps":[0,500,1000,1500]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/music-bpm-from-tap", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"taps": [
0,
500,
1000,
1500
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.music_bpm_from_tap",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Sequências não monotônicas ou incompletas são rejeitadas com um erro claro invalid_input para que scripts nunca inventem um tempo a partir de um único clique ou de uma lista em ordem inversa. O caminho é matemática pura —sem rede, sem sementes aleatórias, sem dependência do relógio de parede—, de modo que o executor gratuito do navegador e a API pré-paga devolvem o mesmo JSON após arredondamento decimal fixo em cada chamada.
Como chamar a API e o que ela devolve
O array deve conter pelo menos dois e no máximo quinhentos números finitos. Prefira enviar números em vez de strings pré-formatadas quando você controla o cliente; strings numéricas só são aceitas se coincidirem com um padrão numérico finito estrito. Relógios relativos que começam em zero são válidos, e milissegundos absolutos no estilo epoch também, porque apenas as diferenças entram na média. Envie um corpo JSON com um único campo de array obrigatório chamado taps, também aceito sob os aliases timestamps, tap_times, times_ms e tap_timestamps. O valor absoluto de cada carimbo permanece dentro do limite publicado para que as diferenças fiquem bem definidas em precisão dupla IEEE. Em caso de sucesso, a resposta ecoa a sequência arredondada taps_ms, tap_count, a lista intervals_ms de deltas positivos consecutivos, interval_count, mean_interval_ms e o sinônimo beat_ms para o espaçamento médio, bpm como tempo estimado, unit com a string bpm, formula indicando bpm igual a 60000 sobre a média dos intervalos positivos consecutivos, message como breve resumo e steps que percorrem dos carimbos brutos até cada intervalo, a média e a divisão final. Arrays ausentes, valores que não são array, menos de dois carimbos, entradas não finitas, strings vazias que falham na coerção numérica e qualquer intervalo não positivo entre toques consecutivos devolvem invalid_input e nunca são cobrados. O preço é uma tarifa fixa de US$ 0,002 por solicitação bem-sucedida com unidade item.
Dicas práticas, limites e buscas relacionadas
Mantenha a sequência estritamente crescente; se sua camada de captura puder emitir carimbos duplicados sob carga alta, deduplique ou adicione um pequeno deslocamento antes de chamar a API. Ao ensinar, combine uma sequência estável de caminho feliz com um erro deliberado de um único toque ou de ordem inversa para que os alunos vejam invalid_input imediatamente. Tarefas com falha que devolvem invalid_input não consomem saldo pré-pago, o que mantém baratos os scripts exploratórios quando alunos testam casos-limite de propósito.
Casos de integração
Exercícios de sala sobre tap-tempo e o recíproco
Professores entregam listas ordenadas de toques para que os alunos recompõem à mão o intervalo médio e 60000/média e depois confrontem o campo BPM determinístico da resposta da API.
Testes unitários para metrônomos e sequenciadores
Desenvolvedores alimentam arrays sintéticos fixos de toques e validam bpm, mean_interval_ms e intervals_ms contra fixtures golden sem hardware de áudio nem temporizadores de relógio de parede.