Playing
The transport is one button between the two clocks it governs: Elapsed Time on the left, and Pause Count on the right whenever a pause is set. Press it to start, press it again to stop.
How the click is timed
Metronomo does not schedule clicks one at a time. When you press play, it renders one whole bar of the Groove — every beat and every subdivision slot, at their exact offsets — into an audio buffer, and hands that buffer to the audio engine to loop.
The spacing between clicks is therefore fixed when the bar is rendered, and the loop is driven by the device’s audio hardware clock. Nothing re-decides each beat’s moment while you play, so nothing accumulates the drift that per-click scheduling on a general-purpose timer would.
A master limiter sits at the end of the chain, so a bar with many loud slots in it compresses rather than clipping.
The animation across the bar follows the audio rather than leading it: the highlight is drawn from the playback position the audio engine reports.
This is not a promise of absolute accuracy. Timing still depends on your device and its audio configuration — see the Terms of Use for what that does and does not promise.
When the screen sleeps
Playback continues when you leave Metronomo or your screen goes dark. Both systems are told the same thing — that this is media playback — and each keeps it going its own way.
On Android, declaring the audio as media playback is what stops the system from killing it in the background, and while the transport is running the app also holds a partial wake lock, which keeps the CPU clocked so the scheduler does not freeze when the screen turns off.
A partial wake lock holds the processor, not the display. Your screen still sleeps on its own schedule — that is the point of taking a partial one rather than a full one — and the click keeps going after it does. The lock is taken when you press play and released when you stop.
On iOS, the app runs a playback audio session, and that on its own keeps the app and its scheduler running with the screen locked. No wake lock is needed, and none is taken.
While it plays, a card appears on your lock screen — and in the notification shade on Android, or Control Center on iOS — with three lines:
| Line | What it shows |
|---|---|
| Title | The Groove’s name, or Metronome if the one you are playing has not been named. |
| Subtitle | The Groove’s profile — for example, 4 beats · 120 BPM. |
| Third line | The tempo marking for that tempo, such as Allegro. |
Permissions
On iOS, Metronomo asks for nothing. The audio session described above needs no permission to run, and the lock-screen and Control Center player comes with it rather than being granted separately. Nothing else in the app has a permission to ask for, so iOS never prompts you.
Metronomo’s Android manifest declares nine permissions. None of them prompt you except
POST_NOTIFICATIONS, which Android asks about the first time the playback card appears.
| Permission | Why it is there |
|---|---|
FOREGROUND_SERVICE |
Playing while the app is not in front of you. |
FOREGROUND_SERVICE_MEDIA_PLAYBACK |
The same, declared as the media-playback kind. |
POST_NOTIFICATIONS |
The playback card on the lock screen and in the shade. |
WAKE_LOCK |
The partial wake lock described above. |
INTERNET |
Sending anonymous analytics, and nothing else. It is unused when you switch analytics off. |
VIBRATE |
Nothing in Metronomo. It arrives from the libraries the app is built on. |
SYSTEM_ALERT_WINDOW |
The same — a framework default, not a feature. |
READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE |
The same, and both capped at Android 12. Export and import use the system file picker, which needs no storage permission. |
Metronomo asks for no microphone access on either platform, and contains no recording code. The usage string iOS requires is in the app only because its audio engine links Apple’s audio APIs, which nothing in Metronomo calls. It makes sound; it never listens.