211 comments

[ 4.3 ms ] story [ 284 ms ] thread
Yes, but does it really whips the Llama's ass?
(comment deleted)
Here is the Llama's story [1]

As of Mp3 Player, it was my first one... and it simply worked! I didn't need anything more than quick play (light memory use) and eventually a play lists. Its too bad they didn't cashed hard-core on it.

Not idea why anyone ever would need to change for another player that does... more.

Its still my default for all audios on Windows.

https://www.gizmodo.com.au/2013/11/a-brief-history-of-the-wi...

Man, that's a blast from the past. I don't know when YouTube took over as my primary music player, but this makes me miss the good old mp3 days.

Remember when 192kbps sounded so much better than the typical 128kbps tracks? Now 320kbps is just assumed. Yay! for 4G.

Author here. I wrote a Twitter thread demonstrating many of its features. You can find it here: https://mobile.twitter.com/captbaritone/status/9612747140133...
Nice! Was trying to find that video of the live drag and drop updating of the skin that I saw on Twitter last night. That's super slick.
Damn! Right in the nostalgia.

Now you just need shoutcast support ;).

People in this thread might also enjoy this Twitter bot I wrote that tweets Winamp skins: https://twitter.com/winampskins
Super cool. Where are you finding the skins? I went looking for some skins I made and put up on deviantart, but the download links are all broken. Do you just scrape the web or are they your personal collection, or are you querying a specific site?
I found a massive zip file of ~3K skins somewhere. I’m selecting skins from that set.
Does it support m3u or playlists over HTTP?
It theoretically could, but the endpoint would need to serve the assets with permissive CORs headers.
That makes sense, I forgot about the pesky CORS situation. My thinking was maybe the <audio> or other subsystem that is capable of loading MP3s remotely (since they are media objects) could do the same for playlist data.

Cheers!

Yeah, CORs is a wrench in the works for this stuff. Even our audio source is subject to CORs because we want to be able to do EQ and visualization.
Pretty cool stuff :D

Any plans to make this a PWA (by adding a serviceworker)? Would be awesome to be able to run this offline and in a dedicated window.

This is great and brings back a lot of old memories. Something that would help this spread (perhaps if it was hosted somewhere dedicated to it), is allowing a URL of an MP3 or a list of other audio files to be included in the link so people can share a song "the way it was meant to be played."

Thanks for your hard work and for making sure it wasn't broken in Edge. It was really satisfying to pull it up on my Windows 10 Mobile without issue.

Alas, this is more complicated than just including a link. The mp3 needs to be served with permissive "CORs" headers, and most are not. I made the call, that it would be too confusing for users to try to support loading from URL.
Yeah, that makes sense. You would have to download the remote resource in the link and re-host it which can get expensive quickly. There are probably a few scenarios where DNS tricks would save the day, but not reliably.
Regarding Edge, all credit goes to the work the Edge team has put into the browser. I just made sure I was building to spec, and it seemed to work!
For those who don't want to navigate Twitter for whatever reason (tracking, slows down your browser, bad UI, etc.), here's the content from the thread (the images and videos are still Twitter-hosted, by the way):

-----------------------------------

It's done! Winamp2-js (https://jordaneldredge.com/projects/winamp2-js/) finally supports all three windows!

To celebrate, here's a list of some of the cool things it can do: (thread) https://pbs.twimg.com/media/DVcfDHBVQAAp3Tm?format=png

* Load any classic Winamp skin just by dragging it onto the main window. (Shoutout to @stuk for JSZip which lets us decompress .wsz files in the browser. (link: https://stuk.github.io/jszip/) https://video.twimg.com/ext_tw_video/961271636983820288/pu/v...

* Drag local audio files into the playlist to queue them up. https://video.twimg.com/ext_tw_video/961271712238063621/pu/v...

* Visualize your music with the bar or line visualizer. https://video.twimg.com/ext_tw_video/961271795725709314/pu/v...

* Adjust the fully functional EQ to pump up the bass. (Shoutout to @epistemex for cardinal-spline-js (link: https://github.com/epistemex/cardinal-spline-js)) https://video.twimg.com/ext_tw_video/961271880035389441/pu/v...

* Import/export Winamp's own binary EQ settings files. https://video.twimg.com/ext_tw_video/961272045177782275/pu/v...

* Export your playlist as an .html file. https://video.twimg.com/ext_tw_video/961272121270743040/pu/v...

* Save screen real estate with each window's "shade" mode. https://pbs.twimg.com/media/DVcf90bVQAALtl_?format=jpg

* See each file's title/artist as specified in its ID3 tags. (Shoutout to @aadsm for jsmediatags (link: https://github.com/aadsm/jsmediatags)) https://video.twimg.com/ext_tw_video/961272266322407425/pu/v...

* If a skin specifies some transparent regions in its region.txt, they are respected. (Shoutout to @SaraSoueidan for (link:

No worries about copy/pasting. Twitter’s UI is not the ideal way to interact with this stuff, but it was the easiest way for me to put together all those short videos. Thanks for helping make it accessible.
Winamp + dialup connection. How many hours have we lost downloading a bunch of mp3 files...
That is why those of us that could do it, would bring our ZIP drives to the university labs and plug them into the parallel port. :)
that mp3 will be ready in 5 minutes. woohoo!
23 minutes to download Usher - Yeah and Outkast - Hey Ya!.mp3 - those were the days.
For a brief moment of my life, I got up as soon as my alarm went off. It was always exciting to see what MP3s were downloaded overnight from the queue.
Somehow it was more fun and you felt like you had accomplished something when you had a complete album. Things are too easy today :)
I was more a fan of Spin Doctors - Pretty Baby and Tony Hawks Pro Skater - Superman, personally
Dialup? Lucky. I had 14.4k through my dad's Startac until I was about 15.
(comment deleted)
You had the internet through a mobile phone and you're calling dial up lucky? Mobile phones were legit space age back then.
That's still Dial-up.

56k was just the last version of Dial-up. I started on 9600baud (9.6k) and it started well before that even, at something like 0.1k.

In my experience almost anyone referring to dialup is talking about 56.6k, or at the very least some sort of modem connected to the PTSN, screeching noises and all. Is your experience different?
Too many, I'm afraid. But do you remember the first time you had broadband and the time needed to download an mp3 was so short that you can't queue up the next download.
Had a aimilar experience recently after getting a fiber line installed and grabbing a game off Steam. Would have taken me hours on the old DSL, never mind a 33.6 dial-up.

I think my aging LAN gear capped out way before the fiber did, and an upgrade is on my todo list. ;)

I didn't have internet in my dorm, so I was downloading mp3s at university and retrieving them at home by floppy disk. That is, 128kbps mp3s, which is about 1MB per minute (iirc), on 1.44MB floppy disks. split(1) to the rescue. I did the same for (short) videos too. Crazy days.
I think i pissed off some kids in the neighborhood when i started doing CDRs for the cost of the disc (or bring your own and i'll fill it up), when they had been selling them at a 100% (or more) markup...
I still remember zipping/splitting files to fit on floppies. I permanently have the number 1457664 (size of a 1.44MB 3.5") in my head.
I moved dorms almost entirely for this reason when I was in College. The new dorms were being built with a broadband Internet connection straight into the College network.

It was leecher heaven!

That is until some wiseass thought it'd be a good idea to run a private ftp site for a piracy group from their dorm room. The damn thing saturated the entire network until they got caught.

For me the phone bill was even bigger issuer than slow download speed. Our local telephone company charged more than $1 per hour for all calls. I remember my parents being furious after seeing the bills.
Brings back the good old days :) But I don't have any mp3s anymore. Spotify.
Implementing this looks like it would be a fun project: https://github.com/JMPerez/spotify-web-api-js

You'd still need the Spotify desktop client open (Winamp2-js would function as a remote), but you could do things like populating the playlist window with a user playlist.

Unfortunately, you can never fully work. DRM means we can’t get raw access to the audio stream so EQ, visualization, balance, (for example) won’t work.
Pretty sure you can get it for visualization...
If you have an example, send it my way! I believe the Analyser node cannot get output from a tainted source.
You can use a virtual audio cable. Spotify -> virtual cable -> winamp -> real audio out
Can you recommend a "virtual cable" javascript library that is compatible with DRM output? I can't seem to find anything.
How does this work? Do you not have any old random mp3s you like that aren't available via Spotify?
Amazing work. Thanks for sharing.
Wow, it even has skin support! I spent way too many hours developing skins for WinAmp and Trillian back in the late 90s as a teenager. I get why skins fell out of style, but I also kinda wish they didn't. Choosing a skin lets you personalize an app, creating a skin does so even more while also letting you express your creativity, and having skins creates a community. If I ever make an app where skinning would make sense, I would 100% go for it. Skinning should make a come-back.
I've noticed lots of chat apps are adding skins/themes lately. Telegram is a great example, I believe slack also has basic theme support.
Absolutely. I don't get why skins fell out of style. I remember back in the day when I was working on an accounting app, even that I made skinnable. You may just be reconciling your bank account, but at least you could do it in a form that looked like it was made from marble, or wood, or whatever you wanted! It just made everything feel just a little bit less tedious... at least to me
At least when Trillian ditched skins, I think they were trying to compete with the bigger players (MSN, Google Chat) more seriously in the business world, and skinning isn't really something businesses care much about. In fact, just having this feature available can make the app seem more juvenile and less appealing than more "serious" alternatives.

Plus, you have to keep adding skin support for every new feature you add, which means the many skins that don't keep up will no longer work for the latest version of your app, which pisses off users. And when skins slow down or stop being made (people get bored, move on) it reflects poorly on the app, making it look like a ghost town.

> At least when Trillian ditched skins, I think they were trying to compete with the bigger players (MSN, Google Chat) more seriously in the business world, and skinning isn't really something businesses care much about.

Businesses often care a lot about it, they just call it “branding” (and it can be a big deal, even for internal tools); obviously, you need to show different examples to them than typical consumers.

Apple's designers decided that looked tacky and stopped doing it; the rest of the industry soon followed suit. Now everything has to be floating in a screamingly bright white void, so that your phone ruins your night vision every time you pull it out.

(I may have opinions about this trend.)

I always used skins in Winamp/XMMS, but I'm immediately filled with nostalgia upon seeing the default skin. I wonder if people who came to use computers in the last decade will experience the sort of enjoyment I got out of customizing the look and feel of applications. All of the walled gardens have intertwined design with functionality to the point where skinning doesn't really exist in the same way. I haven't used Windows 10, but I wonder if it's possible to replace the Windows shell like I used to in college.
Honestly, skinning is probably easier today than it ever has been. With custom client-side stylesheets, there's no reason someone couldn't roll out custom skins for sites like Facebook, Twitter, etc.
I bet there's branding and usability reasons for Facebook to avoid allowing you to skin/theme it to the extent Winamp was skinnable. Not sure I know what those are, but I just really doubt they'll ever add that feature.
Probably more like value reasons. What's the point? Would that drive more users to Facebook? Or current users to spend more time there?
While it worked great for Winamp and a few other apps, the process was a negative for others: MySpace being a big example. People modifying their pages to look like Angelfire/Geocities sites from back in the day killed any interest I had in them.
Tumblr took the other path in allowing you to customize your own user experience, it certainly comes with a trade-off.
One big difference is that in MySpace a user could modify how other users viewed their page. With skins a user can modify how they view other users page, but would not modify those other users experience.
What's the issue with people making their own space look like Geocities if it's what makes them happy and is how they want to express themselves.

Would also like to point out that customisation on MySpace is probably responsible for a whole generation of not only developers but non-tech focused people learning how to code. Met a lot of artists and designers who now work on the internet who MySpace was the starting point.

I have no issue with someone doing it, but it doesn't mean I as a user am going to want to continue visiting it. As bland as Facebook is in look (and it could probably do with a less cluttered redesign), it is at least not a jarring experience so I can live with it. And for a site like MySpace to work, it needs traffic.

Not sure on the generation of web developers MySpace created. Pretty sure every single page that looked like this was plastered with logos for theme building sites/companies littered with various neon-on-black comic sans designs as far as the eye can see.

Facebook is optimized to get you addicted to your feed. Muted blue colors everywhere with contrasting bright "berry red" rewarding notifications. Images that are always more contrasted than the layout, etc.

Anecdotal: I use a custom Facebook skin that makes the whole UI red and add a background image. Since I've started using it, I spend less time on the website. It feels, in a way, more tiring to use the custom theme.

Unfortunately, even proficient developers are having trouble due to some misguided technical choices those websites are making: https://twitter.com/sindresorhus/status/900005504931438593
If those websites don't wish to support skinning, I don't see how the technical choices are misguided.
True, but that still doesn't contradict the point made above regarding how the skinning community is a dying breed.

Edit: I now realize that, taken out of context, my comment sounds pretty twisted.

Originally stylesheets were meant to be recommendations. It was envisioned that user agents, users, and web pages would have their own, separate stylesheets, and the user agent would negotiate between the different stylesheets to determine the final style. I would argue that Twitter is going against the original spirit and best practices of the web with their technical decision to use css-in-js.
Exactly.

The Web is a medium with built-in customizability.

This "our product is perfect and must be used as is" attitude reminds me of a relatively recent example that seems to be dying down: mobile websites that used the `maximum-scale=1 ` value in `<meta name="viewport"`. This disabled zooming in mobile devices. This was an accessibility issue that affected people who otherwise don't encounter other accessibility issues.

If it were simply a matter of providing the smallest payload to clients, these sites could provide some sort of external manifest/source map mapping human-readable class names to hashes.

Meanwhile most people who have to use the web as a platform to build things view it as an incredibly painful mash of half implemented ideas and couldn't care less what the founders intended.

Let's stop using divs for presentation whilst we're at it and spend man-years on picking the right semantically named elements with no benefit to anyone anywhere ever.

No ajax or js either, I'm pretty sure they didn't envisage that.

To be honest, yes. The web was designed for hyperlinked documents. 90% of what I use the web for is still following links to pages with text and images. It is an unfortunate historical accident that people are trying to build thick client interactive applications using a technology envisioned and designed for sharing documents.
Just because the client-side application's source code is readable in a text editor it doesn't mean it's easier to skin than a binary blob who's theming support is documented.

Not to mention how your method could break tomorrow without warning because Facebook (or whatever you're skinning) push out an update that's incompatible with the theme you've hacked on to it.

I've tried to run custom stylesheets for some of these sites, to make them more usable and cut the cruft, but the interface elements are such a moving target, and with what appears to be randomized or obfuscated class names and ids, that it's a real PITA to keep working
Websites can change and break your client-side stylesheets.
It looks harder to completely replace the Windows shell than before. I've looked long and hard for a replacement that looks like Windows 95 (menus and windows controls especially) but no luck. There is WindowShades but it doesn't completely replace everything.
Doesn't ClassicShell still work in Win10?
Please don't get my hopes up!
Yes. It's almost required, since it replaces the incredibly brain-dead start menu search with something that works in a way that makes some kind of sense. I don't know how the default Windows 10 search is so broken.
Don't worry, KDE for Windows is still a thing - although the "whole shell" replacement currently isn't working with KDE Plasma 5, but only KDE 4
XP always had the option to turn off themes which resulted in a w2k-ish (and by extension w95) look. Is this no longer an option?
> I wonder if people who came to use computers in the last decade will experience the sort of enjoyment I got out of customizing the look and feel of applications.

What you had to make skins yourself??? You didn't just get them via micro-transactions and loot-boxes???

/s

browsers still have it
We've still got Slack themes: http://slackthemes.net/. Almost a necessity when you have multiple channels.
Drives me nuts that the sidebar is the only them-able part. The white background in the chat window destroys my eyes.
sorry to be the party pooper, but saddly, allowing skins kind of forfeits your control over the ui & design of your app doesn't it
The dev still has the power to choose the default; the user just has the ability to veto it. That sounds like a massive positive, from the user's perspective.
So? An app isn't meant to hang in a museum and look pretty for the developer.

If the end user thinks it would be better with a different font or larger text or a different background, then they're right.

And realistically once an app ships to the end user the developer has forfeited all control anyway.

> So? An app isn't meant to hang in a museum and look pretty for the developer.

Oh how many devs i have encountered over the years with that exact attitude, in particular post iPhone...

I wonder why we are not skinning websites 🧐
Could have sworn that browsers have the capability to load custom CSS. But then writing CSS may well be a full time job, so...
CSS is pretty simple. Lots of people offer custom stylesheets for websites at https://userstyles.org.
CSS is pretty simple but modern sites have hundreds to thousands selectors. If you want to do anything worthwhile you need to modify big part of those. And hope new updates won't change anything making your custom layout a total mess at some random point.

I tried to theme some popular sites to my taste of dark themes and it's really tedious.

Obviously every site is different, but I've developed a few styles before for sites like DDG and wikipedia, and it's a job measured in hours, generally. Nowhere near the amount of work involved in most OSS, and plenty of people here work on OSS.
Coincidentally, I just recently signed a tiny private Firefox extension to improve the readability of the HN comments to my taste :-).
Used to be a thing on Linux DEs, but then one of the major interface libs kept screwing around with their themeing APIs...
Unity tweak tool lets you do it in ubuntu
It came as a surprise to me but I found out literally today that VLC is skinnable: https://www.videolan.org/vlc/skins.html

If you don't want/can't run Winamp, VLC might almost be what you want.

Foobar2000 is a nice and customizable/skinnable audio player also.
i've been using fb2k for more than a decade now, but i gave up trying to do anything to fancy with it because its addon support was such a clusterfsck, mostly because i found over time that a lot of addons became defunct as their developer vanished, or the links broke or etc, and trying to get support on hydrogen audio was like sticking your hands into a bees nest.

to be fair it's been a long time since i looked into skinning it and things may be better now. it's still an excellent clean audio player, i just keep it close to stock with a few addons so i send audio to a chromecast.

there sure were some wild and beautiful fb2k skins and themes back in the day.

The closest thing we have to skinning on a major mainstream website today is subreddits being allowed to customize their CSS, and looking at what utter disasters the vast majority of subreddits look in their custom skins, I am somehow not super stoked about the idea.
From the standpoint of a designer, skinning deprives a product of a unique identity.
But if you're the only app with skinning support, it's a different sort of identity, and arguably a stronger one. I forgot almost all of the MP3 players I used in the 90s and 2000s, but Winamp is the one I do remember by name, probably for this reason.
I spent a lot of time customizing Windows skinning back in the late 90's and early 2000's. Unfortunately that kind of fell out of style as well. Third party ui shell replacements and easy customization are things I miss. I know you can supposedly do this with Gnome etc, but I really haven't taken the time/effort to do so, as I just don't have it these days.

I will say I really like(d) the windows 7-10 taskbar in general, and the windows 7-style start menu interaction with the windows 10 look (without the tiles). I switched to Ubuntu with gnome last year after win10 just pissed me off one too many times with the "user engagement" crap that gets loaded with win10. Though I've thought about going back a few times. (Laptop at home and at work are 2014-2015 mac pros)

It even supports the old Winamp easter egg!

Type nullsoft

I hope the random function is still as “random” as the original :)
Very cool! The sad thing is that I figured out that I didn't have a single mp3-file on my computer. Things have changed.
What about running it without the browser chrome?
Amazing.

Wishful thinking: If this included something akin to Shoutcast (perhaps via WebRTC), it would give us back the peer-to-peer listening joy we had for small groups and teams back in the day. I miss the era when things were more commonly/naturally peer-to-peer and decentralized.

Shoutcast was amazing, I can easily credit it to opening up my music horizons to bands that just weren't played on the radio at the time(euro-metal/etc \m/ \m/).

To this day I find Spotify and its competitors a poor substitute, algorithms still can't match a well curated station.

Shoutcast / icecast still is amazing. Still running a few environments and they perform great.

If you're looking to tune in to something, I like http://www.somafm.com, possibly the original spotify / coding playlist. (BeatBlender, etc)

Soma is an excellent recommendation!
Shoutcast and the real-time visualisations are two killer features Winamp had that I don't think any media player since has even come close to competing with.

I'm not saying there aren't still decent media players out there, but honestly I think Winamp is still the best there's ever been.

I completely agree, nothing came close to the awesomeness of Milkdrop 2 in Winamp. That's one of the reasons I got into programming, by being curious about how it "knew" how to move to the music. Still have it installed on an ancient PC, will never delete it!
Cool, but it depends on Soundcloud (dying platform AFAIK given the recent exodus). How's that gonna help me if I use Spotify? Spotify can stream to my TV using Chromecast, showing lyrics via Genius. Why can't it also do some VJing? projectM is open source.
I still don't get how they did the transitions. Maybe I'm remembering it wrong, but it seemed like one visualisation always smoothly transitioned to another one. No idea how they that worked.
Agreed, vis were awesome... with the TV apps that have Pandora and Spotify and similar, I miss it a lot.
Oh wow. If I could get this as an Electron app I'd be a happy (nostalgic) user.
Why don't you just download the real Winamp 2.9 and save yourself the potential GB of RAM usage?
Probably because he is on macOS or Linux.
winamp 2 almost certainly runs fine under wine.
Or if you don't need a genuine Winamp, Audacious Media Player has an optional Winamp-style interface that supports Winamp skins and looks and feels almost identical.
Indeed, except for video playback. Also, the minibrowser looks dead. Also, I try to update WineHQ WinAmp 2.x entry
I'm sittin' here playing SPC files via Winamp in OSX (using Wine). Works a treat.
I spent a fair amount of today actually trying to get winamp via wine on MacOS High Sierra... no joy (doesn't show any audio devices for dx9)
This is going to be the basis of my next startup: Winamp as a Service.
Does it support milkdrop?
Very cool. I saw this and imagined the future - maybe compiled as a webassembly binary.
I've installed Wine on my Debian juste to use Winamp.

That's so many memories ! Thanks captbaritone !

xmms (formerly x11amp) used to fill that niche, but it's not available in Debian anymore apparently. xmms2 apparently went with something different, but it does look like promoe is a xmms2 frontend that takes on this legacy.
I remember when I only had enough spare space on my Centris 610's HD (it was 80MB) for two or three MP3 files. I just had my two favorite songs on my computer that I would listen to with some MP3 player. It may have been a version of Winamp for System 7 if there was such a thing but I can't remember. I think the songs were Chemical Brothers and Crystal Method.
Amazing work. Moving the main application window around in the open blue workspace is so "native". It's like I just got a new OS right there in my browser.

I wonder if I can get other things to run in the same isolated space??? To begin with how about something symbolic like XEyes or good old, in fact anything good old.

Awesome! Brings back memories.

A few things I noticed: I am trying a long live set and times over 100 minutes are not shown properly. I shows modulo of 100.

Left and right arrows shortcuts should be jump 5 seconds not 5 minutes.

Just says "Loading ..." for me when using SlimJet? Chrome works.
Which browser/OS are you on?
SlimJet Version 17.0.4.0 (based on Chromium 63.0.3239.52) (Official Build) (64-bit)

Windows 10

Here is the same thing, the errors are:

TypeError: Object.entries is not a function(…)e.(anonymous function) @ console.js:32

Skin.js:127 Uncaught (in promise) TypeError: Object.entries is not a function(…)

Could you paste a full stack trace?
This is amazing! Brings up fond memories of my attempts at building a winamp clone in assembly.

You really learn to love higher level abstractions when you write that much assembly by hand...