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

Add new Milkdrop 3 waveforms #754

Closed kblaschke closed 5 months ago

kblaschke commented 6 months ago

Milkdrop2077 was so kind to provide me with the code his seven newly added default waveform modes and permission to port it into projectM.

Before adding the waveforms, I did some long overdue housekeeping:

There's also a new test preset for each of the seven additional waveform modes.

OfficialIncubo commented 6 months ago

I'm very happy for the new waveforms to be ported on projectM!

...but hey! Those 7 new waveforms are still on my BeatDrop improvement, also on BeatDrop2077?

EDIT: Do you want to extend custom shapes and waves to 16 or not?

EDIT 2: Milkdrop3's X Wave isn't controllable/rotatable via mystery parameter, but my version of BeatDrop does it 😜 Can you make the X Wave (WaveMode 10) controllable via mystery parameter, like this: https://github.com/OfficialIncubo/BeatDrop-Music-Visualizer/commit/653fda898c48ae22befe2fb692c216725c2a374f Also, you can assign me and Milkdrop2077!

EDIT 3: There are some presets that I have made using the new waveforms! Look at them in "Not working with the Original Milkdrop"! My Milkdrop Preset Pack

kblaschke commented 6 months ago

EDIT: Do you want to extend custom shapes and waves to 16 or not?

While this would be an easy thing to do, performance-wise it can have a heavy impact, especially the shapes, which put a huge strain on the GPU draw-call-wise (up to two draw calls per shape instance, so 16 shapes with up to 1000 instances would mean doing up to 80.000 individual draw calls if a thick border is used, which will give you performance issues even on a modern RTX GPU). Since projectM is also meant to run on slower hardware like the RPi, this can lead to heavy FPS drops. If I can find a way to reduce the draw calls to one per custom shape type, this might be a thing to consider - the per-instance expression code still has to run though, up to 16.000 times, which is heavy on the CPU.

EDIT 2: Milkdrop3's X Wave isn't controllable/rotatable via mystery parameter, but my version of BeatDrop does it 😜 Can you make the X Wave (WaveMode 10) controllable via mystery parameter, like this: OfficialIncubo/BeatDrop-Music-Visualizer@653fda8

Ah, good idea, added!

Also, you can assign me and Milkdrop2077!

I can assign you, but not Milkdrop2077.

EDIT 3: There are some presets that I have made using the new waveforms! Look at them in "Not working with the Original Milkdrop"! My Milkdrop Preset Pack

Will do, good test cases are always nice!

milkdrop2077 commented 6 months ago

Great news :)

kblaschke commented 6 months ago

Commit 40dddc3 ended up in the wrong branch, will move it back to where it belongs as the document isn't even finished. Just ignore this one.

Edit: Moved to kblaschke/projectm:gles-fixes.