Using Guayadeque | Track Editor | Backups
Guayadeque includes a Milkdrop visualizer (projectM, experimental).
Open it with View -> Visualizer or (F9): it shows a dockable panel that can also float. Pressing F9 again hides it.

View -> Visualizer Full Screen (Shift+F9) opens it in a dedicated fullscreen window from any state; a second press, Esc, double-click or "Exit fullscreen" in the right-click menu docks it back, while F9 from the fullscreen window closes it and hides the panel. Both shortcuts are configurable in Preferences -> Shortcuts.

While music plays, the playback pipeline feeds real audio to the visualizer (synthetic audio is used while nothing plays). Presets play in shuffle mode with automatic switching; the canvas context menu offers next/previous preset, fullscreen and close.
A subset of 50 projectM presets is shipped with Guayadeque, so the visualizer works out of the box. It builds against libprojectM 4, 3 and 2.1 (v4 preferred when several exist). Its options live in Preferences -> Visualizer.
The visualizer needs a X11 display and has no support to run under Wayland unless you use XWayland. On Wayland sessions without X11, it is unavailable and its menu entries stay disabled.
Run Guayadeque with env GDK_BACKEND=x11 guayadeque to use it through XWayland. We won't force XWayland in the .desktop file so as not to degrade the whole app on Wayland (scaling/integration) or break sessions without XWayland.
Native Wayland support waits for a newer wxWidgets with EGL canvas support (version 3.4).