Keep the beat.
How closely can you tap along with a metronome, and how well can you hold the tempo once the sound stops?
Original study
- Repp, B. H. (2005). Sensorimotor synchronization: A review of the tapping literature. Psychonomic Bulletin & Review, 12(6), 969–992. Source
- Repp, B. H., & Su, Y.-H. (2013). Sensorimotor synchronization: A review of recent research (2006–2012). Psychonomic Bulletin & Review, 20(3), 403–452. Source
- Flach, R. (2005). The transition from synchronization to continuation tapping. Human Movement Science, 24(4), 465–483. Source
- Anglada-Tort, M., Harrison, P. M. C., & Jacoby, N. (2022). REPP: A robust cross-platform solution for online sensorimotor synchronization experiments. Behavior Research Methods, 54(5), 2271–2285. Source
Our adaptation
A browser adaptation of the synchronization–continuation task (Repp, 2005). In each round a metronome clicks 12 times (the first 3 are warm-up) and the participant taps with each click; when the sound stops, 12 more taps continue at the same tempo. Five rounds use five tempos (inter-onset intervals of 450, 550, 650, 750, 850 ms; order from the game seed). Clicks are scheduled on the audio clock and taps are timed with the event timestamp; if sound is unavailable, a silent mode flashes a light with each click.
Differences from the original study
- Audio output and touch detection latency differ between devices; mean asynchrony should not be compared directly with laboratory values.
- Bluetooth headphones add noticeable latency.
Measured variables
The columns of the open data file. List fields are expanded into numbered columns (for example rt_60, est_3); JSON columns contain only numbers and fixed stimulus names.
| Column | Type | Description |
|---|---|---|
r | JSON | Rounds: [{"i": inter-onset interval ms, "v": 1 = light only, "t": taps (ms from the first click), "n": matched clicks, "nc": continuation taps, "asyn": mean asynchrony ms, "abs": mean absolute asynchrony, "sda": asynchrony SD, "iti": mean continuation interval ms, "cv": interval variability %, "drift": interval slope, "tempo": tempo deviation %}]. |
pts_1 | number | Round score: mean of the synchronization score 10 / (1 + (SD / 40 ms)^1.6) and the continuation score 10 / (1 + ((|tempo %| + 0.5 × CV) / 6)^1.6). (item 1) |
pts_2 | number | Round score: mean of the synchronization score 10 / (1 + (SD / 40 ms)^1.6) and the continuation score 10 / (1 + ((|tempo %| + 0.5 × CV) / 6)^1.6). (item 2) |
pts_3 | number | Round score: mean of the synchronization score 10 / (1 + (SD / 40 ms)^1.6) and the continuation score 10 / (1 + ((|tempo %| + 0.5 × CV) / 6)^1.6). (item 3) |
pts_4 | number | Round score: mean of the synchronization score 10 / (1 + (SD / 40 ms)^1.6) and the continuation score 10 / (1 + ((|tempo %| + 0.5 × CV) / 6)^1.6). (item 4) |
pts_5 | number | Round score: mean of the synchronization score 10 / (1 + (SD / 40 ms)^1.6) and the continuation score 10 / (1 + ((|tempo %| + 0.5 × CV) / 6)^1.6). (item 5) |
points | number | Total score (0–50). |
visual | integer | Number of rounds played in light mode. |
nma | number | Mean asynchrony in sound rounds (ms; negative = before the click). |
nma_visual | number | Mean asynchrony in light rounds (ms). |
tempo | number | Mean tempo deviation in continuation (%; negative = speeding up). |
drift | number | Mean interval slope in continuation. |
cv | number | Mean interval variability in continuation (%). |
latency | number | Audio output latency reported by the browser (ms; empty if not reported). |
offset | integer | Whether the audio clock was converted with the output timestamp (1) or an estimate (0). |
Columns present in every file (14)
row_id | string | Row code. Regenerated at random in every release; it does not identify a person and cannot be matched across releases or experiments. |
experiment | string | Short name of the experiment (URL slug). |
experiment_version | integer | Version of the answer format. For experiments whose format changed, only the current format is published. |
date | YYYY-MM-DD | YYYY-Www | YYYY-MM | Day the answer was given (Istanbul time). If fewer than 5 answers share the same day, language and device, it is coarsened to the ISO week, and to the month if that is still too few. |
date_precision | day | week | month | Precision of the date column. |
lang | tr | en | (boş) | Interface language. Language recording started in the first week of October 2026; for earlier answers it is known only in experiments whose stimuli depend on the language, and empty otherwise. |
device | desktop | mobile | tablet | (boş) | Device class reported by the browser (class only; browser details are neither stored here nor published). |
source | site | embed | Where the answer came from: the balabs site or the experiment embedded on another site. The embedding site is not published. |
mode | free | daily | challenge | race | session | (boş) | Play mode in scored experiments: free play, daily round, challenge, race room, experiment session. Empty for unscored experiments and for older answers that did not store it. |
color_vision | normal | rg | by | contrast | (boş) | In color-based experiments, the color vision mode the participant chose: normal, red-green, blue-yellow or high contrast. Stimuli are generated along different axes per mode, so compare within a mode. Empty for other experiments. |
first_play | 1 | Every row is a participant’s first play of this experiment (always 1). Replays are stored only as leaderboard scores and are not part of the open data. |
seen_before | yes | no | unsure | (boş) | Participant’s own report of whether they had seen this experiment or its known answer before (in experiments that ask). |
duration_s | number | Time from the start of the experiment to submitting the answer, in seconds (measured in the browser, 0.1 s). |
play_score | number | Leaderboard score of the first play (scored experiments; defined on the method card). Empty for unscored experiments. |
Exclusion criteria
The server checks that each of the five tempos appears exactly once and that taps are within range; it computes asynchrony, tempo and scores from the tap times itself.
- Only each participant's first answer to this experiment; replays are not included.
- Simulated rows, bots, banned and sample accounts are not included.
- Answers before 3 October 2026 are not included (the first day the open data notice was live).
Scoring
Leaderboard score: total score (0–50); computed from measures unaffected by a device's constant latency (variability and continuation tempo). Higher is better.
Leaderboard measure: rhythm (higher is better). The play_score column in the open data is this score for the first play.
Version notes
- October 2026
The interface language (lang) started being stored with each answer; for earlier answers it is known only in experiments whose stimuli depend on the language, and empty otherwise.