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

Implement CO for waveform alpha and prefilter waveform #3130

Closed
wants to merge 1 commit into from

Conversation

poelzi
Copy link
Contributor

@poelzi poelzi commented Sep 26, 2020

Add two COs to control the waveform alpha as well as the prefilter
waveform alpha.

Adapt existing waveform renderers to use the CO.
Implement prefilter waveforms on the missing waveform renderers.

Add two COs to control the waveform alpha as well as the prefilter
waveform alpha.

Adapt existing waveform renderers to use the CO.
Implement prefilter waveforms on the missing waveform renderers.
@poelzi
Copy link
Contributor Author

poelzi commented Sep 26, 2020

Screenshot_2020-09-26_02-14-28
Example screenshot. The GL renderer does a 2 pass rendering, first the unfiltered and then the filtered signal. This way you can easily see, where the baseline starts after a break. Something I have struggled with, multiple times.

@Be-ing
Copy link
Contributor

Be-ing commented Sep 26, 2020

Why should this be configurable? What problem is this solving?

@poelzi
Copy link
Contributor Author

poelzi commented Sep 26, 2020

It allows you to map it to a controller knob. I want to control, how much unfiltered waveform I want to see. I plan my transitions sometimes 30-90 seconds into the future (when the bass swap happens) but the track is already mixed in. Without seeing bass, I sometimes don't know where the break ends and the right point is.
If you don't like it, just set it to 0 and you get the old behavior back (depends on the renderer actually). Also, one maybe wants to tweak the normal alpha value to their own liking. The looks depend on the monitor.

@Be-ing
Copy link
Contributor

Be-ing commented Sep 26, 2020

Really? You want to adjust the rendering of the waveform from a controller?

@toszlanyi
Copy link
Contributor

toszlanyi commented Sep 26, 2020

@poelzi - I like that idea very much and support your point. I am mixing the traditional way though counting the beats in my mind to know when I am kicking in the bass. to have a visual support for a bass kicking in after a break is much appreciated.

@Be-ing - it is not solving a bug or so but I really love this idea as a new feature. Possibly people (incl me) took is as granted and never thought about missing it. But once it is available I would love to use it. Wouldn't map it to a controller though.

@Holzhaus
Copy link
Member

Holzhaus commented Sep 26, 2020

Maybe we should try to improve the rendering in other ways. Adjusting the waveform rendering from the controller is weird and we don't have an unlimited number of knobs/faders/buttons available, so most people won't benefit from this.

@Be-ing
Copy link
Contributor

Be-ing commented Sep 27, 2020

Sorry if I came off as a little harsh before, but I think we should really question every time someone suggests adding yet another option to Mixxx's already large and complicated preferences. @poelzi you may well be onto something for improving the appearance of the waveforms, but I don't think a preference option is a great way to go about it. If it makes the waveform look better, why not use it always?

@ronso0
Copy link
Member

ronso0 commented Sep 27, 2020

Sounds like we want to

A wish I understand and share:

  • add some CO to switch to a 'high contrast' waveform mode (without having to switch the skin/theme)

@ronso0
Copy link
Member

ronso0 commented Sep 27, 2020

  • keep the preferences simple

@Holzhaus
Copy link
Member

  • keep the preferences simple

"keep" 😆

@ronso0
Copy link
Member

ronso0 commented Sep 27, 2020

you got the message :)
let's say "keep additional preferences simple": High Contrast Mode toggle instead of a slider/spinbox combo

@poelzi
Copy link
Contributor Author

poelzi commented Sep 28, 2020

I just want to control the hard coded alpha value together with the alpha value of the filtered part. That's it. They are two settings in the waveform preferences and they are COs because I want to have them dynamic. I did not overcomplicate things and created a CO for each deck. One CO for each setting. If you don't want to map it, don't do it. Just use the slider and set it to whatever look you like.

If it is about simplicity, we should remove alpha for beatgrid as well. I use it, because I like it more not that prominant. And we should remove most of the waveform render types as well, why so many. Let's go the gnome way and remove everything remotely useful and just force our view how things should look/feel on the user.

I seriously don't get why this 2 new settings are such a problem.

@poelzi
Copy link
Contributor Author

poelzi commented Sep 28, 2020

@ronso0 please read the patch and the description, has 0 todo with high contrast mode at all.

@ronso0
Copy link
Member

ronso0 commented Sep 28, 2020

This way you can easily see, where the baseline starts after a break. Something I have struggled with, multiple times.

This and the screenshot made me call it 'High Contrast' mode as you appearantly want to have a higher contrast between bands than current master delivers.

@poelzi
Copy link
Contributor Author

poelzi commented Sep 28, 2020

No. It makes the alpha value that it hard coded in each renderer share a adjustable setting which is also a CO.
Some renderers already implemented something like that, but for the rest ones:
First it renders the waveform with the prefilter alpha value and without equalizer settings.
Then it renders with the normal alpha value waveform, this time with eq adjustment.
This is why the the waveform has bass kill on, but you still can see where the bass would be, if the filter was off.
This helps a lot getting the bass swap on the correct bar. I found myself quite often moving the volume down of the next track, just to reactive bass, because I lost track where the break ends and the next segment starts, super annoying.

@ronso0
Copy link
Member

ronso0 commented Sep 28, 2020

thanks for the explanation, I'll test this branch.
though I doubt anyone will map this to a controller. we should think about how to make this accessible in some way for skins. there however, I think discrete modes will fit much better than a slider or knob, more something like an EQ Kill button per channel.
Or just draw the outlines of the bass band for example.

@Holzhaus
Copy link
Member

Holzhaus commented Sep 28, 2020

Or just draw the outlines of the bass band for example.

I think it might be feasible to do this unconditionally, without the need to make this an option or CO. But it probably needs testing to check if this works for all use cases. @poelzi would that work for you, too?

And we should remove most of the waveform render types as well, why so many. Let's go the gnome way and remove everything remotely useful and just force our view how things should look/feel on the user.

I know you're saying this sarcastically, but tbh I think we should hide the redundant waveform renderers and auto-select GL/GLSL/CPU rendering depending on what is available.

And I do think the GNOME devs do have a point to some degree: adding config options makes stuff harder to grasp for the user, and possibly creates a worse out of the box experience. First, we should think hard about how to create the best experience for every user without the need to configure something. Only if we conclude that there users have clashing requirements that make this impossible we should consider a config option.

@ronso0
Copy link
Member

ronso0 commented Oct 1, 2020

I tested this and I could only see a notable effect with the RGB(GL+GLSL) and Filtered(GL) renderer:
with RGB I could see a difference with the bass band, with Filtered I could see some effect at the highs.

I did not find the balance to use this permanently and I don't imagine anyone would open the preferences during when mixxxing.
That said I still think the only way to make use of the controls is either by mapping a controller knob to affect both Waveform & Prefilter opacity, or by having a skin toggle that switches between two user presets: emphasis on waveform or pre-filter.

@poelzi
Copy link
Contributor Author

poelzi commented Oct 5, 2020

I close this in favor of #3153
Since adding 2 COs was to much, I wrote a new glsl shader that renders the waveform how I like it.

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.

5 participants