Skip to content

Cache folder, organ folder, BMP artwork and a scrolling Engine tab - #26

Merged
bonninr merged 4 commits into
mainfrom
feature/cache-folder
Sep 20, 2026
Merged

bonninr merged 4 commits into
mainfrom
feature/cache-folder

Conversation

@bonninr

@bonninr bonninr commented Sep 20, 2026

Copy link
Copy Markdown
Owner

Four changes, for a 0.5.3 release.

Cache folder (your request). The decoded sample cache is as large as the organs played through it, and a machine often has a small fast disk and a large slow one. The folder is now a setting on the Engine tab, saved as soon as it is chosen. Empty means the default place, so existing installations are unchanged; a folder that cannot be created falls back to it rather than stopping the load.

Organ folder (#12, reported still broken). The search for OrganInstallationPackages now also walks up from the path as given and from the path with its symlinks resolved. One layout cannot be inferred from a path at all -- packages beside the link, definition opened through the resolved path -- so the root can also be named outright, saved with the organ, with --organ-root for the command line. A test builds that layout and shows both halves.

BMP artwork (#24). A reader for 1, 4, 8, 16, 24 and 32-bit BMP, compressed or not, bottom-up or top-down. The console tries JUCE first, so sets shipping PNG are untouched. Tested against generated files in each depth.

Engine tab scrolls (#21). The settings window on macOS opened too short for this tab; it now scrolls.

CI artifacts also get a seven-day retention; the default ninety had grown to seven gigabytes.

Tests: 85/85, including new ones for BMP and the symlink layout. The symlink layouts skip on Windows, which refuses to create links, and run on the macOS and Linux CI.

A decoded cache is as large as the organs played through it, and a machine
often has a small fast disk and a large slow one. The cache folder is now a
setting, on the Engine tab beside the cache mode, saved as soon as it is
chosen. Empty means the default place beside the other settings, which is
what every existing installation keeps.

A folder that cannot be created -- a drive that is not plugged in -- falls
back to the default rather than stopping the load.

CI artifacts are also given a seven-day retention. At a few hundred
megabytes a run, the default ninety days had grown to seven gigabytes.
Reported against 0.5.0 (#12): a set still failed to load when its
OrganDefinitions folder was a symbolic link. The search for
OrganInstallationPackages now also walks up from both the path as given and
the path with its links resolved, which covers a definition that lands
several levels below the folder holding the packages.

One layout cannot be worked out from the path at all: when the packages sit
beside the link and the definition is opened through the resolved path,
nothing in that path leads anywhere near them. For that the organ's root
can now be named outright, saved with its other settings, and there is a
matching --organ-root for the command line.

A test builds that layout and shows both halves: the path as given finds
the packages, the resolved path cannot, and naming the folder loads it.
Reported in #21: on macOS the settings window opens too short for the
Engine tab, and the rows at the bottom cannot be reached without resizing
it by hand. The tab now scrolls when the window is shorter than its
contents.

The tab also gains the organ folder control, for a set whose packages the
definition's path does not lead to.
Reported in #24: a set whose jambs, keys and drawstops are BMP files drew
black, and converting the same files to PNG fixed it. JUCE reads PNG, JPEG
and GIF; Hauptwerk predates all three as a console format, and the older
sets are painted in BMP.

Adds a reader for the shapes those sets use: 1, 4, 8, 16, 24 and 32 bits
per pixel, uncompressed or RLE, bottom-up or top-down, honouring the colour
masks a BI_BITFIELDS header declares. A 32-bit file whose alpha bytes were
never written is treated as opaque rather than drawn as nothing.

The console tries JUCE first and falls back to this, so nothing changes for
a set that ships PNG.
@bonninr bonninr changed the title Let the sample cache live where the player chooses Cache folder, organ folder, BMP artwork and a scrolling Engine tab Sep 20, 2026
@bonninr
bonninr merged commit 1315b72 into main Sep 20, 2026
12 checks passed
@bonninr
bonninr deleted the feature/cache-folder branch September 20, 2026 03:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants