Skip to content

Behringer CMD MM-1 midi mapping#1322

Closed
ghost wants to merge 2 commits intomasterfrom
unknown repository
Closed

Behringer CMD MM-1 midi mapping#1322
ghost wants to merge 2 commits intomasterfrom
unknown repository

Conversation

@ghost
Copy link
Copy Markdown

@ghost ghost commented Jul 26, 2017

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Jul 26, 2017

Thanks for submitting this. Could you write documentation on the wiki? It is difficult to review without documentation.

@Swiftb0y
Copy link
Copy Markdown
Member

I made a similar mapping for this controller but its supposed to extend the launchpad mk2 mapping by szdavid. Should have two different mappings or try to combine them? Your code has also got some major bugs like the hardcoded non-standard channel on line 69 in the script and multiple times in the XML.

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Jul 26, 2017

Mappings included in Mixxx should work with the factory default settings of a controller for as close to a plug-and-play experience as possible.

@ghost
Copy link
Copy Markdown
Author

ghost commented Jul 27, 2017

@Be-ing Wiki is ready.

@Swiftb0y what do you mean by:

some major bugs like the hardcoded non-standard channel on line 69 in the script and multiple times in the XML.

@Swiftb0y
Copy link
Copy Markdown
Member

Swiftb0y commented Jul 27, 2017

Its cool that you modeled the controller, but you could have just used the more accurate pictures from Behringers website...
Do you mind if I extend the mapping a bit?

@ghost
Copy link
Copy Markdown
Author

ghost commented Jul 27, 2017

About hardcoded stuff, I was planning to change the mapping individually if someone would like this.
For example I don't think Deck 1 Deck 2... 3... 4... is the best sequence. Maybe better is 4, 1, 2, 3, like in skins. Or maybe invert volume fader or change Master Balance (OUT2) for something else.
If anybody will make a request, I would be able to fulfil it.

As for 3D model, I did it for another purposes first. But I think it looks pretty similar, so I used it for Wiki. No copyright issues too. CC0 license 😄

@Swiftb0y
Copy link
Copy Markdown
Member

Swiftb0y commented Jul 27, 2017 via email

@Swiftb0y
Copy link
Copy Markdown
Member

@Swiftb0y what do you mean by:

some major bugs like the hardcoded non-standard channel on line 69 in the script and multiple times in the XML.

Your CMD MM1 is set to midichannel 5 while mine (every other brand new one) are set to channel 1.
So by default the controller sends 0x90 (note on), 0x80 (note off) and 0xB0 (CC).
Not 0x94, 0x84 and 0xB4.

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Jul 27, 2017

For example I don't think Deck 1 Deck 2... 3... 4... is the best sequence. Maybe better is 4, 1, 2, 3, like in skins.

If you prefer the decks ordered 1, 2, 3, 4 on the controller, that's fine, but I think it should be 3, 1, 2, 4 like the skins by default. You could put a boolean option at the top of the script to switch between these. Then for your personal copy you'd just have to change that boolean.

Or maybe invert volume fader or change Master Balance (OUT2) for something else.

I don't know what the use of either of those would be. I've never heard of someone inverting a deck volume fader. Some DJs prefer the crossfader inverted, but Mixxx already handles this in the crossfader preferences so mappings do not have to.

@Swiftb0y
Copy link
Copy Markdown
Member

actually... your I cant get your mapping to work on my controller. Ill try to make a more advanced mapping with shift and control (left&right).
Do you have an Idea how to what the middle click on the encoder at the top sends?
Would also be nice if I could get the model to write the doc for my mapping.

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Jul 27, 2017

actually... your I cant get your mapping to work on my controller.

After switching the MIDI channels through the program from Behringer, what happens when you try to use the mapping?

Ill try to make a more advanced mapping with shift and control (left&right).

What do you mean? What do you think is missing from this one?

Would also be nice if I could get the model to write the doc for my mapping.

Yes it would be nice to have an SVG for the diagram so it is easy to change the labels in the future.

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Jul 27, 2017

I have taken a quick look at the diagram and everything seems to be mapped well. I have not yet looked through the code. For reviewing, it is nice to see the Mixxx Controls listed in the diagram, but this would be confusing nonsense for users. Could you reduce the labels to just the text you have under the "Name"?

One option that some users might like would be to use 3 EQ knobs and a QuickEffect (filter) knob instead of 3 EQs + gain knob because Mixxx's autogain is good enough that (at least for me) the gain rarely needs to be adjusted. Filter knobs are typically below EQ knobs on controllers and this how they are shown in skins. Considering the knobs on this controller have no labels, it would make sense to use the top 3 knobs for EQ with this option and the bottom one for the QuickEffect superknob. Also, I am working on a 4 knob EQ (not quite ready for a pull request yet, maybe I'll have that ready in the next few days).

@Swiftb0y
Copy link
Copy Markdown
Member

Swiftb0y commented Jul 27, 2017

After switching the MIDI channels through the program from Behringer, what happens when you try to use the mapping?

Im running linux but they only offer osx and windows programms -.-

What do you mean? What do you think is missing from this one?

Not directly missing... The CMD MM1 is just a great addon to the Launchpad (not fully debugged yet) and it has some duplicate features. So my version is supposed to work better with the Launchpad and expand on some features like the fx section. The Launchpad making also makes use of shift&ctrl so I think that style would fit more.

@Swiftb0y
Copy link
Copy Markdown
Member

stupid quote. If you want to discuss more, come on irc.

@ghost
Copy link
Copy Markdown
Author

ghost commented Jul 27, 2017

@Swiftb0y

  • are you saying your MM-1 has different channel than mine? But how's that possible? I thought it's mandatory for a model. (mixxx -controllerDebug says it's channel 5)
    I could edit .xml and .js so the channel was a variable. Mapping can easily be made only with JS. Not many rotaries need to move. I could do that tomorrow.
  • I will upload .blend file for you. Will you be able to render it?
  • I'm not familiar with IRC and didn't used to it. Freenode is blocked in China. Let's discuss stuff on the forum also I can but versions or edits in first post.

@Be-ing

  • EQ+Super knob, got it. Ok. I had this variant but I thought it's not consistent, you can not kill filter easily so I moved it to PL-1. You can click rotaries there.

Yes it would be nice to have an SVG for the diagram so it is easy to change the labels in the future.

  • It's 3d model and PNGs, Legend is a PNG to. Not XML :( But I will throw away mixxxcontrol labels or will move to another file.

After switching the MIDI channels through the program from Behringer, what happens when you try to use the mapping?

  • Hah, never tried discover their inconvenient web site, Manual didn't say they has some channel switcher. So I couldn't imagine that's could be an issue :( Allright, maybe need consider this and make some flexibility.

BTW, I had the same question about versions about DC-1 mapping. The controllers doesn't have any labels so nobody can say what is a canon. Should I push DC mapping as a part of big set or skip it?

All my mappings are considered as a part of the big set of PL, MM, DC and DV parts together.

Or we could say that different versions are available through the wiki, and link files or 3rd-party repos.

For reviewing, it is nice to see the Mixxx Controls listed in the diagram, but this would be confusing nonsense for users.

I gonna make a video about stuff, do you think anybody would care about those mixxxcontrols?

ps: one more not canon thing: VU meter are spitted into L and R, so deck 1 and 3 are in the Left strip, deck 2 and 4 is in Right LED strip. Should I make it "normal"?

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Jul 27, 2017

you can not kill filter easily so I moved it to PL-1

What do you mean? Do the knobs not have a center detent? If so that makes sense to not implement an option for using the QuickEffect because the filter superknob is very sensitive around the center.

@mevsme did you get your CMD MM-1 used? If so, it's possible that whoever had it before you used Behringer's program to change the MIDI channel.

I gonna make a video about stuff, do you think anybody would care about those mixxxcontrols?

No, that's what code is for. If you make a video about it, just explain how to use it.

ps: one more not canon thing: VU meter are spitted into L and R, so deck 1 and 3 are in the Left strip, deck 2 and 4 is in Right LED strip. Should I make it "normal"?

That doesn't give you an accurate meter for any signal. With 2 columns of LEDs and 4 decks on the controller, I think it makes most sense to map the master meters.

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Jul 27, 2017

All my mappings are considered as a part of the big set of PL, MM, DC and DV parts together.

Let's do a separate pull request for each controller.

@Swiftb0y
Copy link
Copy Markdown
Member

Swiftb0y commented Jul 27, 2017

are you saying your MM-1 has different channel than mine?

yes. I got mine used, but the guy had absolutly no idea how to use it, so I dont think he changed the channel it. Channel 1 as default seems more plausible than channel 5, but ill try calling Behringer about it.

I will upload .blend file for you. Will you be able to render it?

yes... but my i5-6600K GTX970 rig is only accessible for me during the weekend. And rendering on a intel centrino 2... xD

Let's discuss stuff on the forum

Ok ill continue the conversation there. :)

one more not canon thing: VU meter are spitted into L and R, so deck 1 and 3 are in the Left strip, deck 2 and 4 is in Right LED strip. Should I make it "normal"?
I agree. the should be mapped to L/R of the master.

is it Ok if I reuse some of your code for my extended mapping? I'll to keep the basic functionality the same so people don't get confused when they used yours and want to try mine.

@Swiftb0y
Copy link
Copy Markdown
Member

Swiftb0y commented Jul 28, 2017

Behringer responded this morning and they said the default channel is 5. My bad. Sorry for any inconvenience I might have caused.

@ghost
Copy link
Copy Markdown
Author

ghost commented Jul 28, 2017

@Be-ing, @Swiftb0y answered you on the forums.

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Jul 28, 2017

Why did you move this discussion to the forum? That will clutter the forum thread with pages of discussion that users won't care about. Plus it is difficult to discuss code in detail outside of GitHub.

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Jul 28, 2017

Behringer responded this morning and they said the default channel is 5. My bad. Sorry for any inconvenience I might have caused.

Okay, good to know. The mapping can stay how it is with a note on the wiki page explaining that the MIDI channel needs to be set to 5 with Behringer's program for the mapping to work.

@ghost
Copy link
Copy Markdown
Author

ghost commented Jul 28, 2017

@Be-ing I don't have any problems discussing actual mapping files and features here. I tried to move out off-topic, etc.

@ghost ghost changed the title added Behringer CMD MM-1 midi mapping Behringer CMD MM-1 midi mapping Jul 29, 2017
@Swiftb0y
Copy link
Copy Markdown
Member

Swiftb0y commented Jul 29, 2017

Wtf is that:

engine.connectControl('[Channel1]','VuMeterL','CMDMM.vuMeterUpdateL');
engine.connectControl('[Channel1]','VuMeterR','CMDMM.vuMeterUpdateR');
engine.connectControl('[Channel2]','VuMeterL','CMDMM.vuMeterUpdateL');
engine.connectControl('[Channel2]','VuMeterR','CMDMM.vuMeterUpdateR');
engine.connectControl('[Channel3]','VuMeterL','CMDMM.vuMeterUpdateL');
engine.connectControl('[Channel3]','VuMeterR','CMDMM.vuMeterUpdateR');
engine.connectControl('[Channel4]','VuMeterL','CMDMM.vuMeterUpdateL');
engine.connectControl('[Channel4]','VuMeterR','CMDMM.vuMeterUpdateR');

You want to do:

engine.connectControl('[Master]','VuMeterL','CMDMM.vuMeterUpdateL');
engine.connectControl('[Master]','VuMeterR','CMDMM.vuMeterUpdateR');

@Swiftb0y
Copy link
Copy Markdown
Member

Swiftb0y commented Jul 30, 2017

I thought about the channel issue and had an Idea:
We could set the channel statictly in the xml via character references. For example there could be a

<!DOCTYPE channes [
  <!ENTITY noteOn "0x94">
  <!ENTITY noteOff "0x84">
  <!ENTITY CC "0xB4">
]>

and then use <status>&noteOn;</status>.
And the Js would look like:

MIDI = {};
var CHANNEL = 5;
MIDI.noteOn = 0x90 + CHANNEL -1;
MIDI.noteOff = 0x80 + CHANNEL -1;
MIDI.CC = 0xB0 + CHANNEL -1;

and the use the MIDI attributes as constants: midi.sendShortMsg(MIDI.noteOn, control, value);
The purpose is that in case the user does want to change the channel or cant change it, he doesnt have to go through the whole file to change it. A paragraph in the wiki explains what he has to change.
Just an Idea. I wasn't able to test it out yet.

@ghost
Copy link
Copy Markdown
Author

ghost commented Jul 30, 2017

@Swiftb0y I don't know even where to paste it. Mixxx .xml files starts of

<?xml version='1.0' encoding='utf-8'?>
<MixxxControllerPreset mixxxVersion="" schemaVersion="1">

Some experiments gives me error.

I thought explaining how replace everywhere 0x95 to 0x90 with Ctrl+H will be enough. Considering 5th channel is default, and I doubt there gonna be a lot of people with that issue.

@Swiftb0y
Copy link
Copy Markdown
Member

I think it comes between <?xml> and
But if it throws errors....

@Swiftb0y
Copy link
Copy Markdown
Member

@mevsme Im almost finished with my version of the mapping. I would appreciate if you could test it out and give some feedback: https://mixxx.org/forums/viewtopic.php?f=7&t=9276&p=33527#p33527

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Nov 19, 2017

In case you missed it, we've decided to release Mixxx 2.1 beta on 2017-12-22. I'll get back to reviewing controller mappings to be included in the 2.1 release after the beta is released.

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Dec 23, 2017

I will get to reviewing this soon, but for now I will be taking a break from development and code review for a few days.

@Be-ing Be-ing added this to the 2.1.0 milestone Dec 27, 2017
@Be-ing Be-ing removed this from the 2.1.0 milestone Apr 1, 2018
@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Apr 5, 2018

Closing in favor of #1329. @mevsme if there is anything you'd like to change in @Swiftb0y's mapping that has already been merged, feel free to open a pull request.

@Be-ing Be-ing closed this Apr 5, 2018
@ghost
Copy link
Copy Markdown
Author

ghost commented Jun 6, 2018

Honestly I don't understand why #1329 was given a preference. Obviously it is over complicated and breaks the rule that knobs should do what signs says. I doubt anybody will learn that mapping except the author.
On the other side mine was ready more than a year ago, I made the video\wiki\forum thread at the forum. To me it feels like a spit into the face in favor of the author who appeared from nowhere.

@Be-ing
Copy link
Copy Markdown
Contributor

Be-ing commented Jun 6, 2018

I explained my thinking in this comment and asked for your input. I apologize for not getting around to that until shortly before the 2.1.0 release. As far as I understand, the mapping from #1329 is mostly the same as this but adds more options for effects. It seems there might be a few small differences in the way the library navigation controls at the top are mapped. Are there any important differences that I missed? The mapping from #1329 is complicated, but as far as I can tell, if you just want to use it to control 4 decks like the mapping in this PR, it's mostly the same. If you have ideas to improve the mapping currently included in Mixxx, a pull request would be welcome (or maybe you could just post your idea and @Swiftb0y could implement it if he wants).

rule that knobs should do what signs says

That is a guideline, not a rule. I don't understand how #1329 doesn't follow that.

@Swiftb0y
Copy link
Copy Markdown
Member

Swiftb0y commented Jun 6, 2018

To me it feels like a spit into the face in favor of the author who appeared from nowhere.

Same. But unfortunately, we just worked on the same controller in parallel with different endresults in mind. I wanted the controller to extend the mapping that was released for the Launchpad, while you wanted to implement the basic functionality that the controller has by default.

Obviously it is over complicated and breaks the rule that knobs should do what signs says.

Yes. It's pretty complicated, but only when you want it to be since the first layer on my controller is basically identical to your mapping. And yes, it does break the rule that knobs should only do what they are labeled to do, but Mixxx doesn't have "OUT 1/2" knobs so I mapped them to whatever I thought would feel intuitive. The other Knobs on the MM-1 don't even have a Label so the rule shouldn't apply there.

About the Code. Yes, my code is incredibly ugly, difficult to maintain and buggy to some extend (due to the bad maintainability), but I will change that in the near future as I'm planning to rewrite the whole mapping using the components.js framework. While your code is easier to read, 80% of it is duplicated and therefore difficult to maintain as well.

I hope this little incident didn't affect your relationship with Mixxx and the community negatively, and I hope you will continue contributing to Mixxx.
To avoid these kind of misunderstandings in the future, open a thread on zulip before you start working on whatever change/addition you want to make.

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.

3 participants