Situatie
Solutie
Winamp is one of the most iconic programs of the late 90s and early 2000s. Despite its long history, it has fallen by the wayside as newer, more capable programs have taken its place.
A few years ago, the Winamp source code was briefly released on GitHub before being pulled because it contained proprietary code. Still, copies of that repo exist on GitHub today, which was enough for me to create an updated version of Winamp for myself. When I’m listening to music, I don’t normally click the buttons in the media player app to pause or skip. I use the buttons on my keyboard. Almost every media app today supports those controls.
So, when I discovered that Winamp didn’t without some tweaking, the first thing I set about doing was creating a plugin that allowed Winamp to read standard media controls from Windows (System Media Transport Controls or SMTC.) After a bit of work with Claude, I’m now able to control Winamp normally.
Hardware has changed a lot since Winamp was first developed, and by default, Winamp doesn’t really play nicely with a ton of modern devices. Winamp couldn’t broadcast song information to Bluetooth devices, including car head units or some speakers. Integrating Winamp with SMTC to get the media keys working had the unintended (but welcome) side effect of making it fully compatible with modern audio devices.
Music identification didn’t work at all
If you use Apple Music or Spotify, or even many of the self-hosted alternatives, you’re used to having access to information about your music whenever you need it.
Winamp once had access to a service called Gracenote that enabled it to automatically tag songs, retrieve cover art, and generate playlists. However, the Winamp source code can’t include Gracenote, since Gracenote is proprietary and requires a license.
So, to replicate the same basic functions, I opted to integrate MusicBrainz and AcoustID. MusicBrainz provides the database and information about music while AcoustID identifies unlabeled songs. Together, they give Winamp the ability to identify an unlabeled song, fetch information about it, tag it, and grab the associated cover art.
Winamp has no trouble with classic media files like MP3s, but if you throw something more modern at it, it won’t work at all. Some popular modern formats it can’t handle include Opus (which is very common) and xHE-AAC.
To address that shortcoming, I created a Media Foundation decoder that allows Winamp to handle anything that Windows can play. It is designed to be as maintenance-free as possible. I don’t need to rebuild the plugin if I install a new codec extension for Windows; all I have to do is add the extension to Winamp’s list.
As Winamp ages and new codecs come along, this will be increasingly relevant.
Winamp used to be able to automatically generate playlists for you based on your local library, but like most of its music recognition features, the generator relied on Gracenote.
With Gracenote out of the picture, I needed a different approach. Generating a playlist requires some understanding of emotional context—throwing in Clair de lune immediately following something by Mr. Worldwide is more likely to raise tempers than the roof. I had Claude create a playlist generator that leans on MusicBrainz, Last.fm, and ListenBrainz for information.
Now, Winamp can “intelligently” create a playlist that accounts for the attributes of the current song, like genre and the real-world listening habits of other people. The generator then compares that information to what it knows about the songs in my local library and builds a playlist composed of similar songs.
All I need to do is right-click a track and select “Play tracks similar to”.
Most modern media players can display lyrics alongside a song as they play, but Winamp has no such capability. I created another plugin that automatically fetches the lyrics for the song that is playing and then displays them in a new lyrics window. If the song has no words, the lyrics window will just say “instrumental”.
If the lyric data includes word-by-word data, it’ll also highlight each word as it is said in the song, making it easier to follow along if you want to read them. Or shamelessly sing along, if that is more your style.
Leave A Comment?