Hacker News new | past | comments | ask | show | jobs | submit login
Winamp2-Js: A Reimplementation of Winamp 2.9 in HTML5 and JavaScript (jordaneldredge.com)
232 points by nfriedly on Sept 22, 2017 | hide | past | favorite | 109 comments

So many minor things work just slightly different than in original that it's really unsettling to use - song title scrolling, window snapping distance, mouse wheel volume control, etc.

I guess there is uncanny valley in UX too.

Would you mind filing issues of any of these things that you noice? https://github.com/captbaritone/winamp2-js/issues I'd love to get as close as possible, and some things I just haven't noticed yet. In other cases, there are technical limitations.

The interaction with the equalizer sliders isn't quite right. Once you grab any slider, you should be able to move the mouse horizontally to affect the rest (draw the curve you want with the mouse).

I learned JavaScript by implementing a similar project which gets this detail correct: http://freecog.net/2005/jsamp/demo/MainWindow.xhtml

(It is quite amusing to read the release notes: "SVG features (the equalizer display) requires Deer Park Alpha 1 or later (Deer Park is the codename for Firefox 1.1, to be released in September).")

Wow! Awesome job, especially for 2005. Do you have the code anywhere? Do you mind if I add you to the "predecessors" section of my readme? https://github.com/captbaritone/winamp2-js#predecessors

Go ahead! There's a .zip file linked here: http://freecog.net/2005/jsamp/

This being 2005, the code is pretty much what you see there -- no minification or anything. The source archive contains the template files (this project was done as a skin for BrowseAmp, a plugin which added a web server to Winamp to allow remote control of it).

> Deer Park is the codename for Firefox 1.1, to be released in September

Anyone remember Phoenix 0.1.0? Phoenix became Firebird became Firefox.

I remember it being so amazingly fast compared to the full mozilla suite that I switched immediately. Looking back it’s truly odd that people thought a browser needed an email client, news reader and html wysiwyg editor included by default (and non-removable), but I remember at the time it made complete sense.

I think it made sense since html email was much like html on the web. Who knows, maybe in the future people will think it strange that the email reader had an editor to send mail?

I think it is fair to say that not forcing people to have a web authoring tool that reminds them they are the author contributed greatly to the new web of walled gardens.

My dad is currently using SeaMonkey for email and and editing his website.

It feels very wrong but after 20 years and 100 GB of pop3 email, it's hard to switch I suppose.


* Hold down LMB on the title, release LMB, before title starts to scroll hold down LMB once again. After ~1s title starts scrolling even though you're holding LMB down.

* After scrolling the song title a few times, when I hold down LMB, wait a moment and scroll once again, title jumps ~20px left or right.

* In original winamp mouse wheel changes volume whenever cursor is over main window. In JS version wheel only works after I click the volume bar and hover over it.

* Move equalizer window down 100px or so. Try to move it left or right. It snaps to main window. In original, horizontal snapping works only if windows are touching each other.

* In original, holding down LMB on a control button and moving it to other buttons causes those buttons to appear pressed in (and register as a click when releasing LMB). In JS buttons act independently.

* Activating double-size mode doesn't move equalizer window if it's snapped to main window. In original it does.

* In original seek bar updates every second or so. In JS it updates continously.

LMB means left mouse button. I remember first time I saw someone say LMB without explaining what it meant I was really confused.

Awesome! These are all great. Lots of things I missed. The only one I was aware of was the problem with updating the window position when entering/leaving doubled mode. Winamp does lots of clever things in that case, and I've had a hard time reverse engineering the exact behavior (try some fancy edge-case layouts with three or more Windows for example) so I haven't done any implementiaon. I'll transfer them to GitHub! Thanks again.

Ah yes, back when mp3 player applications did one thing and one thing well.

Now we have iTunes.

