-
-
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
S4 Mk3 screen support #13653
base: main
Are you sure you want to change the base?
S4 Mk3 screen support #13653
Conversation
e2e4950
to
cb4059c
Compare
0ea02bd
to
1c270cf
Compare
1c270cf
to
cdcbd4e
Compare
@mixxxdj/developers what are you opinion about where this PR is aiming? I'm now at a stage where the mapping is pretty stable and usable. I appreciate that this introduce a huge amount of source code. I'm afraid there is no alternative, and I think the current screen content is really impressive! (Happy to post a full demo video if you would like me to justify adding 74 QML files...) I would like to get an agreement in principle before I start working on the documentation PR. Note that every C++ change is the early version of the dependencies and once those are merged, this PR should include no core source changes. |
I will try to take a look at this soon. |
Sure, we want to have this feature in Mixxx. This is why we co-financed the S4 Mk3 for Owen. |
the biggest point of controversy was how the data from the engine is shared with the controller. That is a mechanism that will be used by every controller with a screen, and needs to be safe and efficient. If we are agreed on how that works, then the rest of the changes are good to go |
The approach I went with is a controller settings to enable the API rejected in #12199, is this is a must have for the screen. As suggested in the PR description, this will allow me to maintain a single code base, and also allow advanced users to build this feature while still using the mainstream mapping. Obviously, if we ever manage to get a stable API in Mixxx, we can eventually make the migration. |
for sure, we want to get this in and don't want to have forks that need maintenance. I do like the approach of using a controller setting to enable / disable the new API. That limits the blast radius nicely. If/when another controller screen comes online, we can iterate on the design as needed. |
cdcbd4e
to
d3b16c3
Compare
f5b7c13
to
85f2705
Compare
85f2705
to
60383a2
Compare
Manual PR available in mixxxdj/manual#703 |
I tested Some notes on the Advanced screen from a quick test:
rendergraph waveforms:
|
Thank you for this kind word. I have spent hundreds of hours on this feature, and with the recent backlashes I had on other efforts, I am very happy to see this one being well received. Really appreciated! :D
Yes, I agree. I feel like some of it could use some more manual inputs, but I've been struggling to efficiently describe those options. There is also many settings for which I haven't provided a description at all yet.
I will add the rate into the computation
Yeah, I'm tempted to disable that for now; I need to do quite some computation to help with this, same with the phase indicator. My plan was to add some RO COs to expose more of that information natively after the new grid system, but since this has taken a stop, I might simply remove it for now.
Sounds like a round bug. I'll have a look
Browser mode is currently not available (I'll hide the setting for it).
Ah yes, I will add them back (they used to be there)
I cannot reproduce, are you sure that
I couldn't reproduce either, but sounds like this could be related to a bug in in the controller setting (on blur event fired after apply event?)
This is still TODO, I was waiting for rendergraph for this, but this should come soon now. It will hide the grid on the waveform
Yeah, unfortunately, not much we can do about this. This comes to the limit of the S4 itself. The screen are very slow to be rendered (~75ms). During my reverse engineer, I realise you redraw part of the screen, so this is how I manage to unleash ~40FPS.
Yes, that's a limitation of rendergraph+QML due to the waveform factory monster |
I will try to do some s4 hacking over xmas break! |
This PR include support for the S4 Mk3 screen support. It is made to work without #12199 although there is a setting to enable communication between mapping. This way, I can maintain a single mapping definition, without needing to get an API commitment for communication between mapping.
It includes two themes:
Depends on:
Here is the list of improvement made on the core mapping
feat/s4-mk3-screen-support-with-shared-data
)