Skip to content
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 mapping for Roland DJ-505 #2111

Merged
merged 85 commits into from
May 26, 2019
Merged

Conversation

Holzhaus
Copy link
Member

@Holzhaus Holzhaus commented May 13, 2019

Roland DJ-505

The Roland DJ-505 is an all-in-one USB MIDI controller with an integrated audio interface. It has controls for 2 decks that can be toggled between decks to play with 4 decks. It also features a TR-S step sequencer with sounds from the TR-808 and the TR-909 drum machines (TR-606 and TR-707 are available via firmware update). It's positioned between the compact DJ-202 (#1595, Forum Thread) and the flagship DJ-808 controller.

Links

Remaining Issues

  • Implement selecting Effects via FX SELECT buttons (just use standard FX unit mapping)
  • Fix LEDs for BACK/ADD PREPARE buttons Does not work in Serato either
  • VINYL button
  • PHONO CH Input Select (might work, not tested yet)
  • There might be some bug in the version of Mixxx that I'm using which leaves some Sampler Slots unaffected by engine.setValue() calls Works on latest master
  • Fix TR-S Sampler S7/S8 MIDI mapping
  • Fix Deck 3/4 toggling
  • Custom Hotcue color support (depends on PR Components JS HotcueColor integration #2030)
  • VU Meter support
  • TR-S Syncing currently works at the BPM level, but phase syncing is not implemented yet. As a workaround, the NUDGE button can be used to adjust the phase. This depends on MIDI clock I/O (Launchpad Bug #682221).
  • Some performance pad modes are missing (Slicer [ Launchpad Bug #1828886 ], Slicer Loop, Saved Loop, Flip)
  • Buttons for sorting the library by BPM/Song/Artist/Key are not mapped since no Mixxx controls seem to exist for it (Launchpad Bug #1828882, PR Add ControlObjects for track table sorting #2118)
  • Some buttons are not mapped yet (e.g. BACK)
  • LEDs on BACK/ADD PREPARE do not work (this seems to be a hardware/firmware bug and does not work in Serato either)
  • Controller does not send current cross fader value on Serato Sysex Message (this seems to be a hardware/firmware bug and does not work in Serato either)
  • Support for colored hotcues has been added, but depends on PR Components JS HotcueColor integration #2030 which has not been merged yet.

Controller Overview

Roland DJ-505

This copies the mapping for the Roland DJ-202 by Silvio Ankermann from
Lykos153/mixxx@87d0bbf and replaces all occurrences of "202" with "505".
@Holzhaus
Copy link
Member Author

IMHO this is ready to merge now. It would be nice to have this tested by somebody else, but it should work good enough. I added the remaining issues to the Wiki entry.

@uklotzde
Copy link
Contributor

Very well done. Together with the wiki page this is ready right from the start! @Be-ing Any thoughts?

First of all I'm not a JS developer. Just some remarks that came to my mind:

  • I see many non-strict comparion operators ==/!= that could be replaced by ===/!==? Wondering why jshint didn't mention that.
  • jshint gives some other warnings, not all of them might apply:
/tmp/Roland_DJ-505-scripts.js: line 170, col 49, Functions declared within loops referencing an outer scoped variable may lead to confusing semantics. (DJ505)
/tmp/Roland_DJ-505-scripts.js: line 941, col 48, ['roll'] is better written in dot notation.
/tmp/Roland_DJ-505-scripts.js: line 942, col 48, ['sampler'] is better written in dot notation.
/tmp/Roland_DJ-505-scripts.js: line 951, col 26, ['hotcue'] is better written in dot notation.
/tmp/Roland_DJ-505-scripts.js: line 957, col 26, ['cueloop'] is better written in dot notation.
/tmp/Roland_DJ-505-scripts.js: line 966, col 26, ['roll'] is better written in dot notation.
/tmp/Roland_DJ-505-scripts.js: line 975, col 26, ['sampler'] is better written in dot notation.
/tmp/Roland_DJ-505-scripts.js: line 978, col 26, ['velocitysampler'] is better written in dot notation.
/tmp/Roland_DJ-505-scripts.js: line 981, col 26, ['loop'] is better written in dot notation.
/tmp/Roland_DJ-505-scripts.js: line 984, col 26, ['pitchplay'] is better written in dot notation.
/tmp/Roland_DJ-505-scripts.js: line 1288, col 5, 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).
/tmp/Roland_DJ-505-scripts.js: line 1289, col 5, 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).
/tmp/Roland_DJ-505-scripts.js: line 1290, col 5, 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).
/tmp/Roland_DJ-505-scripts.js: line 1310, col 22, Functions declared within loops referencing an outer scoped variable may lead to confusing semantics. (DJ505)
/tmp/Roland_DJ-505-scripts.js: line 1343, col 20, Functions declared within loops referencing an outer scoped variable may lead to confusing semantics. (DJ505)

@Holzhaus
Copy link
Member Author

Holzhaus commented May 16, 2019

First of all I'm not a JS developer.

Me neither ;-)

  • I see many non-strict comparion operators ==/!= that could be replaced by ===/!==? Wondering why jshint didn't mention that.

You're right, I fixed it in b818531. I had to put // jshint eqeqeq:true at the top of the file to make jshint complain about them.

  • jshint gives some other warnings, not all of them might apply

Ok, these are also fixed. For some reason I eslint (which I was mistakenly using instead of jshint) did not warn about them.

@Holzhaus
Copy link
Member Author

Holzhaus commented May 19, 2019

I discovered and fixed some minor issues and also added Hotcue color support. It depends on PR #2030 (which has not been merged yet).

@Holzhaus
Copy link
Member Author

Holzhaus commented May 22, 2019

IMHO this can be merged now. If #2118 is merged first, I could also map the currently unmapped "Sort by BPM/Key/Artist/Song" buttons. If not, I could just open a separate PR for this.

@uklotzde
Copy link
Contributor

Does this mapping in its current state work even without #2030 and #2118? Or is it mandatory to merge those PRs first?

@Holzhaus
Copy link
Member Author

Holzhaus commented May 25, 2019

Does this mapping in its current state work even without #2030 and #2118?

Yes. Without PR #2030, performance pads will then light up in the mode's color (White in Hotcue Mode, Blue in CueLoop mode). Hotcue colors in Pitch Play Mode will work regardless of PR #2030.

I didn't add anything related to #2118 to this mapping yet.

@Holzhaus
Copy link
Member Author

Holzhaus commented May 25, 2019

I added support for library sort buttons to a different branch. If #2118 is merged, we can just cherry-pick commit Holzhaus/mixxx@ba3e01f and add it to this PR, but if something blocks #2118, this mapping can still be merged as-is.

@uklotzde
Copy link
Contributor

LGTM

I'm not able to test it, but I don't see any reason for holding this back. The earlier it becomes available in the regular master builds the more likely other owners of this device will use and test the mapping.

@uklotzde uklotzde merged commit 4ee27e8 into mixxxdj:master May 26, 2019
@Holzhaus
Copy link
Member Author

Thanks for merging!

@Be-ing
Copy link
Contributor

Be-ing commented Aug 11, 2019

Thanks for contributing this and the thorough documentation @Holzhaus. And thank you @uklotzde for merging this while I was busy.

I read through the wiki page for this controller and made some minor edits and reorganization. One suggestion I have for the mapping is to add reloop_andstop. I suggest mapping shift + autoloop for this.

I like that you used shift + PFL for beatgrid adjustment. Mappings typically don't have anything mapped for shift + PFL and controllers don't typically have a dedicated button for beatgrid adjustment.

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.

4 participants