Skip to content

Releases: keithadler/helm

Helm 1.0.2

Choose a tag to compare

@keithadler keithadler released this 19 Sep 15:29

Fixes heap corruption that could crash Helm.

When the engine removed a processor that was not in its router's lists, it erased a range starting at the end of the vector. That reads and writes past the buffer, and the assert meant to catch it is compiled out of a release build, so the shipped plugin quietly corrupted memory instead of complaining. It was reached in practice when modulation was disconnected while audio was being processed, and the damage showed up wherever the program looked next, which is why it crashed somewhere different each time.

All four places that did this now check before erasing.

Found by running pluginval at its strictest level with the tests in random order, then pinned down with Guard Malloc, which pointed straight at the copy inside the erase. Before the fix that run died two thirds of the way through every time; after it, all 91 tests complete.

One known report remains: pluginval says amp_attack is not restored after a state restore. That one is not a state bug. The host changes program during the test, and a program change in Helm loads a factory patch, which overwrites every parameter. Whether the 274 factory patches should keep being offered to a host as programs is a design question rather than a fix, so it is left alone for now.

Nothing else changes from 1.0.1. Packages for Linux (x86_64 and arm64), macOS (universal) and Windows (x64 and ARM) are attached below.

Full details in CHANGELOG.md.

Helm 1.0.1

Choose a tag to compare

@keithadler keithadler released this 18 Sep 06:14

Two fixes found by running pluginval against the 1.0.0 plugins at its strictest level, with the tests in random order.

  • The Audio Unit could crash when a host restored state or changed program from a thread other than the main one, because the plugin updated its sliders right there. The refresh now happens on the main thread. After the fix the AU passes eight randomized full-strictness suites.
  • A preset load or session reload could be partly undone by parameter changes still queued for the audio thread from just before it. The plugin now restores state under the audio lock and drops that stale queue first.

Nothing else changes from 1.0.0. Packages for Linux (x86_64 and arm64), macOS (universal) and Windows (x64 and ARM) are attached below by the release workflow; each holds the standalone, every plugin format the platform supports, and the 274 patches.

Full details in CHANGELOG.md.

Helm 1.0.0

Choose a tag to compare

@keithadler keithadler released this 17 Sep 06:07

The revival release. Helm, Matt Tytel's free polyphonic synthesizer, archived in 2022, built again on a current JUCE and in current plugin formats: CLAP, VST3, Audio Unit (macOS) and LV2, plus Helm's own standalone application, on Linux, macOS and Windows. Same synth, same sound, same 274 factory patches.

What is new

  • CLAP, through clap-juce-extensions. VST2 and AAX are gone; their SDKs can no longer be distributed.
  • The factory bank is found in the patches folder next to the binary, so a download works without an installer. Keep that folder beside the standalone or the plugin, or copy it to the system location Helm has always used.
  • A parameter set by the host is applied to the engine at once, so hosts that set and read back without processing see the value they set.
  • Two community fixes that had waited in the original repository: the filter style not refreshing when the window first opens (mtytel#275), and an unsigned negation in the oscillator.
  • Tests that render audio without a window or a device, run on three platforms; the CLAP passes clap-validator, the Audio Unit passes auval, the LV2 passes lilv.

Packages for each platform are attached below by the release workflow: Linux x86_64 and arm64, macOS universal, Windows x64 and arm64. Unzip; run the standalone from anywhere, or copy a plugin into your plugin folder (paths in the README). The macOS build is unsigned; if macOS refuses it, run xattr -dr com.apple.quarantine on it once.

Full details in CHANGELOG.md. Helm is by Matt Tytel; his successor to it is Vital.