Skip to content

Doobie v0.12.0

Choose a tag to compare

@github-actions github-actions released this 29 May 14:53
· 11 commits to main since this release

Changed

  • Whole UI restyled as a cassette deck. Pure-black panels (#000) matching
    the cassette interior, white linework everywhere, knobs redrawn as cassette
    spindle / idler-roller analogues (dark inset + white rim + white pointer +
    white centre dot), toggles as small white-rim circles with an amber LED dot
    when lit, head-matrix pads flip to a solid white face with black letter when
    selected. Teal dropped entirely; amber kept only as the single "this is
    live" accent (head body when playing, lit toggle LED, VU bar). The
    brushed-metal gradients and horizontal grain on the chassis are gone.
  • Cassette grew to 180 px as the centerpiece of the DELAY panel (was 98 px),
    with the head, both reels including 3-spoke spindles, and the tape line
    through all idler rollers clearly readable.
  • Reel rotation now tracks delay time. Real tape echoes have fixed
    head-to-head distance, so longer delay → slower capstan. Mapping:
    speed = clamp(pow(0.375 s / t, 0.6), 0.15, 5.0) — 1.0 × at the 375 ms
    default, ~4.3 × at a 30 ms flanger, ~0.15 × at an 8 s dub. Sync mode
    reapplies quarters * 60 / bpm so the visual tracks host tempo. Freeze
    and delay-bypass stop the capstan.
  • Window height 870 → 1024 to fit the bigger cassette + the echo-tap
    strip without crushing the knob rows.

Added

  • Echo-tap timeline strip sitting below the cassette in the DELAY panel
    (56 px). The cassette shows transport state; the strip shows where the four
    heads land along 0 → master-delay with feedback fall-off. Complementary,
    not replacing each other.
  • macOS code-signed + notarized release pipeline. .github/workflows/
    builds Doobie on every push to main and every vX.Y.Z tag — universal
    arm64 + x86_64, code-signed with the Developer ID Application cert, packaged
    as a Distribution .pkg signed with the Developer ID Installer cert,
    notarized via Apple's notary service, stapled. Versioned tags publish a
    stable release; main pushes update a rolling nightly prerelease. End users
    install with no Gatekeeper warning.
  • Linux CI build on ubuntu-22.04. Catches platform-specific build issues
    at PR time (would have caught the SIMD bug below).
  • packaging/macos/ with bootstrap-signing.sh that takes a fresh Apple
    Developer membership all the way to populated GitHub Secrets in one pass:
    generates RSA key + CSR locally, opens the developer portal for the cert
    bits Apple's API refuses to issue, bundles each cert into a .p12 with a
    random password, derives the codesign identity CN from the cert subject,
    and pushes all 11 secrets via gh secret set — cert bytes stream via
    stdin so they never appear in shell history.

Fixed

  • Linux build error at ConvolutionReverb.h:205 with
    juce::jmax<juce::int64>. JUCE 8's maths overload set includes
    dsp::SIMDRegister<T> variants, so the compiler considers
    SIMDRegister<long long> during overload resolution — which requires a
    complete type, which on Linux's SSE-only fallback is forward-declared but
    never defined for long long. Replaced the templated call with a plain
    ternary; same call now resolves on all platforms.