Skip to content

Numark NS4FX Beat Jump#16415

Open
rp42 wants to merge 2 commits into
mixxxdj:2.6from
rp42:ns4fxBeatJump
Open

Numark NS4FX Beat Jump#16415
rp42 wants to merge 2 commits into
mixxxdj:2.6from
rp42:ns4fxBeatJump

Conversation

@rp42

@rp42 rp42 commented Apr 30, 2026

Copy link
Copy Markdown
  • Add an option to use the second row of transport pads to control beat jump in Auto Loop mode.

  • Pad 5 jumps backwards, 6 decreases beat jump, 7 increases beat jump and 8 jumps forwards.

  • Shift & second row pad jumps by number of beats configured in controller preferences.

 * Add an option to use the second row of transport pads to control beat jump
   in Auto Loop mode.

 * Pad 5 jumps backwards, 6 decreases beat jump, 7 increases beat jump and 8
   jumps forwards.

 * Shift & second row pad jumps by number of beats configured in controller
   preferences.

@tbazant tbazant left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks good from my POV, just a minor stylish issue.

Comment thread res/controllers/Numark-NS4FX-scripts.js Outdated
Comment on lines +33 to +37
<option type="integer" variable="shiftPad5JumpBeats" min="-512" max="512" default="-4" description="Shift Auto Loop Jump size key 5"/>
<option type="integer" variable="shiftPad6JumpBeats" min="-512" max="512" default="-1" description="Shift Auto Loop Jump size key 6"/>
<option type="integer" variable="shiftPad7JumpBeats" min="-512" max="512" default="1" description="Shift Auto Loop Jump size key 7"/>
<option type="integer" variable="shiftPad8JumpBeats" min="-512" max="512" default="4" description="Shift Auto Loop Jump size key 8"/>
</group>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I had a go and created this PR:
mixxxdj/manual#880

thanks!

Co-authored-by: Tomáš Bažant <tbazant@suse.com>
@JoergAtGithub

Copy link
Copy Markdown
Member

Welcome at Mixxx!
As a first-time contributor we need you to sign the Mixxx Contributor Agreement and comment here when you have done so. It gives us permission to distribute your contribution under the GPL v2 or later license and the Apple Mac App Store. It is also helpful for us to have contact information for contributors in case we may need it in the future.

@rp42

rp42 commented May 6, 2026

Copy link
Copy Markdown
Author

Hi @JoergAtGithub . I've now signed the Mixxx Contributor Agreement.

Please let me know if I should do something about the failing checks shown. The hooks found issues in unrelated files here, but some of those ones do perhaps look related to my change.

@JoergAtGithub JoergAtGithub requested a review from Copilot May 7, 2026 17:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds an optional “beat jump” function to the Numark NS4FX controller mapping so the bottom row of transport pads can control beat jumping while the performance pad mode is set to Auto Loop, with configurable SHIFT jump sizes.

Changes:

  • Introduces a new controller preference (useAutoLoopBeatJump) and per-pad SHIFT jump size preferences.
  • Routes transport pad presses to beat-jump actions when in Auto Loop mode (back / size down / size up / forward).
  • Adds script-side handlers to implement beat jump and beatjump_size adjustments.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
res/controllers/Numark-NS4FX-scripts.js Adds settings + routes transport pads to new beat-jump handlers in Auto Loop mode.
res/controllers/Numark NS4FX.midi.xml Adds preferences for enabling the feature and configuring SHIFT beat jump sizes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

}
hotcueButton.input(channel, control, value, status, group);
} else if (isBeatJumpModeForTransport) {
deck.autoloop_buttons[padNumber + 4].input(channel, control, value, status, group)
Comment on lines +1077 to +1084
this.autoloop_buttons[9 - i] = new components.Button({
input: function(channel, control, value, status) {
const deckGroup = `[Channel${deck.number}]`; // Deck group based on deck number
if (useAutoLoopBeatJump) {
if (value > 0) { // only trigger on press
if (NS4FX.shift) {
NS4FX.dbg(`SHIFT on transport pad ${this.transportPadNumber} on deck ${deck.number}. Jump by ${shiftAutoloopJump[this.transportPadNumber]} beats`);
engine.setValue(deckGroup, "beatjump", shiftAutoloopJump[this.transportPadNumber]);
Comment on lines +15 to +19
parseInt(engine.getSetting("shiftPad5JumpBeats")),
parseInt(engine.getSetting("shiftPad6JumpBeats")),
parseInt(engine.getSetting("shiftPad7JumpBeats")),
parseInt(engine.getSetting("shiftPad8JumpBeats"))
]
Comment on lines +33 to +36
<option type="integer" variable="shiftPad5JumpBeats" min="-512" max="512" default="-4" description="Shift Auto Loop Jump size key 5"/>
<option type="integer" variable="shiftPad6JumpBeats" min="-512" max="512" default="-1" description="Shift Auto Loop Jump size key 6"/>
<option type="integer" variable="shiftPad7JumpBeats" min="-512" max="512" default="1" description="Shift Auto Loop Jump size key 7"/>
<option type="integer" variable="shiftPad8JumpBeats" min="-512" max="512" default="4" description="Shift Auto Loop Jump size key 8"/>
@rp42

rp42 commented May 11, 2026

Copy link
Copy Markdown
Author

Thanks for the comments. I'll take a look and update my changes.

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.

4 participants