You are romanticizing Winamp 2. It did many things, and not all well. It played a lot of audio formats besides MP3 as well as video formats. It was a damn SHOUTcast server. It had a frustrating playlist manager. It was skinnable. It had a hardware-accelerated, extensible visualizer. It had a damn RSS aggregator and website scraper for automatically downloading songs. And let’s not forget that it had support for syncing to many portable audio players, including the iPod. It was every bit as full-featured (or bloated) as iTunes.

> And let’s not forget that it had support for syncing to many portable audio players, including the iPod.

I'm pretty sure you're thinking about Winamp 3 or 5. Winamp 2, upon release (in 1998!) had no such feature IIRC. It didn't even have a "Library view" of all your MP3s, it only had a very rudimentary playlist.

The main thing about Winamp 2 was that it was fast. For example, the skins were just bitmaps (none of the crazy theming that Winamp3 enabled). The visualizations were delivered by a set of plugins -- all of which you could get rid of.

It's much more enjoyable to use, though. Perhaps it's the dark theme, or the analog-looking EQ but when I listen to music from iTunes, it just feels like I'm launching songs from an MS Office application or something.

I also believe that WinAmp just sounds better. Even after playing with the EQ on iTunes, I can't get it to sound as good as WinAmp.

> I also believe that WinAmp just sounds better.

I really dislike iTunes, but I find this claim hard to believe. In the audiophile community, we usually test such claims with double blind tests. Interestingly enough, a metal wire coat hanger held up just as well against $100 premium Monster audio cables.

It was a tiny file with tiny memory consumption and the UI was instantly responsive. It may have been full-featured, but it didn't feel bloated.

I've tried iTunes only once on Windows many years back and at that time it used to for download a small OS alongside it consuming huge amounts of memory even when it was not running. That is just wrong.

Reportedly it took a lot of convincing to get Jobs to OK the release of iTunes for Windows.

I've reverted to using Linux but I do miss just one piece of software. I miss JetAudio, the earlier versions. I think I first got it with an MP3 player that I bought on a trip to Australia. I'd later just pay for the app.

It eventually got some bloat with new features but the features they added were pretty nice, like ability to burn discs.

I do miss that app. I could possibly get it going in WINE, I guess.

In the beginning iTunes was really focused; fast and to the point.

Now i'm afraid of touching the media control keys of my keyboard and risk launching it.

I wish Android phones had something like Itunes. Can you buy an app or music on the play store then sync that content on with your phone, offline? with every possible Android device?

Apps purchased from the official Google Play store can only officially be installed through having the phone itself connect to the internet. You can buy the app from the web site and tell it to queue an installation to a device, but officially the device itself must be connected to install or update apps.

Android does support unofficial app distribution as well though. If someone gives you a .apk of their app you can just copy it to the phone and select it from the file browser to install it. You can update apps installed from the Play Store in this way as well, just the first install needs to be done the official way to get the license loaded.

Music is just files, you can copy them on and off the device in basically the same way as an old MP3 player unless you bought from a DRM-based provider in which case they'll be "protected" somewhere else.

There's no real need for an iTunes-like setup with Android. Your PC has no need to be involved in the app installation process and everything else is just normal files you can manage with the file manager you already have.

I pay for Google All Music Access and it lets me get any song they sell normally and stream it as well as download it for offline listening. Has worked wonders for me. The only thing I wish is that my Android phone had the 3 audio buttons I miss from my iPod Classic: play, reset / go back a track, skip track. At least my steering wheel lets me do it...

This doesn't tick all of those boxes but in case you don't realise - in the last few versions of Android I've had installed I've been able to set a long press of the volume up/down hardware buttons to act as next/previous track. I can currently do it through settings/buttons but not sure how it worked in the past, it might have been app-specific

Yep, can buy apps in a browser on your computer, and have them install on your phone. Music is a tad different, Play music on the phone can Auto download music it thinks you might like, and I would guess that it might do that if you bought a particular album.

Or if you want more manual control, Play Music can also be set to download the contents of a playlist (or artist or etc.) Add your new album to that playlist and it'll be downloaded.

Isn't that possible with play music with every Android version since (I think) 4?

The latest iTunes update removes the possibility to handle apps though.

I just use Groove on both android and windows. All my music is synced to both places and I can get music I acquired elsewhere onto everything by just sticking it in OneDrive

and you can get groove subscription for free by participating in the microsoft rewards program!

though its 70k points/year makes it the most expensive reward.

There is a glaring downside to that service though. I can't open the website to stream the music from ubuntu. The website just doesn't load.

Not sure, but maybe play music can do this?

Try 1by1

There are opinions that it did its main purpose of decoding mp3 not very well:

- http://mp3decoders.mp3-tech.org/decoders_winamp2_62.html

- https://www.mars.org/home/rob/proj/mpeg/mad-plugin/

Most versions of Winamp 2.x had their own Nitrane decoder which is "inaccurate", some versions had Fraunhoffer decoder which is ok. However, I'm not sure if differences in sound are noticeable on non-high-end hardware, some people say that very noticeable.

Also, UI was super-cool and iconic but usability was not the first concern (back then, software had to be cool and spectacular, everyone used screensavers and players had to include visualizations). It was very small (I used 800x600 resolution but it looked too small), it relied on Windows file select dialog to add tracks and file select dialog is one of the slowest and most frustrating UIs in most OSes.

Is it really bad that I still use Winamp daily? I keep seeing things come up about how people remember it with nostalgia. I've never found a better music player which supports so many formats (XM, YM, S3M, MP3, OGG, et al).

Check out Foobar 2000. I think it’s the best media player ever made.

Foobar is amazing but it takes some time to learn all the features and find all the good plugins

I loved Foobar2000 with the ColumnsUI. Since that extension broke back in ~2008 I've never been happy with a music player.

The fact that foobar2000 wasn't open source eventually drove me away.

I've been using foobar2000+ColumnsUI since 2009 (or maybe 2008) and it never broke. I have the most recent foobar2000 and CUI

SoundPlay on BeOS. It could play MP3s backwards (!) and load any Winamp skin. Big deal at the time.

Ha. Such fond memories. I remember being able to play multiple mp3 files simultaneously(just because you could!) in BeOS at a time when win98 was lucky to play one without stutters and pops.

Impressively, QuickTime could play multiple movies in multiple directions simultaneously on Windows 98.

i still use winamp on my main desktop. on my work mac, i tend to use VLC. i do not like itunes. it's been a long time since i've needed to listen to music on a *nix machine. i typically have my rockboxed ipod handy anyway.

plus soundcloud, youtube, bandcamp, mixcloud, etc, of course. but for stuff in my collection, it's usually winamp, the ipod, or vlc.

same, I use it all day everyday. Plays music and I can drag files / folders into the playlist.

What more do you want?

I do too, and I've always wanted Winamp on Android. Just a full screen remake of the basic Winamp window. Wonder if this could be ported now with one of the JS->APK tools.

Shouldn't be too difficult. One of the web app wrapper frameworks.


I found PowerAMP similar enough.

Does the JS version also support these formats?

Author here. It supports all media formats that your browser can play.

This brings me back. What would really complete the experience is a collection of random tracks from different Metallica albums (downloaded off Napster of course).

Napster redone in HTML5 would be fun to see, or Limewire which outlived Napster by a number of years.

Make this work with spotify then publish as an electron app and I'll use it for sure

Now just release this as an Electron app so those of us on Linux can finally have Winamp!

Does XMMS not work for you? It's available in the AUR so I assume it still functions. And it'll consume about 0.01% of the RAM an electron app will


I actually have Audacious, which scratches the itch pretty well. A clean-room implementation of Winamp running on Linux would be more for the novelty than anything else.

I use Audacious with winamp base skin, it give the nostalgic feel with all the cool music playing features :)

I came here to make the same suggestion but he's got a gitlab link. I might just take a crack at trying that myself.

Let me know if there is anything I can do to help! I recall it was hard/impossible to get non-rounded corners on MacOS.

xmms2 was there all along!

It really kicks the llama's ass. (Did i remember this right?)

close - "it really whips the llama's ass"

Didn't they change it to "Llama-tested, mother approved" in v5?


The inspiration for that catchphrase was none other than Wesley Willis.


Just hit the play button. ;)

Lol, I worked with Jordan a while ago. It was really funny when he "integrated" winamp.js with our product at work for April Fools. :P

Hey Paul!

On a slightly off-topic note, one thing I've always wanted to build and use is a web music player that plays and _syncs_ my own music collection.

Unfortunately, there doesn't seem to be a way around the fact that web apps have no persistent access to the local filesystem, and thus would have to duplicate any locally stored music in browser-based storage in order to maintain its own fully synchronized library.

I can understand why this restriction is in place as a security measure, but it significantly limits the appeal of any web app that performs any kind of synchronization of files. I sometimes wonder if persistent filesystem access is really such a huge security risk for web apps that even asking for explicit permission grants from the user and limiting access to user-specified directories is not enough to make it an acceptably secure capability for inclusion in web browsers?

People tend to just click "yes" on confirmation dialogs, often really understanding what the question means. Now combining that with the net, where ad networks load code from other sources, which load scripts from yet other networks is a big security nightmare (we can already see how often add networks carry malware already ...)

Access to a persons files destroys all security.

I do understand why browsers would want to disallow unfettered access to the entire filesystem (and present the opportunity for the user to give too much access inadvertently), but I still wonder why even something like the non-standard Filesystem API (https://developer.mozilla.org/en-US/docs/Web/API/File_and_Di...) would choose to use a virtual filesystem as the backing store as opposed to some site-specific subdirectory in the real filesystem that the browser could control and sandbox?

Is the issue just that it would widen the attack surface too much in the event of a potential bug that could compromise the browser sandbox and/or the same origin policy? Or is there more nuance that I'm missing?

There are two kinds of problems I spontaneously see, I assume there can be found more.

For one it has to be clear to the user. Is he granting one time access or repeated access? Which sites are getting the access? Is it actually the exact page I see or some code loaded from elsewhere? etc.

The other part is the sandboxing part. Sandboxing access to file systems is hard. How do you deal with symlinks, hard links, ... (maybe there is a different vulnerability allowing to create those and both techniques together lead to an dangerous exploit?) what amount of the path name etc. are available to the application (this might i.e. link the username, which might be derived from a full name, think about /home, /Users, C:\Documents and Settings\ but might be useful to show) and then, again, the related real-life user issue: not all users have all their music in a distinct folder structure, but probably mixed with other files, and oh, they want to play the files freshly put into "Downloads", too ...

Granting such access is a can of worms ...

I haven't done it in years but I'm 87.4% certain that you can put a html file in the local folder and hardcode the relative paths. It requires some non-web software to populate it with data but since most of it is static it should work just fine?

I use to rip torrent websites by de-paginating their browsable tables of things to hold 2000 entries each and saving it as .html. The search engine got with some dumb ajax thingy that would just perform a full text search on the link.textContent.

small print: The browser would still "download" the files before you could open them in other applications.

But I'm not sure if this local file access "security hazard" got patched.

> there doesn't seem to be a way around the fact that web apps have no persistent access to the local filesystem

A local webserver and a little scripts for writing files. Plus symbolic links to your music folders maybe? I never tried the symbolic links part, but surely there is a way to make that work.

That will certainly work, but the whole appeal of building it as a web app for me is the ability to use it anywhere without any local setup or installation. If I end up having to spin up a web server locally just to run it, I might as well build it as an Electron or React Native app instead and have access to the local filesystem directly.

You could expose your library with a plex service. Now you can play it anywhere using any plex client. You could host a web client anywhere and have it play files from your local plex service (as long as the plex service is exposed to the internet)

Plex is great, but not quite what I'm looking for. Ideally I'd like my entire collection to be synchronized and available locally on any device I use, and I'd like to be able to access the local collection through a web app (and have the web app be the thing that performs the sync'ing) without having to stream it from a remote source when the entire collection is sitting right there in my device's filesystem.

