A feature-packed, portable metronome application for Windows, built with Qt 6.
![]() |
![]() |
|---|
- Precise audio engine — sub-sample accurate pulse scheduling via miniaudio (no DLLs)
- Tap Tempo — tap to set the BPM in real time
- Count-in — configurable lead-in before playback begins
- Timer — built-in countdown timer
- Speed Trainer — automatically ramps tempo up or down across bars
- Time Signatures — configurable numerator and denominator, with compound time support
- Subdivisions — extensive library covering standard, dotted, triplet, quintuplet, septuplet, duplet, and quadruplet patterns
- Custom Subdivision Editor — build your own patterns with drag-to-reorder pulse tiles, rest/accent toggles, tuplet brackets, and undo support
- Polyrhythm — overlay a secondary rhythm against the primary beat (e.g. 3:2, 5:4, 7:3) with quick-select presets
- Accent Beats — individually toggle accents per beat in any time signature
- SVG Note Rendering — subdivision patterns displayed as accurate music notation
- Pieces & Sections — save named pieces, each with unlimited sections
- Per-section settings — tempo, time signature, subdivision, accents, and polyrhythm stored per section
- Section reordering — drag or use keyboard shortcuts to rearrange sections
- Inline rename — double-click a section label to rename it
- JSON persistence — presets saved to
presets.jsonfor easy portability
- Beat Indicator — visual dots for beats and subdivisions; switches to an LCM grid in polyrhythm mode
- OBS Beat Window — detachable overlay showing tempo, beat flash, and notation; ideal for streaming/recording capture
- Always on Top — keep the window visible over other applications
- Colour Personalisation — choose a custom accent colour throughout the UI
- Multiple Click Sounds — select from different sound sets in settings
- Keyboard-driven — start/stop, section navigation, and more without touching the mouse
| Shortcut | Action |
|---|---|
Space |
Start / Stop |
↑ / ↓ |
Select previous / next section |
Ctrl+↑ / Ctrl+↓ |
Move selected section up / down |
Double-click section label |
Rename section |
Ctrl+Z (Custom Subdivision Editor) |
Undo last pulse edit |
SH4DOWNOME is fully portable — no installer required.
- Download the latest release
.zipfrom the Releases page. - Extract the contents to any folder.
- Run
SH4DOWNOME.exe.
Migrating from a previous version: copy your
presets.jsonfile from the old data folder into the new data folder to keep all your saved pieces and sections.
Requirements
- Qt 6.9.1 (MinGW 64-bit recommended on Windows)
- CMake ≥ 3.16
- C++17 compatible compiler
Steps
git clone https://github.com/your-username/SH4DOWNOME.git
cd SH4DOWNOME
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config ReleaseThe resulting binary is statically linked — no Qt or runtime DLLs are needed on the target machine.
- Create a piece — nothing is saved until you create a piece. Hit New Piece, give it a name, then add sections as needed.
- Add sections — each section stores its own tempo, time signature, subdivision, and accent pattern.
- Navigate sections — use
↑/↓arrow keys or click in the section list. - Set your tempo — type directly in the BPM box, drag the slider, or use Tap Tempo.
- Choose a subdivision — click the notation icon to the left of the tempo area to open the Subdivision Selector.
- Set time signature — click the time signature display to change it.
- Start / Stop — press
Spaceor click the play button. - OBS Beat Window — a detachable overlay window opens by default on first run. You can hide it permanently in Settings.
- Custom Subdivisions are in an early stage of development and may not always behave as expected.
- Some subdivision notation glyphs can appear slightly misaligned.
| Component | Technology |
|---|---|
| UI framework | Qt 6 (Widgets, Svg) |
| Audio engine | miniaudio (header-only) |
| Build system | CMake |
| Persistence | JSON (presets.json) / QSettings |
| Notation rendering | Custom SVG assembler |
This project is licensed under the GNU General Public License v3.0.

