Ever wanted your desktop windows to jiggle around on-beat? I wrote a Winamp plugin to solve this important problem.

Download: https://mew.tv/projects/shaker.html
Source: https://git.sr.ht/~juni/shaker

Shaker for Winamp « mew.tv

Still using Windows 2000? I got you covered. <3
@juni use linux! That good/old looking os Windows 95/XP is in almost all DEs/WMs today, like https://en.wikipedia.org/wiki/Cinnamon_(desktop_environment) (default on linuxmint.com), for instance
Cinnamon (desktop environment) - Wikipedia

@fbobraga appreciated, but classic Windows has many other benefits over modern-day Linux distributions. It's not just the look and feel. :)
@juni have you tried some? XFCE and Cinnamon will surprise you, I think ^^ #gnomesux #KDEisTooHeavy

@fbobraga Yeah, I have been using Linux almost exclusively 2015-2020. Xfce, MATE, GNOME, KDE, custom openbox, Window Maker. I hate all of them, some more than others.

You're right, desktop Linux is surprising. Constantly. I don't want my OS to surprise me, I want it to work.

@juni I use exclusively Cinnamon now, after yers of XFCE) ^^
@fbobraga I am glad you found a good, free desktop environment.
@juni Cinnamon has all the good old that I've used to get on Windows 95 during the 90s (besides some improovments: almost instantly open/close windows: M$ stuff is too bloated, today)
@fbobraga I got your point. Not interested, sorry.
@juni I've use linux exclusively on my home since 2007 (but I've deal with windows for some employers)
@juni i'm so glad you added support for peak
@juni but now I can’t get anything done while listening to Venetian Snares 

@zomgwtfbbqkewl @juni Mr. Oizo’s Flat Beat is Level 2-3

Venetian Snares’ Gentleman would be level 8, easily.

Whenever I’m in public transit and some AH is listening to music on loudspeaker, I find myself within my rights to do the same and my artist of choice is VS.

It always works ☺️

@renata @juni some good old Dillinger Escape Plan would probably also work 😁😁😁
@benjojo @juni Not gonna lie, this is cool! I honestly had no idea Winamp was still a thing.
@petersanchez @benjojo It's really not (except for a recent maintenance release), but Windows is excellent at maintaining backwards compatibility so I'm just gonna keep using this adorable player.
@juni THIS IS SO COOOL i wish there was a gnome pligin for this
@Teh404Gal @juni You know I was thinking, if the algorithm that computes the window position movements from sound waves (the choreographer, I guess) could be refactored out, I bet someone could turn it into a plugin for pulseaudio/pipewire and KDE/Gnome/etc. #linux
@diazona @juni good idea, im bookmarking this

@diazona @Teh404Gal It's trivial. Take a look at detection.cc. DigestSpectrum() returns 1 if there is a peak and 0 if there isn't.

If you search for basic beat detection algorithms on the internet, you're 100% going to come across very similar concepts.

@juni @Teh404Gal Well there's more to it than that, there's also the part that takes those 1's and 0's and computes changes to apply to the window coordinates. Which I'm assuming is Render() in vis_shaker.cc, right?
@diazona @Teh404Gal Hmm, I might have misread your comment, sorry about that. The window shaking takes place inside Render() indeed. It's also more primitive than I'd like to admit. Fow now, at least.
@juni @Teh404Gal Oh no worries, I think it's cleared up now. (Especially now that I actually took a look at the code lol 😅 I definitely expected it to be more complex and harder to follow than it actually is!)
@diazona @Teh404Gal I really wanted to build a more sophisticated beat detection and presentation as well (still do!), but you're right, the results are already pretty good. So I didn't.

@juni @Teh404Gal Yeah it looks great as-is!

I did consider that if the part that turns audio into window positions were to get refactored out anyway, it might be a good candidate to make into some kind of pluggable module so people could substitute in other algorithms. But this is all very hypothetical at this point anyway.

@diazona @Teh404Gal That would be interesting, yeah! Feel free to use that code in any way you want to.

Personally, I'd like to keep the codebase's complexity low and Windows-centered for now.

@juni @Teh404Gal Of course, that definitely makes sense. What I had in mind was a totally separate project that would be a Linux "port" of your idea. Though honestly, as much as I would love to do it, I probably won't have time to any time soon. Maybe later, if nobody else does so first.

Thanks for offering permission though! If you wouldn't mind, perhaps you could add a LICENSE file at some point to make it official? Not that I don't trust you, but if someone does make a derivative project and a copyright-related problem ever does come up, it'd be handy to have something more prominent than an old (in the future) Mastodon post to point to as confirmation that it's okay. Y'know, for the lawyers 😛

@diazona Sure, I'm gonna add a LICENSE file tomorrow!

Edit: haven't decided on a license yet. But then again, I don't think a license is needed for someone to re-implement the idea?

@juni Thanks!

Again, very cool plugin 😀 congrats on making something so interesting!

@diazona thank you, the feedback took me by surprise as well :)
Looking at the code, the algorithm part of it seems pretty trivial
The only real work that would need to be done is the integration with the sound system and windowing system
The project does lack a license, which could make for an interesting legal situation, but I don't know if a license will be added in the future
@usernameswift @diazona Thanks for making clear that the core of the project does not contain real work.
Hey, I respect you for putting up with the Windows windowing system
That thing is scary
@usernameswift Less scary than dealing with two competing windowing systems at once while also dealing with twelve competing audio systems at once.
You have a point
That is why I dislike the Linux ecosystem, the fragmentation is quite problematic
@usernameswift @juni i solve this problem by simply ignoring every possible tool that isn't what i am using
@juni does this work on Linux?
@moshibar Yeah, it runs well via Wine, on both X11 and Wayland. That being said, Wine only seems to expose other Wine-related windows, so all it can do is shake programs launched through Wine. Not that useful, sadly :(
@juni this likes look like this can be part of a malware meant to just fuck with people lololololololol
@wolfsbane this wouldn't scare any experienced Windows user. the entire OS is malware!
@juni I, for one, appreciate your track choice to showcase the windows bopping
@juni Definitely in your wheelhouse, @crowgirl
@juni lmao it's like there's a virtual subwoofer on the desktop
@juni looks groovy and all, but please tell me the Windows compositor/wm disallow an arbitrary client to affects other processes windows geometry by default! That's some X11-level craziness, if so!

@scaroo I have to disappoint you. The Windows API is very liberal regarding this behaviour. No privileged access needed. :^)

(However, the plugin cannot modify windows running under a more privileged account.)

@juni I can't stop laughing every time I watch that demonstration video of yours.
And I can't stop playing the video again and again.
Someone send help!