All of that is very achievable, except the "web app" part. I think it might be about time for me to just give up on that pipe dream and start building an Electron and/or React Native app instead.

I’ve used google play music for a while. All my local music is automatically uploaded through its locally installed agent and available in the cloud through a user-friendly web ui. Onedrive does the same thing but the web interface is worse.

Java? Pretty sure java can access the file system from within the browser if given permission. The only requirement would be to have jre installed on whatever machine you want to use it on

Ah Java. If this was an option on mobile devices then I would have been all over it.

+1 this is amazeballs :D

I'm guessing the idea is make an exact 1:1 pixel recreation of the original, but it's _really_ small, any chance we can get a "zoom" function or a @2x version?

Thanks for the nostalgia trip!

Winamp has a built in "doubled" mode, which I faithfully reproduced. Try clicking the "D" in the "clutter bar" directly to the left of the visualizer window.

Your comment (and specifically the words "clutter bar") really took me back to the 90s and how amazing it was to see Winamp's aesthetic for the first time. It really reminded me of some mod players for DOS back in the day, their UI was very "90s futuristic".

Bonus Despacito mod version: https://youtu.be/lf4ofV0T-Uw?t=1m15s

Past discussion of this project can be found here: https://news.ycombinator.com/item?id=8565665

Come on, we know it's Winamp 4.

lags on my x200 but anyway, it was cool. And btw, drag and dock works people.

ps: I use foobar2000 which is a mad gem of software, but Winamp 2.9/5 is still my sweet spot for music playing.

Haha, this is great! I actually think, perhaps oddly enough, that this is step towards the way of the not too distant future, not just the past.

I wonder how hard it would be to turn it into an Electron-wrapped app, to make things come full circle.

Still have my skin of choice in my old "Install" folder.

Plasmation - http://volv.org/plasmation-1.zip

Brings back tons of memories :)

:)totally. Tons of memory and a big smile :)

Is there any way to get the old winamp back? I'm thinking a 2.96 binary with compatibility mode or something. I just want to try it again to see if it feels as good as I remember it.

Audacious (http://audacious-media-player.org/) is nice.

interesting, i don't think i'd ever heard of this project, but this could be useful if using winamp ever becomes untenable for me (or if i need something better for playing music on mac or linux than vlc, or if i get bored with winamp and just want to see what else is out there, since this appears to be actively maintained).

edit: and it says it lets you use winamp classic skins, which is a nice nostalgic touch.

Try this site, it has all the versions http://www.oldversion.com/windows/winamp/

Winamp 5 still has a Winamp 2 skin and is pretty similar to it.

Put a vm in the browser!

Does the playlist button work for anyone else? Even with adblock off it doesn't seem to do anything when I click it.

Sorry for the confusion. I haven't implemented the playlist functionality yet. I'm starting work on it now. This press was originated by a tweet I posted announcing I had finally added the equalizer window. https://twitter.com/captbaritone/status/910163720160124928

I'll think about adding some kind of message to make this more obvious.

very cool. would love to see a milkdrop-like visualizer integrated with this.

https://butterchurnviz.com/ is one of the better ones i've seen but it doesn't appear to be open source

R3 too prz :D

Great work!

Does not work in Firefox, tried to allow the scripts in noscript, only thing not allow. google analytics, still doesn't work :(

Not using noscript, but am using uMatrix, which is similar. There's a cross-site reference to cloudfront that you need to whitelist for the thing to load.

Author here. Thanks for reporting. It works for me on Firefox 55.0.3 (64-bit) on MacOS. Do you have any other plugins installed? Which OS and Firefox version are you using? In what way does it "not work"? No audio? No UI? Any leads would be appreciated!

Works on Firefox nightly android

this is great


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact