Skip to content

Releases: SH4DOWSIX/SH4DOWNOME

4.0.1

16 Jun 20:28
b1debde

Choose a tag to compare

SH4DOWNOME v4.0.1

Highlights

  • Added automatic GitHub update checking on startup.
  • Added manual update checking from Settings.
  • Added the ability to ignore a specific update version.
  • Added separate saved beat window style preferences for subdivision and polyrhythm modes.

Android

  • Added Android launcher icons.
  • Added Android OpenSSL packaging so HTTPS update checks can work on Android.
  • Android builds now support the newer Qt/Android SDK requirements.
  • APKs are debug/unsigned builds. Android may show install warnings when installing; this is expected for this release.

Interface Refresh

  • Reworked the main app layout for better Android and small-screen usability.
  • Redesigned the section list with:
    • inset panel styling
    • rounded corners
    • section number badges
    • improved selected-row styling
    • better column alignment
    • cleaner tempo alignment
  • Updated most controls to use a consistent inset visual style.
  • Improved the preset selector, time signature, subdivision, tempo, volume, timer, and speed controls.
  • Updated toolbar buttons, mode buttons, START/STOP, and beat-window button styling.
  • Improved settings layout and added a manual update check button.

Beat Window

  • Beat window now saves the last selected style separately for:
    • normal subdivision mode
    • polyrhythm mode
  • Polyrhythm-only styles are now only shown when appropriate.

Update Checking

  • SH4DOWNOME now checks GitHub releases on startup.
  • If a newer version is available, the app shows an update dialog.
  • Users can:
    • open the GitHub release page
    • dismiss the update for now
    • ignore that specific version
  • Ignored versions are remembered locally.
  • Manual update checks from Settings bypass ignored-version suppression.
  • Android HTTPS support was fixed by packaging OpenSSL runtime libraries.

Sounds

  • Renamed wood sound sets to:
    • Wooden
    • Wooden 2
    • Wooden 3
  • Kept Default at the top of the sound list.
  • Sorted the remaining sound sets alphabetically.

4.0.0

15 Jun 23:26
1c11229

Choose a tag to compare

SH4DOWNOME 4.0.0

SH4DOWNOME 4.0.0 is a major update focused on Android support, a redesigned responsive interface, improved rhythm workflows, expanded Beat Window visuals, and more reliable section-based practice.

Highlights

  • Added Android builds.
  • Rebuilt the main interface with a responsive Android-friendly layout.
  • Added multiple Beat Window visual presets.
  • Improved polyrhythm playback with per-beat and per-bar modes.
  • Improved custom subdivision support and persistence.
  • Added the new Woodblock 2 sound set.
  • Fixed several section workflow, Beat Window, and always-on-top issues.

Android Support

  • Added Android build support across supported ABIs.
  • Rebuilt the GUI so SH4DOWNOME works properly on smaller touch screens.
  • Added larger touch targets and a mobile-friendly control layout.
  • Improved Android input handling for text, numbers, and bulk section entry.
  • Updated Android packaging for Qt 6.11.1.
  • Added Android compile SDK 36 support.

Interface

  • Reworked the main layout for both desktop and Android.
  • Desktop keeps the dense table-based workflow.
  • Android now uses a stacked touch-first layout.
  • Improved grouping for tempo, subdivision, polyrhythm, count-in, timer, speed trainer, accents, and volume.
  • Added/fixed keyboard workflow:
    • Space starts/stops playback.
    • Up / Down selects sections.
    • Ctrl+Up / Ctrl+Down moves the selected section.
    • Double-click section labels to rename.

Beat Window

  • Added a Beat Window style selector.
  • Added multiple Beat Window visual presets.
  • Added timer remaining display to the Beat Window.
  • Added subdivision relation display across Beat Window presets.
  • Beat Window now filters styles depending on whether polyrhythm mode is active.
  • Fixed Pulse preset text moving during the pulse animation.
  • Fixed Sweep preset timer/subdivision overlap.

Rhythm Features

  • Improved polyrhythm behavior with per-beat and per-bar modes.
  • Improved common polyrhythm ratios in normal time signatures.
  • Improved polyrhythm state handling during playback, count-in, and speed trainer use.
  • Improved custom subdivision persistence.
  • Custom subdivision patterns are now stored alongside presets in presets.json.
  • Improved display handling for long custom subdivision patterns.

Sounds

  • Added Woodblock 2 click sound:
    • wooden2.wav
    • wooden2_accent.wav

Fixes

  • Fixed section tempo changes not saving after restarting the app.
  • Fixed regular up/down section navigation.
  • Fixed section moving with Ctrl+Up / Ctrl+Down.
  • Fixed Windows title bar disappearing when enabling always-on-top.
  • Fixed always-on-top behavior so it works without needing an app restart.
  • Fixed Android packaging failure caused by AndroidX requiring compile SDK 36.
  • Fixed Beat Window style list showing incompatible styles in polyrhythm mode.

Android APK Note

The Android APKs included with this release are debug builds and are not release-signed.

When installing manually, Android may show warnings such as:

  • the app is from an unknown source
  • the app was built for testing
  • Play Protect or the package installer may ask for confirmation

These warnings are expected for the current APKs. They do not mean the build failed.

Build Notes

  • Current builds use Qt 6.11.1.
  • Android packaging requires Android SDK Platform 36.
  • Some Android Java deprecation warnings may appear during build; these do not currently block packaging.

3.0.4

12 Apr 13:42
1c11229

Choose a tag to compare

What's Changed

🔄 Auto Update Checker

  • On startup, the app silently checks the GitHub releases API for a newer version; a dialog is shown only if one is found, offering to open the download page in your browser
  • Added a Check for Updates... button to the Settings dialog for manual checks

🪟 Title Bar Version

  • Window title now displays the current version: SH4DOWNOME v3.0.4

🐛 Bug Fixes

  • Fix rest checkboxes overlapping subdivision grid — When selecting a subdivision pattern in the Subdivision Selector dialog, the Rest checkbox row now correctly expands the dialog height (250px → 290px) rather than clipping into the pattern grid. The dialog also properly returns to its compact size when switching tabs or clearing the selection.

🧹 Cleanup: Remove Unused Assets

Removed 30 orphaned/dead files:

Orphaned artifacts

  • resources/accent_dump.txt, resources/accent_hex.txt — leftover CertUtil inspection artifacts
  • preset.json (root) — stale empty preset file superseded by the runtime data/presets.json
  • 16 legacy pre-rendered rhythm icons from resources/quarter.svg, eighth.svg, sixteenth.svg, triplet.svg, treble_clef.png, and 11 compound-rhythm SVGs (dotted8th_16th, eighthresteighth, etc.) that were never loaded; NoteAssembler renders all note graphics dynamically

Unused svg/ assets (11 files)

  • flag*_down.svg (×4) — only _up flag variants are ever returned
  • accidental_flat.svg, accidental_natural.svg, accidental_sharp.svg — no references anywhere
  • stem_up.svg, beam_single.svg, beam_double.svg, dot.svg — declared as stubs in NoteAssembler; all drawn directly via QPainter

resources.qrc refactored

  • Merged three duplicate <qresource prefix="/resources"> blocks into one
  • Removed all entries for deleted files

3.0.3

11 Apr 11:39
a8d71aa

Choose a tag to compare

What's Changed

🐛 Bug Fixes

  • OBS Beat Window — resize no longer breaks after changing settings
    The OBS beat window would resize correctly on first launch but lose its resize capability after opening and saving the Settings dialog. This was caused by a static one-shot block in the settings handler that forced the beat widget into a fixed 306 px height with QSizePolicy::Fixed, overriding the Expanding policy applied when the popout window was created. The block has been removed, allowing the window to remain freely resizable across settings changes and app sessions.

3.0.2

11 Apr 10:15
ee8846c

Choose a tag to compare

Custom Subdivision Dialog — UX Improvements

New Features

  • Insert after selection — "Add Pulse" now inserts immediately after the selected pulse instead of always appending to the end
  • Drag to reorder — Pulse tiles can be dragged left/right to swap positions within the pattern
  • Ctrl+Z undo — Up to 50-step undo history; all add, remove, clear, drag, and type changes are undoable
  • Total duration display — Live beat count label next to the Preview button, time-signature-aware (respects compound time, half-note denominators). Colour-coded: green = fills whole bars, teal = whole beats, yellow = fractional
  • Play preview — "▶ Preview" button plays the current pattern exactly once at the current tempo then stops automatically. Clicking again stops early
  • Preset dropdown — Individual preset buttons replaced with a QComboBox + Apply button (10 built-in presets). Applies at the cursor position rather than always appending
  • Clearer pulse selection — Selected pulse shows a solid 3 px cyan border and top strip for unambiguous visual feedback
  • Dotted / Accented grouped with Note / Rest — All four type controls are now in one logical row separated by a thin divider, instead of Dotted/Accented being stranded on the right

Changes

  • Tuplet × button relabelled to None
  • CustomSubdivisionDialog now accepts numerator, denominator, and compoundTime from the calling SubdivisionSelectorDialog, making all duration calculations and beat counts time-signature-aware
  • Preview timer duration calculation uses compoundTime so playback stops correctly in compound and half-note-denominator meters
  • SubdivisionSelectorDialog forwards MetronomeEngine* and time signature context to both Create and Edit custom pattern dialogs
  • MainWindow passes &metronome when opening SubdivisionSelectorDialog

3.0.1

11 Apr 09:02
c893cbd

Choose a tag to compare

What's Changed

🗂️ Portable Data Storage

All app data now lives in a data/ folder next to the executable — no more Windows Registry writes or roaming AppData usage. The folder is created automatically on first launch.

File Contents
data/settings.ini Accent color, sound set, OBS state, always on top, volume
data/presets.json All presets and sections
data/custom_subdivisions.dat Custom subdivision patterns

🪟 OBS Beat Window

  • OBS window no longer opens automatically on first launch
  • Window size is now saved and restored between sessions
  • Added Lock size checkbox at the bottom of the window — prevents accidental resizing, state persisted to settings.ini

🐛 Bug Fixes

  • OBS widget not filling window — was locked to a fixed 306px height regardless of window size
  • Subdivision image not scaling — note image now scales proportionally with the window
  • Notes overflowing circle — wide patterns (e.g. 16× sixteenth notes) no longer extend outside the circle boundary

3.0.0

10 Apr 11:44
7b957b8

Choose a tag to compare

What's New

NoteValue Architecture Refactor

  • Replaced all raw float pulse.duration fields with a canonical NoteValue enum across the entire codebase
  • Every note is now identified by type (Quarter, DottedEighth, TripletSixteenth, etc.) rather than a raw duration fraction
  • Updated across all files: subdivision patterns, metronome engine, preset manager, pattern editor, main window, and serialisation
  • Legacy preset migration: old float-based JSON presets automatically converted on load
  • Preset JSON now saves human-readable note names instead of raw floats

Subdivision Presets — Additions

  • Simple time: added Sixteenth Triplets, and composite patterns with 32nd notes
  • Compound time: added composite patterns (Quarter + Two 16ths, etc.) and new tuplets (Duplets, Quartuplets, Quintuplets)
  • Added DupletNote and QuartupletNote enum values for compound-time tuplets

Custom Subdivision Dialog — Major Overhaul

  • Replaced duration dropdown with a visual note tile picker (7 plain notes: 64th → Whole)
  • Added tuplet button row (×, 2–9) replacing old triplet-specific tiles; invalid combinations automatically hidden per selected note
  • Clicking a note tile immediately adds a pulse when nothing is selected — no need to click "Add Pulse"
  • Pattern name field embedded directly in the dialog — no second popup after OK
  • Group title renamed: Edit Selected PulseAdd / Edit Selected Pulse

NoteValue System — Further Expansion

  • Added 22 new NoteValue entries covering duplet through nonuplet × Quarter/Eighth/Sixteenth/32nd (2–9 per beat)
  • Full serialisation and lookup support for all new values
  • New resolveTupletNoteValue helper for mapping base note + tuplet number to a concrete value

Rendering Fixes

  • Beam partial stubs no longer appear on both sides of a note — right-side stub now only draws on the first note in a group
  • Mixed tuplet patterns (some tuplet notes, some plain) now render sub-group brackets over consecutive tuplet runs instead of bare floating numbers
  • number_2.svg glyph added for duplet bracket display

Renaming

  • Rename Preset (Song)Rename Piece
  • New song name:New piece name:

2.0.2

08 Apr 16:16
cf69492

Choose a tag to compare

Release Notes

Audio & Timing

  • Pitch shift on startup fixed — samples now reloaded to actual device rate after the audio device opens, not the constructor default
  • Cumulative drift eliminated — beat and polyrhythm positions computed as round(cycle × barLength × sampleRate) per cycle instead of accumulated integer addition
  • First-beat click fixed — playback pre-rolls by one buffer period so hardware has settled before the first beat fires
  • Schedule swap deduplication — boundary beats no longer double-fire when tempo or subdivision changes mid-bar
  • Runtime sample rate changes handled gracefully — buffers reloaded and all pulse positions rescaled if device rate shifts during a session
  • Dotted note playback — duration stored as base × 1.5 so the engine reads it directly with no extra multiplier
  • Count-in correctly isolated from the repeating pattern in both subdivision and polyrhythm modes

Sections

  • New sections insert below the selected row instead of always appending to the bottom
  • Accents now save and recall correctly in standard subdivision mode

Note Rendering

  • Whole notes no longer draw a stem
  • Beam groups break correctly on Quarter, Half, and Whole notes — no more malformed glyphs
  • Triplet "3" bracket and number now render for all tuplet sizes, including single-note widgets
  • Mixed patterns (some triplet, some not) show per-note "3" markers via new perNoteTupletNumbers config field
  • Half and Whole note types now correctly resolved in all three configForPattern implementations

Custom Subdivision Editor

  • Dotted notes display correct glyph — all duration-to-type lookups divide by 1.5 before selecting the base note shape
  • Dotted note labels show proper names (Dot Qtr, Dot 8th, etc.) instead of raw numbers like 1.500
  • Note glyph no longer overlaps the label — reserved content area with gap enforced in each pulse widget
  • Triplet "3" no longer clips at the top of pulse widgets

Upgrading

Move the presets.json file to the new folder.

Known Issues

  • Custom Subdivisions are in an early state of development.
  • Some Subdivisions look a little funky.

v2.0.1 Alpha

04 Dec 21:25
7bada71

Choose a tag to compare

  • Fixed compound time thanks to Blake.
  • Changed the way the OBS Widget was shown to help with display scaling, it now opens in a new window for OBS to capture.

v2.0.0 Alpha

03 Dec 17:13
7bada71

Choose a tag to compare

Alpha version.

This is mostly stable and is the most up to date version I have, lost interest for the time being, might revisit in the future for bug squashes.

  • Changed audio engine and fixed bugs for more stability.
  • Added custom subdivision stuff to allow whatever you want to come up with, not sure on the issues/bugs.
  • You can reorder sections using CTRL+Arrows.
  • Space bar to play and stop.
  • Probably other stuff that I've forgot I added.