Skip to content

Click accents cannot follow a song in an odd meter #593

Closed

Description

@thcp

The click panel offers four fixed meters -- 2/4, 3/4, 4/4 and 6/8 -- and nothing else. A song in 5/4, 7/8, 9/8 or anything less common cannot be accented correctly from the transport, so the click either lands on the wrong beats all the way through or has to be left on Auto and hope the detector guessed right.

Auto is not a general answer. It follows the bar marks the detector found, and on an odd-meter track those are exactly the marks most likely to be wrong or missing. When they are missing, Auto is disabled entirely and the only remaining choices are the four presets and Off.

Why this is a UI gap rather than a feature

Everything underneath already handles arbitrary meters:

  • beats_per_bar is validated as ge=1, le=32 in app/api/jobs.py.
  • The beat-grid editor already exposes a free <input type="number" min="1" max="32">, so a user can set 7 per bar today -- just from a different panel, per region, rather than as a click setting.
  • computeCountIn derives its clicks as countBars * beatsPerBar, and count_in_beats in app/pipeline/click_render.py mirrors it. Both are already meter-agnostic.
  • The click render cache key includes the bar signature, so custom values invalidate correctly rather than serving a stale render.

The <select> in static/index.html is the only thing narrowing that range.

Constraints for whoever picks this up

  • The same field carries two sentinels: -1 is Auto and 0 is Off. A free-entry control must not let a typed value collide with either.
  • The denominator in the existing labels is cosmetic. "6/8" is stored as the integer 6, and there is no note-value concept anywhere in the app. Offering "7/8" therefore means seven beats per bar, not a subdivision change. Making the denominator real is a much larger change that reaches click rate, count-in tempo and the render cache key, and is not what this issue asks for.
  • Anything typed has to be clamped to 1..32 to match the backend, and clamping should correct the value rather than reject it.
  • New strings must be added to all ten language tables in static/js/i18n.js, not just en. The fallback silently serves English for a missing key, so a gap here is invisible while testing.

Activity

  1. MetalMan1245 commented on Sep 7, 2026

    @MetalMan1245

    I don't know if this is a helpful distinction, but I play a lot of odd time signature music, and my soltion in the DAW is to simply set the time signature to 1/4 so that there is no accent. The ability to set a proper click would be ideal but just having something where there are no accents and therefore cannot be wrong is a good fallback.

  2. added a commit that references this issue on Sep 8, 2026
    05fa3c7
  3. self-assigned this
    on Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions