Skip to content

feat: add Golden Gate app - #605

Closed
kosmar wants to merge 1 commit into
ATOVproject:mainfrom
kosmar:feat/golden-gate
Closed

kosmar wants to merge 1 commit into
ATOVproject:mainfrom
kosmar:feat/golden-gate

Conversation

@kosmar

@kosmar kosmar commented Jul 22, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Adds Golden Gate (app ID 31, module fibonacci_gate): one-channel gate/pitch generator with Fibonacci gap spacing (ratios approach φ).
  • Configurator Speed (16th / 8th / Quarter) plus on-device override via Button+Fader; reverse; output modes Note / CC / 12-TET pitch / φ pitch.
  • Manual entry with gesture/LED tables; includes markdown table rendering for those tables.
  • Lists Golden Gate under long-press mute in the Apps muting overview.

Note: IDs 28 / 29 are reserved for Heat Pump (#603) and Grooves (#604). Independent from main.

Test plan

  • Flash firmware; load Golden Gate on a channel
  • Fader sets cycle length; Shift+fader sets Fibonacci depth (shallow dense → deep sparse)
  • Button+fader overrides Speed (16th / 8th / quarter)
  • Short press resets to downbeat; long press mutes
  • Shift+short reverses gap order; Shift+long cycles output modes (LED color)
  • Pitch modes: jack 1V/oct + related MIDI; gate modes pulse as expected
  • Configurator Manual → Golden Gate tables render correctly

Prerequisites

The platform pieces this app needs are under review as their own PRs, so that
each app PR stays small enough to review on its own.

Required — these APIs do not exist on current main:

This branch is still based on an older main that still had the removed clock
helper, which is why it builds on its own but not after a rebase.

On top of the PRs above there is an app-side change: ClockEvent::Tick became
Tick(u64) in #579, so the match arm here has to be updated.

Building any of this on a current Rust nightly also needs the toolchain fix in
#632.

This was referenced Jul 22, 2026
@kosmar
kosmar marked this pull request as draft July 24, 2026 14:17
@kosmar kosmar mentioned this pull request Aug 15, 2026
7 tasks
@kosmar
kosmar marked this pull request as ready for review August 22, 2026 08:48
Co-authored-by: Cursor <cursoragent@cursor.com>
@kosmar

kosmar commented Aug 22, 2026

Copy link
Copy Markdown
Contributor Author

Written by an AI coding agent on @kosmar's behalf.

Force-pushed a Wave-1 scope cleanup onto this branch (single commit vs main):

Please re-run CI on this branch. Happy to adjust anything for review.

@ArthurGibert

Copy link
Copy Markdown
Member

Hey @kosmar — two things, one about where this belongs and one about the manual format you're using.

Where it belongs: this looks like a great fit for faderpunk-community-apps, which just went public. New on-device apps are meant to land there rather than here directly — see CONTRIBUTING.md's "Standalone companion tools" section, and the pointer it promised once that repo was live.

Ran fibonacci_gate.rs against the actual submission gate (pr-scope-check.sh) — clean, no unsafe code, no panics, no MAX11300/storage bypass, no un-yielding loop — and did a real cargo build against current main with it dropped in, which passed too. It does have 12 .unwrap()/.expect() calls without a justification comment, which the gate soft-flags for human judgment rather than blocking (same treatment some existing official apps get) — worth a look before resubmitting, not a blocker.

About docs/apps/31-golden-gate/manual.{json,md}: this one's on us, not you — it was listed as a sanctioned option in CONTRIBUTING.md/the scope-check script without anyone actually verifying it was backed by real tooling, and it wasn't: nothing in the configurator reads it (confirmed against #606; its entry doesn't show up on the /#/manual page at all). You followed the policy as documented — the policy was wrong. Filed as #656, and #657 has already removed it as an option here. So faderpunk-community-apps isn't just a better fit organizationally — right now it's the only place this content would actually end up visible anywhere.

To resubmit there: just the app file itself (no mod.rs/registration changes — those are generated), a community app ID in the 100+ range, and a manual-tab.json entry built from your existing manual.{json,md}. Most of it maps over directly (manual.md is the entry's text field verbatim; name→title; description/color/icon/params/storage and most of channels are already the same shape) — but the schema also has fnPlusShiftTitle/ledTopPlusShift/ledBottomPlusShift-style fields for documenting combined Shift/Fn/Button behavior, which your format doesn't have dedicated slots for; where that's described inline in fnDescription/ledTop today, it'd need pulling out into those fields for parity with how official apps are documented. Happy to help with the conversion if useful. Whether/when to close this one is up to you or a maintainer — just flagging where it belongs.

@kosmar

kosmar commented Aug 23, 2026

Copy link
Copy Markdown
Contributor Author

Moving this to faderpunk-community-apps as requested: ATOVproject/faderpunk-community-apps#5

Closing here. App ID remapped 31 → 102 (community range).

@kosmar kosmar closed this Aug 23, 2026
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