Calcolatore BPM da tap
Tocchi a 0, 500, 1000 e 1500 ms lasciano tre intervalli di 500 ms, cioè un tempo di 120 BPM. Inserisca gli istanti in cui ha battuto il ritmo di un groove e ottenga un tempo da impostare nel suo progetto. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Tocchi
- 0, 500, 1000, 1500
- Tocchi (ms)
- 0, 500, 1000, 1500 bpm
- Numero di tocchi
- 4
- Intervalli (ms)
- 500, 500, 500
- Numero di intervalli
- 3
Un calcolatore di BPM da intervalli di tap trasforma una sequenza di timestamp di tap inseriti da Lei in un unico tempo riproducibile in battiti al minuto. Lei fornisce almeno due istanti ordinati in millisecondi —offset relativi dal primo tap oppure valori assoluti di orologio— e lo strumento misura ogni intervallo consecutivo, calcola la media di quei gap positivi e converte la spaziatura media con la classica relazione da studio: BPM uguale a sessantamila diviso i millisecondi medi per battito. I produttori che sentono un groove ma non hanno un tempo di progetto, gli insegnanti che dimostrano il flusso tap-tempo e gli sviluppatori che scrivono test di metronomo o sequenzer necessitano della stessa aritmetica deterministica senza aprire un foglio di calcolo né indovinare con un cronometro.
Come i timestamp di tap diventano battiti al minuto
La stima del tempo per tap parte dall'osservazione che un battito stabile produce gap di tempo quasi uguali tra colpi successivi. Se Lei registra l'istante di ciascun tap in millisecondi e richiede che la sequenza sia strettamente crescente, ogni differenza consecutiva è un intervallo positivo che rappresenta un periodo di battito nell'ipotesi di un tap per battito.
Fare la media di quegli intervalli attenua piccoli errori umani di sincronia: un tap in ritardo o in anticipo sposta solo uno o due gap, mentre la media di molti intervalli converge verso il polso inteso. Convertire l'intervallo medio in battiti al minuto usa lo stesso reciproco della produzione musicale: ci sono sessantamila millisecondi in un minuto, quindi dividere quella costante per i millisecondi medi per battito indica quanti impulsi di semiminima si verificherebbero se quella spaziatura reggesse per un intero minuto.
Ad esempio, quattro tap a zero, cinquecento, mille e millecinquecento millisecondi producono tre intervalli uguali di cinquecento millisecondi e una media di cinquecento, che corrisponde a centoventi BPM —la griglia familiare di house e pop—. Anche un tap live irregolare funziona: intervalli di quattrocentottanta, cinquecentoventi e cinquecento millisecondi mediamente cinquecento riportano ancora centoventi BPM dopo l'arrotondamento. Rifiutare intervalli non positivi è essenziale; un gap zero implicherebbe tempo infinito e un gap negativo significherebbe timestamp fuori ordine.
Questa capacità quindi costringe ogni timestamp a un numero finito, costruisce solo delta positivi, ne calcola la media e pubblica BPM, intervallo medio, l'elenco completo degli intervalli e passi ordinati affinché studenti e test unitari ricompongano l'aritmetica a mano.
Consigli pratici, limiti e ricerche correlate
Tocchi almeno da quattro a otto volte quando può: più intervalli riducono l'influenza di un singolo colpo fuori tempo, sebbene due timestamp definiscano già un tempo a intervallo singolo per test con script. I punti di controllo comuni in studio si verificano a mano con facilità: cinquecento millisecondi di media sono centoventi BPM, seicento millisecondi sono cento BPM e circa quattrocentoventotto virgola cinquantasette millisecondi ruotano intorno a centoquaranta BPM.
Questa pagina si rivolge a chi cerca un calcolatore di BPM da tap, tempo da intervalli di tap o battiti al minuto da timestamp; non è un rilevatore di onset audio, né un quantizzatore di swing, né una tabella di note da BPM a millisecondi —per un tempo di progetto già noto convertito in durate di note e delay usi invece il calcolatore gemello BPM in millisecondi—. Preferisca questa capacità quando la Sua fonte sono tap umani o programmatici senza una griglia preesistente.
I controlli andata e ritorno sono diretti: ricalcoli ogni differenza consecutiva, ne faccia la media, divida sessantamila per quella media e confermi che il risultato uguaglia il bpm pubblicato entro l'arrotondamento a dodici decimali.
Casi d'uso
Stimare il tempo di sessione da un groove battuto
I produttori battono il polso su una traccia di riferimento o un take live, incollano i timestamp in millisecondi e impostano il BPM del progetto nella DAW dal tempo medio restituito.
Domande frequenti
Come si calcola il BPM dai timestamp di tap?
Misuri ogni intervallo positivo consecutivo in millisecondi, ne calcoli la media e ottenga il BPM come 60000 diviso l'intervallo medio. Un periodo medio di battito indica quanti battiti stanno in un minuto.
Di quanti tap ho bisogno?
Almeno due timestamp (un intervallo positivo). Più tap migliorano la stabilità perché la media attenua gli errori di sincronia di un singolo colpo.
Cosa succede se i miei tap non sono strettamente crescenti?
Qualsiasi intervallo zero o negativo indica sequenza fuori ordine o duplicata.
Servono orologi assoluti o posso partire da zero?
Entrambi vanno bene. Contano solo le differenze tra timestamp consecutivi, quindi offset relativi che partono da 0 equivalgono a millisecondi assoluti in stile epoch.
Il calcolatore di BPM da intervalli di tap è gratuito?
Lo strumento nel browser è gratuito e gira in locale.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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)Esempio di richiesta
{
"taps": [
0,
500,
1000,
1500
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.music_bpm_from_tap",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Le sequenze non monotone o incomplete vengono rifiutate con un chiaro errore invalid_input così che gli script non inventino mai un tempo da un solo clic o da un elenco in ordine inverso. Il percorso è matematica pura —senza rete, senza semi casuali, senza dipendenza dall'orologio di sistema—, quindi l'esecutore gratuito del browser e l'API prepagata restituiscono lo stesso JSON dopo un arrotondamento decimale fisso a ogni chiamata.
Come chiamare l'API e cosa restituisce
L'array deve contenere almeno due e al massimo cinquecento numeri finiti. Preferisca inviare numeri piuttosto che stringhe preformattate quando Lei controlla il client; le stringhe numeriche sono accettate solo se corrispondono a un pattern numerico finito rigoroso. Orologi relativi che partono da zero vanno bene, e altrettanto i millisecondi assoluti in stile epoch, perché solo le differenze entrano nella media. Invii un corpo JSON con un solo campo array obbligatorio denominato taps, accettato anche con gli alias timestamps, tap_times, times_ms e tap_timestamps. Il valore assoluto di ciascun timestamp resta entro il limite pubblicato affinché le differenze rimangano ben definite in precisione doppia IEEE. In caso di successo la risposta ripete la sequenza arrotondata taps_ms, tap_count, l'elenco intervals_ms dei delta positivi consecutivi, interval_count, mean_interval_ms e il sinonimo beat_ms per la spaziatura media, bpm come tempo stimato, unit con la stringa bpm, formula che indica bpm uguale a 60000 sulla media degli intervalli positivi consecutivi, message come breve riepilogo e steps che percorrono dai timestamp grezzi ogni intervallo, la media e la divisione finale. Array mancanti, valori non array, meno di due timestamp, voci non finite, stringhe vuote che falliscono la coercizione numerica e qualsiasi intervallo non positivo tra tap consecutivi restituiscono invalid_input e non vengono mai addebitati. Il prezzo è una tariffa fissa di $0.002 per richiesta andata a buon fine con unità item.
Consigli pratici, limiti e ricerche correlate
Mantenga la sequenza strettamente crescente; se il Suo strato di cattura può emettere timestamp duplicati sotto carico elevato, deduplici o aggiunga un piccolo offset prima di chiamare l'API. Nell'insegnamento, abbini una sequenza stabile di percorso felice a un caso di errore deliberato con un solo tap o ordine inverso così che gli allievi vedano subito invalid_input. Le attività fallite che restituiscono invalid_input non consumano il saldo prepagato, il che mantiene economici gli script esplorativi quando gli allievi sondano di proposito i casi limite.
Casi di integrazione
Esercizi di classe su tap-tempo e reciproco
Gli insegnanti forniscono elenchi ordinati di tap affinché gli studenti ricalcolino a mano l'intervallo medio e 60000/media e poi confrontino il campo BPM deterministico della risposta API.
Test unitari per metronomi e sequenzer
Gli sviluppatori alimentano array di tap sintetici fissi e verificano bpm, mean_interval_ms e intervals_ms contro fixture golden senza hardware audio né timer dell'orologio di sistema.