projectM-visualizer / projectm

projectM - Cross-platform Music Visualization Library. Open-source and Milkdrop-compatible.
https://discord.gg/mMrxAqaa3W
GNU Lesser General Public License v2.1
3.22k stars 364 forks source link

Some of the visualizations seem to play too fast. Is this normal? #662

Closed ghost closed 1 year ago

ghost commented 1 year ago

Describe the bug I'm not sure if this is a bug or if it is just how the visualizations were made. Some of the effects seem to play much too fast, to the point where it's distracting and unpleasant to watch. I thought maybe it could have something to do with my 144hz display, but I tried switching to 60hz and it had no affect. If it is normal behavior and just how they were made, then I guess just disregard and close this request. Although, I do have an idea to discuss below

Screenshots The following examples are from milkdrop. The songs playing here are slow and relaxing downtempo, but the visualizations are running in super speed

https://user-images.githubusercontent.com/89231731/201528721-eaec3369-3d10-4f7d-b1dd-d5181073971d.mp4

https://user-images.githubusercontent.com/89231731/201528792-9358ee32-8edf-4309-bb53-f1514094b066.mp4

Desktop (please complete the following information):

Additional context If this is working as intended, then I have an idea to throw out there. I'm not sure how doable this is, but if it were possible, it would be nice if the effects started out slow, and then as the audio plays, analyze the peak patterns and try to detect BPM, gradually increasing the speed of the visualization to better match the music.

kblaschke commented 1 year ago

VLC ships with a very old projectM version, which might have some bugs and rendering issues that make the visuals look jaggy. Also, from the video, it seems the waveform data is only updated every 200ms or so, not every frame, which will make beat detection unreliable.

Also note that the "speed" visuals are rendered in has nothing really to do with the song's tempo. Presets can use the beat detection values to apply some effects such as changing movement directions, colors etc., but the general zoom/rotation speeds are hardcoded in the preset.

To actually do a proper comparison, could you please find and name some preset files that expose the described behaviour, so I can run them side by side in WinAmp/Milkdrop and our own projectM UI with the current codebase? Then I can probably anwser your issue more reliably, e.g. if that's old issues we've already fixed, an integration issue in VLC or some real issue that needs fixing - or just the way the presets are authored, if they behave the same in the original Milkdrop visualizer.

ghost commented 1 year ago

Sure I'd be happy to. Do you have any tips how I can determine which preset is playing? I tried launching vlc with --verbose 2 but it doesn't spit anything out when a new preset is loaded. And it only lets me choose a folder full of presets, not a specific one. That's VLC's problem of course, not yours.. just wondering if you might have a suggestion.

Thank you very much for the quick and detailed response. I've noticed in other issues that you really step up to the plate and try to help when a user reports an issue.

Edit: I will try creating a new preset folder and putting effects in one-by-one to test them individually

ghost commented 1 year ago

OK, the first one I tested dang near gave me a seizure, and it's running in super speed

milkdrop/Aderrasi - Agitator.milk

https://user-images.githubusercontent.com/89231731/201531616-8e7840bf-a0bd-42ee-b49f-7648c0867346.mp4

ghost commented 1 year ago

Here is another

milkdrop/Aderrasi - Crystal Storm.milk

https://user-images.githubusercontent.com/89231731/201532041-18083c1e-ff94-4e02-ac5f-2425ca860f13.mp4

kblaschke commented 1 year ago

Loaded both presets in the current projectM dev version, here's how it looks with a rather slow music track:

https://www.youtube.com/watch?v=-QBAee9rylw

So I'd say the version VLC includes (probably an old 3.x release) has a lot of rendering issues which were fixed in the meantime.