Skip to content

Fix NS4FX mapping state and fader cut lifecycle - #27

Open
Kybernetria wants to merge 5 commits into
0cwa:pr/combined-pr14-featuresfrom
Kybernetria:pr/combined-pr14-features
Open

Fix NS4FX mapping state and fader cut lifecycle#27
Kybernetria wants to merge 5 commits into
0cwa:pr/combined-pr14-featuresfrom
Kybernetria:pr/combined-pr14-features

Conversation

@Kybernetria

Copy link
Copy Markdown

Summary

  • update the NS4FX mapping for current control/component APIs
  • prevent overlapping or stale Fader Cuts timers from intermittently muting a deck
  • restore the prior deck volume and clean up timers on mode changes, deck switches, and shutdown
  • preserve local elapsed/remaining display and hotcue/loop behavior fixes

This is a focused follow-up for #23 and targets its head branch so the PR contains only the NS4FX fix commit.

Validation

  • node --check res/controllers/Numark-NS4FX-scripts.js
  • git diff --check
  • MidiMappings/MappingTestFixture.ValidateMappingXML/Numark_NS4FX_midi_xml
  • MidiMappings/MappingTestFixture.LoadMapping/Numark_NS4FX_midi_xml

@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 7c61d6bd-1c66-40d9-a753-55935bc75dcb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c9d2b9dc68

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread res/controllers/Numark-NS4FX-scripts.js Outdated

// setup elapsed/remaining tracking
engine.makeConnection("[Controls]", "ShowDurationRemaining", NS4FX.timeElapsedCallback);
// setup elapsed/remaining tracking locally; Mixxx 2.7 no longer exposes [Controls], ShowDurationRemaining.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add the required disclaimers around generated comments

This AI-authored commit adds this comment, along with several other comment blocks, without framing them at both ends with the required AI-generation disclaimer. Add the mandated framing to every newly generated comment block before submission.

AGENTS.md reference: AGENTS.md:L40-L44

Useful? React with 👍 / 👎.

Comment thread res/controllers/Numark-NS4FX-scripts.js Outdated
Comment on lines +1896 to +1898
NS4FX.decks.forEachComponent(function(deck) {
if (deck.position !== undefined) {
deck.position.trigger();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Iterate deck containers when refreshing the clock

When Shift+Wheel toggles the time mode while a deck is paused, this does not refresh its displayed time: ComponentContainer.forEachComponent recursively invokes the callback for leaf Component objects, not the four Deck containers, so every callback argument lacks a position member and trigger() is never called. Iterate the numbered decks or deck containers directly so the new remaining/elapsed value appears without waiting for another playposition event.

Useful? React with 👍 / 👎.

0cwa added 4 commits August 22, 2026 21:33
…nerated by an AI Agent.

Synchronize NS4FX duration mode on initialization

Trigger the ShowDurationRemaining connection during mapping initialization so the controller LEDs reflect the current mode immediately.

END AI AGENT DISCLAIMER.
Disconnect active hotcue status callbacks while a track load settles so transient engine states cannot flicker the controller LEDs. Reconnect and refresh the LEDs after the existing delay.

@0cwa 0cwa left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved after static review of head fd06e0d against base 0cwa/mixxx:pr/combined-pr14-features (b7bde6e). Verified the complete single-file accumulated diff: ShowDurationRemaining initialization and paused-deck refresh, hotcue disconnect/reconnect around track loads, deck-owned fader-cut timer cleanup across pad-mode/deactivation/shutdown, and all four decks active for fader cuts. GitHub reports mergeable; triage passed and CodeRabbit status is passed/skipped for this non-default base. Exact head JavaScript passes syntax-only validation. No functional blocker found; no runtime/build/tests performed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants