Skip to content

Add relative jog OSC command + Hold on Pause toggle for LTC Out - #14

Open
chandz102 wants to merge 1 commit into
fiverecords:mainfrom
chandz102:feature/osc-jog-and-pause-hold
Open

Add relative jog OSC command + Hold on Pause toggle for LTC Out#14
chandz102 wants to merge 1 commit into
fiverecords:mainfrom
chandz102:feature/osc-jog-and-pause-hold

Conversation

@chandz102

Copy link
Copy Markdown

Summary

Two small additions to the Generator/LTC Out, both aimed at live
programming workflows (e.g. a lighting programmer jogging back/forward
through a cue while STC drives LTC to a console via Bitfocus Companion):

  • /stc/N/gen/jog <seconds> — a new OSC command that performs a
    relative seek (positive = forward, negative = back), reusing the
    existing TimecodeEngine::setGeneratorPosition() /
    getGeneratorCurrentMs() (no engine changes needed — these already
    handle audio-file lockstep seeking and cue-cursor resync correctly).
    Unlike /stc/gen/stop, this preserves Playing/Paused state rather than
    resetting to Start TC, so it behaves like a jog wheel rather than a
    cue-and-restart.
  • "Hold on Pause" toggle (LTC Out panel, default off — matches
    current behavior) — when enabled, LTC output keeps encoding the frozen
    timecode instead of going silent while the generator is paused, so
    downstream LTC receivers see continuous signal rather than a dropout
    during a jog/pause. Persisted per-engine like the other LTC Out settings.

Scope

Four files touched, nothing else: MainComponent.cpp, MainComponent.h,
LtcOutput.h, AppSettings.h. Followed existing patterns throughout
(styleOutputToggle, the getBool/settings save-load-per-engine-copy
triplet, the setPaused/isPaused atomic style, Show Lock gating on the
new toggle, etc.) rather than introducing new conventions.

⚠️ Not build-tested

I don't have the Projucer project file or the vendor SDKs (Pro DJ Link,
StageLinQ, BTT) that are gitignored in this repo, so I could not compile
or run this locally. The diff was written and then manually re-verified
line-by-line against the actual source (confirmed every referenced symbol
btnH, accentPurple, syncing, isShowLocked(), currentEngine(),
both getBool lambdas, etc. — exists and is correctly scoped where used),
but it has not been built or run. Flagging this clearly per your
CONTRIBUTING.md's testing guidance — happy to iterate on anything that
doesn't compile or behave as expected once you're able to build it.

🤖 Drafted with Claude Code + Codex, human-reviewed (source-only, not
build-verified per above).

- New OSC command /stc/N/gen/jog <seconds> (float/int) performs a relative
  seek via the existing setGeneratorPosition()/getGeneratorCurrentMs(),
  preserving Playing/Paused state (unlike stop, which resets to Start TC).
  Intended for jog-back/jog-forward buttons (e.g. Bitfocus Companion) during
  live programming sessions.
- New 'Hold on Pause' toggle for LTC Out (default off, matches existing
  behavior): when enabled, LTC output continues encoding the frozen
  timecode instead of going silent while the generator is paused, so
  downstream LTC receivers see continuous signal instead of a dropout.
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.

1 participant