Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Nomikos
Dec 31, 2003

I got sick of how all available music-visualization plugins had really poor spectrograms, so I made my own.


This is someone playing the piano and singing.


This is tremolo at the end of a guitar solo.

Unfortunately glDrawPixels() takes up an ungodly amount of CPU time for some reason; at the size above it's already using 100% of one core. Still trying to find a good way to draw lots of pixels to the screen very fast...

It's written in Haskell and uses PortAudio for the backend. For the screenshots above I connected it to the output of Amarok using JACK.

Adbot
ADBOT LOVES YOU

Nomikos
Dec 31, 2003

Thanks for the suggestions about glDrawPixel alternatives. From my initial look at the GLSL tutorials, synchronizing the scrolling action between my program and the shader sounds difficult so I'll probably try the enormous-stream-of-vertices idea first.

I also came across the Wikipedia article on wavelet transforms as an alternative to the Fourier transform, providing better frequency resolution without sacrificing time resolution. "Scalogram" instead of spectrogram. Once I free up some CPU time from drawing this should be a fun area to investigate :)

Nomikos
Dec 31, 2003

SuperFurryAnimal posted:


Ooh, walking spiders. I made a halfassed attempt at making exactly what you're working on, during senior year in high school. Except instead of actually thinking about ethology and balance and important things like that, I made an enormous blob of a neural network and hoped that reinforcement learning would solve all my problems :downs:.

In the end all my spiders succeeded in doing was curling up their limbs underneath them in a sad attempt to satisfy the minimum-height term of the reward calculations. I'd post a screenshot if it wasn't ugly and embarrassing compared to yours.

I'd love to hear more details about the algorithms you used :)

Nomikos
Dec 31, 2003



This is a password manager I wrote in C++. I made it because existing password managers (KeePass etc.) store the password database in their own weird format, and I don't want my passwords (and backups) to be unreadable in 10 years. So my password manager uses a GPG-encrypted text file with a passwd-like format (1 entry per line, 4 fields, colon-separated).

It also takes great care to ensure that all sensitive info is kept in mlock(2)'ed memory, to prevent swapping to disk. Some password managers forget to do this.

I finished all the important features about a week ago. I'm currently busy converting it from FLTK to gtkmm. Once that's done I plan to resume working on the Windows port.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply