Numark Scratch: add initial mapping#4834
Conversation
|
Documentation PR is here 492 |
|
This PR is marked as stale because it has been open 90 days with no activity. |
|
@Swiftb0y I'm having trouble getting my head around Javascript. I'm going to need your help to finish this please 🙏🏾 |
|
Sure, what exactly do you need help with? I'd be glad to help. |
|
Have you tried out Mixxx 2.4 yet? We added a way to change the effects on the filter knob of the mixer. That would match the way this controller controls effects much more closely. |
My issue is with trying to create components for some of my controls. I think there's unresolved comments from your initial review. The examples I have looked at from other mappings are just too complex for my level I think. |
Yep I have had a play around, but I have not seen this new system coded out in a mapping. except maybe the s4 k3 but that mapping is above my paygrade. The other issue is that there is no mixxx SOP on how to map this.
**edited (grammar & spelling fix) |
| // Default is false. When set to false, the EncoderKnob manages looping. Shift + EncoderKnob scrolls the library/loads track | ||
| // If set to true, the EncoderKnob scrolls the library/loads track. Shift + EncoderKnob manages looping. | ||
| NumarkScratch.invertLoopEncoderFunction = false; |
There was a problem hiding this comment.
This is really a necessary feature?
There was a problem hiding this comment.
With this encoder in Serato, the only option is to press shift + turn to scroll through the library and shift + push to load tracks, every damn time. The default is changing loop length and turning on loops, who uses loops that much, lol?
It's so unintuitive. and I rarely use loops (or haven't taken the time to learn). Numark should really have just added a browse encoder and load buttons. Rant over
Anyway, for this mapping inverting the encoder functions to non-standard is optional. I think this might be helpful to someone else.
There was a problem hiding this comment.
That's a fair assessment. As long as it doesn't complicate the design too much, its fine.
The problem is that each manufacturer has their own opinion on how many and what effects should be accessible (compare Pioneer, Numark and Denon Prime Hardware). For now, IIUC you can use the |
@Swiftb0y To double check the mixer's effects are separate & independent from the filter. Will the Quick Effect CO system work still for this use case? |
Can you elaborate? I'm afraid I don't quite understand what you mean. |
From my limited understanding I thought QuickEffects relate to the Filter and the new effect system allows changing the effect for the Filter knob to some other effect for controllers like the s4 mk3 and prime 4. I'm having a hard time wrapping my head on how I can use QuickEffects for the Numark's standalone effects section. Thanks for the help again. |
|
Ah I see the problem. Numarks concept of FX sections don't map cleanly to either the QuickEffects nor the separate EffectsUnits... I think it would be best to just use the FX Select Buttons do specify the What do you think? |
| NumarkScratch.setChannelInput = function(channel, control, value, _status, _group) { | ||
| const number = (control === 0x57) ? 1 : 2; | ||
| const channelgroup = "[Channel" + number + "]"; | ||
|
|
||
| switch (value) { | ||
| case 0x00: // PC and turn on vinyl control | ||
| engine.setValue(channelgroup, "passthrough", 0); | ||
| engine.setValue(channelgroup, "vinylcontrol_enabled", 1); | ||
| break; | ||
| case 0x02: // PHONO/LINE and turn off vinyl control | ||
| engine.setValue(channelgroup, "passthrough", 1); | ||
| engine.setValue(channelgroup, "vinylcontrol_enabled", 0); | ||
| break; | ||
| } | ||
| }; |
There was a problem hiding this comment.
@JoergAtGithub I noticed you have similar code on your Reloop KUT mapping. For some reason on Mixxx startup, Mixxx is not reading the status of the switch even though I get a sysex response. I have to physically toggle the switch, after Mixxx has loaded for the status it to be read.
Could it be my code or is Mixxxx loading too quickly? Would appreciate your help. Besides this, the PR is ready for merging.
There was a problem hiding this comment.
Could it be my code or is Mixxx loading too quickly?
If you start mix first with the mapping disabled and then enable it later via the preferences, does it work reliably?
fyi I also have encountered a firmware bug on my NS6II where it sometimes sends the wrong switch value (though this was with the split cue toggle, not the input switches).
There was a problem hiding this comment.
if it works with --qml, it might indeed be some sort of data race on startup. In that case, I'd call it acceptable to slightly delay the sysex inquiry message.
There was a problem hiding this comment.
@Swiftb0y a 9 second delay works. Seems a little too long imo. Is that acceptable?
the 9sec correlates to how long it takes for Mixxx to open up for me, on Windows.
There was a problem hiding this comment.
Could it be my code or is Mixxx loading too quickly?
If you start mix first with the mapping disabled and then enable it later via the preferences, does it work reliably? fyi I also have encountered a firmware bug on my NS6II where it sometimes sends the wrong switch value (though this was with the split cue toggle, not the input switches).
@Swiftb0y , if I start Mixxx first with the mapping disabled and then enable it later via the preferences, it work reliably.
If I also reload the mapping via text editor after Mixxx has fully loaded, it works reliably.
|
@Swiftb0y I think this is ready to merge. I'm still having trouble with channel inputs. Mixxx is not setting the control correctly even though the controller reports the state on startup. When using --qml it works correctly though 🤷🏾♂️ |
Swiftb0y
left a comment
There was a problem hiding this comment.
this looks pretty good so far. Just a couple nitpicks if you want to fix them. If not, its fine too, this mapping is very polished already. I'm sorry for forgetting about this until now.
No worries I'll fix up the nits. I'll take a look when I get home and then confirm once ready. Thanks for the review. |
Swiftb0y
left a comment
There was a problem hiding this comment.
LGTM. thank you for your patience and contribution.
|
Can you do me a favor and squash all the commits down into a single one before I merge? |
|
One last thing @Swiftb0y How far can I push these values? This is meant to be a scratch mixer with the fastest cut possible. Looking at the mixer settings & developer tools, I can set xFaderCalibration to 0.999307 and xFaderCurve to 999.6 |
|
I'm actually not sure. These controls are suboptimal anyways. We really need a hybrid setting that combines both modes in Mixxx to a single slider so it can be mapped to the single knob present on most hardware. |
Co-Authored-By: Swiftb0y <12380386+Swiftb0y@users.noreply.github.com>
Thanks for your patience ;)
I filed #13363 for the crossfader issue. I'd be very grateful if you'd look into options solving that from the C++ side.
👍
Yup, saw that. Thank you. |

Add Numark Scratch mapping