SCS3 mapping with support for four decks#809
Conversation
Support 4 decks and FX chains.
removes a few bottlenecks
|
please add new files to windows uninstaller: |
|
@Pegasus-RPG : Should this be the new default mapping for the 3M? |
There was a problem hiding this comment.
Change the version to 2.0.0+ now :)
|
Okay, I've had a chance to test your SCS.3m preset and I first want to say great job on the FX editing! This is the first preset I've seen that actually lets you edit and selectively activate all four effects units in an intuitive way (and on such a compact controller!) Well done! So I would like to make yours the definitive SCS.3m preset for 2.0 but there are a few things that need tweaking or fixing first:
If you need help with any of these, just let me know and I can make a PR against your SCS3 branch. |
|
@Pegasus-RPG based on this laundry list I'm guessing this is not going to be ready for the 2.0 release. Is it worth delaying to 2.1 or should we leave these as TODOs? @sbalmer would you have time to get these fixed in the next few days? |
|
I'd really like to get this into 2.0 since the 3m is designed for four decks and effects. Though my list is long, about everything in it should be quick to change/fix. Hopefully @sbalmer will have a chance to do so in the next few days since it will be quicker for him than me, but I can if he's unable. |
|
Thank for this thorough examination! I agree that most changes are shallow and I should be able to do most of that today. I'm not sure I'll get the time to test it well this weekend. |
|
That's fine. If you can do the changes, I can test the heck out of them. :) |
I've streamlined the modesetting process in commit 6595fc4 and this reduced the flicker a lot. Reducing flicker further should be possible but I'm not sure it's worth the complexity. For the deck switch I wanted immediate feedback that directly maps to the screen location of the deck (when you use the standard skin). The EQ sliders flash to indicate the deck you switched to for confirmation. When you switch to the alt deck (C or D) the bottom part will flash, when you switch back the top part flashes. If you think this is too confusing I can remove it or make it optional. There is now also the case when you hold for more than 110ms which triggers modesetting for relative mode. Then releasing before 200ms which will switch decks and modeset for absolute mode. This will trigger two modesets in short time and causes considerable flickering. I wanted the held-mode to be ready quickly and still allow deck-switch. |
|
I've added the I would propose we make |
Conflicts: res/controllers/Stanton-SCS3m-4deck-scripts.js
|
I tested the mapping for basic functionality this morning and it worked fine. |
|
I'm wondering, do you have the SCS.3m MIDI spec or have you been working from my preset and your own detective work?
Okay but it doesn't appear intentional to me (looks like something's buggy.) If you like it, I'd say make it optional and default it to off. The A/C and B/D lights are enough for most people.
Oh, I didn't realize this was present. (Did I just miss it on the wiki page?)
It should be True for consistency with the default for the SCS.3d preset. People may want the option (they explicitly asked for it on my first SCS.3d preset) so I'd leave it changeable, just defaulted to True.
This is why I'm saying to light the FX button red whenever the sliders are operating on effects parameters. As for the four soft-buttons, since red draws the eye much better than blue, if a user is quickly looking to see which effects units are engaged on that deck, red buttons would be more quickly visible (and also denote "hey, I'm currently doing something audible.")
That's fine, just make the FX button black whenever the sliders are not controlling effects parameters. (So whenever in EQ mode.)
That's a great point. Let's leave them out then. If anyone complains, we can always add them in the future. (But I expect nobody will since I'm willing to bet that most anyone who owns an SCS.3m has at least one other controller with transport controls.)
Ah, that's fine. We need a bug filed to fix the API.
Sweet! (Make sure that's on the wiki page too.) |
the button does nothing on its own
|
I've removed the "intentional flickering" and made eqModePerDeck the preset. Oh and yes I have to update the wiki.
The modesetting stuff I took from your mapping, couldn't have figured it out otherwise. I also ran a script that sent all possible Midi messages to observe what lights would light for which addresses. Eventually I found some documentation which helped clear the remaining questions I had, well most answers took the form "you can't".
I now do it as you suggest which is simpler and it avoids some (not all) flickering. I'll just have to get used to the lag :-) |
|
The mapping now allows switching to the last used effect unit by pressing FX. The preselected effect depends on the deck. So when you press FX on deck 3, it switches to effect unit 3 unless you've selected another unit for that deck previously. I'm not sure this is sensible. We could also preselect effect unit 1 for all decks initially. (This is what happens when eqModePerDeck is off.) |
|
I've spent some time reflecting on the red/blue lighting of the soft buttons. We could swap the logic with the lights so that pressing one of the soft buttons enables or disables an effect for the channel (red), and holding FX lets you select the active effect unit for this deck (blue). I think we use two different mental models for the device modes:
So in "Separate FX" model one would think "Now I need to control effects in unit 1 and I do that on the left side" and would press left soft button 1. In this model the effect units are not tied to a deck, and controlling an effect on the master channel, or controlling two effects for one channel is expected. This is the way I'm currently using the effects. I have the effect chains statically assigned, say a Filter effect on unit 1 and a Reverb effect on unit 2. Then I enable effect unit 1 for the deck that I want to use the Filter on. In the "Combined FX" model one would think "I want to control the effect for deck 1" and would press left FX. In this model the effect units are tied to a channel. I realize that Coincidentally, my 3d mapping uses the "Combined FX" model. |
That will be fine. I'm sure a major use case is to use a single separate effect on each deck.
That might be worth making an option at the top of the script as well.
My mental model is somewhere between the two. Obviously some of the power of Mixxx's effect units is that they can be assigned to any channel, or multiple simultaneously. I really like the way you have made the SCS.3m able to completely accomplish that and want to keep that behavior. I think where we're differing is that I see the EQ and FX buttons as "slider mode" buttons, telling the user what the sliders above them are controlling. So it's possible to meld the two paradigms in this way: if a user presses the FX button, they'll control the last-edited effect unit (which you've now defaulted to the one matching the deck number, so this works for those expecting unit-to-deck correlation,) and at the same time if a user presses any of the four soft buttons, they'll edit that effect unit, regardless of to which channels it's assigned. (The current behavior.) I was just wanting the FX light to be red when that happens so it's clear that the sliders are controlling effect parameters. I haven't had a chance to test since 6 days ago, so let me see how things are in the current iteration before you do anything else. I have a feeling everything is fine now. |
I think you've described the current state exactly :-)
I don't have plans to change the behaviour further. One last thing I've experimented with is to prevent enabling or disabling wet effects on live channels as a safety feature. It can save you from a blunder like changing an effect that is being used on another channel. Because the logic does not know about the neutral positions of the different effects, it does not allow adding wet effects to live channels. This is pretty irritating to me because I habitually disable the Filter effect on live decks when it's fully wet but neutral. So I'm not sure how I like this attack on my liberty to blunder. If you think this would be a useful addition see commit 91bbff7. |
|
That sounds like something Mixxx should support in the central configuration, much like "Don't allow loading tracks to playing decks" is now. Care to file another bug? :) |
|
Thanks for all the help so far! I will be away from my devices the next few days so while I might be able to comment I won't be able to do much work on them. I'm ok with merging the current state. The commits I added in the last two days have not seen any live use, I only tested them quickly for the properties I expected to change. |
sbalmer's SCS3 mappings with support for four decks
|
Thank you very much! |
|
Aw crap this was against Master. We'll fix it. |
|
I don't see the old 3M mapping being replaced in this PR. Is that what is intended? |
|
Yes, I'm going to take care of that. |
|
@sbalmer Can you update http://mixxx.org/wiki/doku.php/stanton_scs.3m to only describe the new mapping? |
|
@Be-ing I'll take care of that too |
|
I re-based this onto 1.12 and then merged it in be035b6. |
|
Many thanks for your work and patience @sbalmer with this months-long code review! |
This is an update to the Stanton SCS3 mappings. It features 4-deck support and controlling the filter racks. The mapping deviates in some important ways from the classic SCS3 mapping which is why I added it as an alternate '4deck' mapping.
These new mappings were discussed in pull request #762. I decided to commit again to get a cleaner version history for the original mappings.