-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add DDJ-400 contoller #2403
add DDJ-400 contoller #2403
Conversation
@nschloe You need to rebase, since there are lots of unrelated commits. Opening a new PR won't change that. You can do it like this: $ git remote add upstream https://github.com/mixxxdj/mixxx.git
$ git fetch upstream
$ git rebase -i upstream/2.2 Then, you need to remove all lines that are not from you. The lines are ordered by commit date, so your commits should be near the bottom of the list. When you're done, you'll need to force-push your commits: $ git push -f origin pioneer-ddj400 IMHO it makes sense to reopen #2385 and continue the discussion there (and close this PR instead). |
One issue that the controller still has is of cosmetic nature: When pressing the shift button, the loop lights will go out. This is not helped by sending a signal on the shift-state as suggested by @Be-ing, and as worked for the hotcue buttons. Other than that, it'd be lovely if I got the lighting of the loop buttons to match the patterns it has in rekordbox (default on: both blinking when the loop is active), but perhaps all of that can be added later. |
Alright, I've got the loop lights fixed now and I'm fairly happy with this now. I had initially planned to make them blink as well (just like in the vendor software), but this turns out to be more complicated than I had anticipated. I'm fine with having static lights now. I'd be happy to get a review on the code. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thanks for contributing a mapping for the DDJ-400!
Apart from some minor issues, this looks mostly good IMHO.
In Rekordbox LOAD+Shift (DECK1) function is related tracks, since we have no equivalent function in MIXXX | ||
and doubleclick would map to instant double we are mapping this to CloneFromDeck | ||
--> | ||
<description>LOAD +SHIFT (DECK1) - press - Clone Track from playing Deck</description> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to the wiki page this should be "Sort library by criteria", not "Clone from deck".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These parts are commented out anyway; we'll have to wait for 2.3.0 before reactivating.
@nschloe I fixed some eslint issues for you in https://github.com/nschloe/mixxx/pull/1, please merge it ;-) |
Pioneer DDJ-400: Merge 2.2 branch and fix some eslint issues
Thanks! I'll look at the timer thing soon. |
So I made a couple of small changes to the init and shutdown functions, in part as a test to ensure I was doing things properly, but also to add some new functionality - querying the controller for current control positions on startup, and also to shutdown all performance pad LEDs on shutdown. I've pushed a commit for these and filed a PR. I have some other changes queued up to be added, but I'll be away from home for a few days and won't likely get to them until next week at the earliest. One thing in particular I'm looking at is the blinking of the Sampler performance pads - right now, if a sampler is playing, the pad blinks, but if SHIFT is held then the pad stops blinking. Furthermore, once SHIFT+PAD PRESS is used to stop the sample from playing, the LED in the pad turns OFF instead of remaining ON to indicate that a sample is loaded into that sampler. However, if you're going to be looking to restructure the startSampleFlicker routing based on @Holzhaus 's comment above, then I will hold off on this until after you've done so. Having a single timer driving all of the sample pad blinking would certainly be more efficient than having a separate timer for each (theoretically leading to potentially 16 timers running) however I can see that this would require significant restructuring of the existing code. |
@dj3730 I think it is unuseful to try and make substantial changes to this PR. Support for the DDJ-400 has been cooking since June, ann imho it's more important to get this into a mergeable state. We can always add functionality later. |
@nschloe I can definitely see where you're coming from on that, and I do agree that the priority should be to get this into a releasable state, given how long it's been open. Once this PR is merged, I'll start up a new one for the new functionality. That said, I did notice a small bug in the xml related to CUE Channel +SHIFT - I'll get a comment posted about that momentarily. |
Thanks for this mapping, works great! |
All the PRs for this controller have been quite confusing to follow. @leonFC I would be glad if you finished this. You can refer back to the unresolved review comments on this PR. |
Not on my part. |
Sorry for the delay, I'm afraid I cannot currently contribute as much as what is necessary due to unexpected private events. Still playing around from time to time though. I'll report back when there is relevant progress. |
@nschloe @leonFC Have you been able to make any progress? How can I help? I've recently gotten into DJ'ing, so I bought myself a DDJ-400 and started using Mixxx 2.2.4 along with an earlier version of this preset that I'd found on the forum (never actually used Rekordbox as it doesn't run on Linux). Since a week or so I've been using the preset from this PR and it has been working very well in most aspects (everything from the 'Working' section definitely works, keyshift mode works perfectly too). Awesome work, thank you both for creating this mapping! However, I've noticed two usability issues. I'm both studying and working as a software engineer myself, so when I have some free time, I'm able to and glad to try to resolve those problems and help to get this PR merged.
As for the usability issues:
|
You can configure this in the Mixxx preferences. In Mixxx 2.3, the default behavior will change, so that up is slower and down is faster. |
Also, starting with Mixxx 2.3, all controller mappings are now supposed to be documented in the Manual. This is necessary so that other users know how to use this mapping. We also need it to review it properly and check if the mapping makes sense and if the code matches the documentation. Please fork the mixxxdj/manual repository, check out the Here's an example how such documentation could look like: https://manual.mixxx.org/2.3/en/hardware/controllers/roland_dj_505.html (If you don't have schematic images and don't want to draw them yourself, just use the same numbering as in the controller's manual and document the buttons like that). |
@bvobart Are you interested in picking this up? |
@Holzhaus I'm interested in picking this up, though I started my MSc thesis little less than a month ago and have an important intermediate deadline in the second half of January. I therefore doubt that I'll have time to work on this before then, but after that I should be able to free up some time to tackle this. |
Hi all, I've been using Mixxx very successfully with a DDJ-400 since early last year. My mappings are based on the original Warker ones that inspired this work by @nschloe and @dj3730 . At one point I truly wanted to get them into the project, but I slacked into backburner obscurity 😉 Though my mappings have diverged from these, they contain a few extremely useful additions (quantize toggle, phrase jumping and a more intuitive FX workflow). In all, it's not much work to add here if you like. But first let me put myself forward to wrap this PR up over the festive season.
@Holzhaus, @Be-ing |
☝️ Addressing the discussion points in the above draft. Hope to get a fair bit done over the next week or so. Will ping back here when it's ready for review. Please let me know if there are any other issues or work you'd like done on this. I've got some momentum and capacity next week. |
Making some good progress at the moment. Just hitting some issues with the FX mappings which I'll bring to your attention: 1.
EDIT: I've left the mapping as is then, but added:
|
2. PAD FX In rekordbox, The current mappings for 2.1. Pads 1, 2 & 3 toggle effect units 1, 2 and 3 on & off. As it stands, this can clobber the effects set up by our Furthermore, the current mappings for So I'm guessing it's best to just remove the mappings rather than try to fix them? Are preset FX something that's worth discussing? I.e., is there a way to assign an effect with a given set of parameters to a pad button? EDIT: As I tidy up the code a bit, I think it'd be good just to remove this. It's not very useful at the moment and |
Update Things here are pretty much done. However, there's a last discussion to be had regarding all the secondary (shift) pad modes. As mentioned above Upon quite a bit more experimenting I'd have to say the same for both
Does anyone feel these are worthwhile features to include in the first place? I'm happy to fix things up, but to be honest I feel that the original rekordbox features aren't very worthwhile in themselves. So why pollute Mixxx with them? |
@jusko can you open a new PR to continue this discussion? |
Sure.
This will be added in Mixxx 2.4: #2618 |
I don't know what these are intended to do. I have no idea if the old wiki page is up to date. I think it's probably fine to remove them. Please open a PR for the manual with updated documentation. |
After #2143, #2312, and #2385 this is another take on the Pioneer DDJ-400.
This PR implements most of the basic functionality of the controller:
Mixer Section (Faders, EQ, Filter, Gain, Cue)
Browsing and loading
Jogwheels, Scratching, Bending
Beat Sync
Beatjump mode
Hot cue Mode
Beat Loop Mode
I've successfully used this on three occasions and only found minor glitches. For example, when a loop is set and shift is pressed, the lights go out. I have not found a way to prevent this, and sending ON at shift state does not work. The functionality is still there though, so I'd consider this minor.