mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.48k stars 1.28k forks source link

Add Motion-Blur to waveforms and spinnies #12012

Open JoergAtGithub opened 1 year ago

JoergAtGithub commented 1 year ago

Feature Description

Motion-Blur should improve the visual appearance of the waveforms and the indicators on the spinnies a lot. The technique is described here: http://john-chapman-graphics.blogspot.com/2013/01/per-object-motion-blur.html

Difficult might be the handling of short loops (e.g. 1/32 at 120BPM means a loop duration of 15.625ms, while the maximum framerate of Mixxx is 60fps equal to 16.666ms).

Holzhaus commented 1 year ago

Unsure if this is good idea (I remember the times whencheap LCD monitors suffered from blur on movement) but we won't know until we tried it.

Swiftb0y commented 1 year ago

possibly quite easy to implement under QML using a ShaderEffect. At least easier than under the current system.

Holzhaus commented 1 year ago

One more reason to get waveforms working under QML as soon as possible.

Swiftb0y commented 1 year ago

@m0dB IIRC you had a branch with geometry-based waveforms for QML. Is that ready for a PR?

m0dB commented 1 year ago

@Swiftb0y , correct! But it has been ages since I touched that, or even looked at the QML code.

It is this branch:

https://github.com/mixxxdj/mixxx/tree/qml_scrolling_waveform

Note that this is just the waveform itself, and none of the overlays.

To be honest, I kind of lost interest in the QML implementation when I saw that it was not progressing much, and because, as I mentioned in Zulip at some point, I have my doubts about the approach of rewriting everything from scratch instead of doing a more gradual refactoring.

That said, I am happy to revive my branch, rebase it and revise the code with everything in mind that I have learned from doing the all-shader waveforms.

Poyeyo commented 10 months ago

Hello all,

As an alternative to this, what about removing the limit of 60 frames per second?

I have a 144hz display, and would love to see the waveforms moving that smoothly.

daschuer commented 10 months ago

Can you file a separate issue for that? It is probably only a few lines of code.

ronso0 commented 10 months ago

It's actually just changing the <property name="maximum"> of the slider and spinbox in https://github.com/mixxxdj/mixxx/blob/main/src/preferences/dialog/dlgprefwaveformdlg.ui

Unless there's another place where the framerate is limited, you'll notice ;)

JoergAtGithub commented 10 months ago

Please note, that motion blur has much more benefits than increasing the frame rate, because you can calculate it individual for the real time period between two frames (different to the target frame swap period of e.g 16.66ms), it will therefore cancel visual stutter of the waveform movement, when the event queue stucks (e.g. while library scrolling).