Hacker News new | past | comments | ask | show | jobs | submit login
A Reimplementation of Winamp 2.9 in HTML5 and JavaScript (github.com/captbaritone)
622 points by tosh on Feb 8, 2018 | hide | past | favorite | 208 comments



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 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.


> 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

https://reddit.com/r/unixporn



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.


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.


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.


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.


Why exactly misguided? Because it doesn't allow you to hack their site? Uh...

Edit: read the FAQ, downvotes are not for disagreement.


That's not in the HN FAQ. Downvoting for disagreement has always been allowed here. Some historical links at https://news.ycombinator.com/item?id=16131314.

Commenting about downvotes in arguments isn't ok, though: https://news.ycombinator.com/newsguidelines.html.


react/boostrap


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.


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.


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.


That's cool - can you share it?


It is a mix of UserStyles that I blended together. I won't share it but you can replicate it using: https://userstyles.org/styles/115084/red-facebook-gta-5-life... as a basis and one of the current popular themes for the background https://userstyles.org/styles/147009/facebook-2k17-modern-de...

https://userstyles.org/styles/browse?search_terms=facebook


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.


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.


Tumblr took the other path in allowing you to customize your own user experience, it certainly comes with a trade-off.


Probably more like value reasons. What's the point? Would that drive more users to Facebook? Or current users to spend more time there?


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.


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?


Since Windows 7.


Ugh


Doesn't ClassicShell still work in Win10?


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.


Please don't get my hopes up!


> 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


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


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.)


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.


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.


Even better: skins that let you relocate everything. It was super-awesome to have a little cartoon cat sitting on a spaceship on my desktop, and poke at various parts of it to control Audion.

(http://egypt.urnash.com/portfolio/contragravity/)


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)


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.



Now I feel dumb. I use Dark Reader [0] for all my web browsing. I was just so used to the desktop Slack client I forgot about the web one. Thanks for reminding me.

[0] https://chrome.google.com/webstore/detail/dark-reader/eimadp...


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.


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.


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


I wonder why we are not skinning websites 🧐



Coincidentally, I just recently signed a tiny private Firefox extension to improve the readability of the HN comments to my taste :-).


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.


It even supports the old Winamp easter egg!

Type nullsoft


browsers still have it


Not to the same degree.


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...


Author here. I wrote a Twitter thread demonstrating many of its features. You can find it here: https://mobile.twitter.com/captbaritone/status/9612747140133...


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.


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.


Does it decode the audio files (mp3, etc.) into the low level PCM audio samples and play those back? Or does it use a higher level browser API that lets you play high level mp3 files directly?

If the latter, how can you still implement the equalizer?



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!


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 ;).


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: https://www.sarasoueidan.com/blog/css-svg-clipping/)) https://video.twimg.com/ext_tw_video/961272327584403457/pu/v...

* Drag windows around, and easily align them with window snapping. https://video.twimg.com/ext_tw_video/961272384148815873/pu/v...

* Use hotkeys to control all major functions. https://video.twimg.com/ext_tw_video/961272440251822080/pu/v...

* Select/drag tracks to reorder them. https://video.twimg.com/ext_tw_video/961272499219587072/pu/v...

* "Double" mode (ctrl+d) makes the main and EQ windows twice as big. https://pbs.twimg.com/media/DVcgTW3VMAAgrdc?format=jpg

Getting all of this to work entirely in the browser has been a great challenge, and I've learned a lot. Thanks to @The_DoctorO for being an invaluable source of insider information. Thanks to @LuigiHann for catching many small places where I hand't perfectly recreated Winamp's handling of skins. Thanks to @ja2ke for the original retweet which I believe kicked this whole thing off more than three years ago. And of course, thanks to @JustinFrankel. ‍️

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

(@captbaritone, I'm assuming you're ok with pasting the content here, but please let me know in case you have objections.)


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.


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.


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 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!


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.



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.


Is projectM[1] not a suitable replacement for MilkDrop visualizations? Comes built into Clementine[2].

[1] https://github.com/projectM-visualizer/projectm [2] https://www.clementine-player.org/


Agreed, vis were awesome... with the TV apps that have Pandora and Spotify and similar, I miss it a lot.


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!


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. :)


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 :)


You mean USHERY~1.MP3?

:)


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.


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?


You had the internet through a mobile phone and you're calling dial up lucky? Mobile phones were legit space age back then.


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 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.


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.


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.


that mp3 will be ready in 5 minutes. woohoo!


Yes, but does it really whips the Llama's ass?


Did you visit the app (https://jordaneldredge.com/projects/winamp2-js/) and press play?


OMG, end of the day here and I really needed that one! Thank you. Oh, the old days of internet right in front of me.


Same here! I mostly tried the link to see if it also ported the lama, and it sure did deliver on that!


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...


It really does.


Finally, a semantic use for the marquee tag.


Alas, I needed finer grain control over the marquee behavior (scroll character by character, pause the scrolling, etc), so I had to implement it in JS.


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.


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.


I'm sittin' here playing SPC files via Winamp in OSX (using Wine). Works a treat.


For macOS users, I can vouch for Vox (https://vox.rocks/mac-music-player). I was a Winamper for years until I moved to Mac and lost it, Vox is a decent replacement.


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 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)


You can try nativefier[1]. I did this to Soundcloud.com (for the sake of an easy Alt+Tab), and it works just fine.

[1] https://github.com/jiahaog/nativefier


There are a few people working on it: https://github.com/captbaritone/winamp2-js/issues/394


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.


I still use Winamp 2.95 to this day. It's one of the most reliable and practically useful pieces of software I run often.


I hope the random function is still as “random” as the original :)


Please elaborate?


Native WinAmp has two dropin extension systems. The one everybody seemed to use was MilkDrop, but they also had AVS (Advanced Visualization Studio), for which I wrote a bunch of extensions about a decade ago. These included several composition dlls (multi-lane video pipes, MIDI control, joystick control, 30 sec rolling video recorder/playback) and also a number of effects (image animations, placers, blenders, oscillators). This made for a very engaging interactive experience, especially flying through using the joystick to control pretty much any set of parameters. Turns out the visualizers have hidden strange attractors that never appear when just using passive mode. That was in XP, I have waiting a Windows 7 build TODO.

I'm semi-guessing the browser re-implementation does not support these. Pity.


"Any application that can be written in JavaScript, will eventually be written in JavaScript."

Atwood's law


Can Winamp send email?


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 use QMMP and it's awesome. http://qmmp.ylsoftware.com/


Has Justin Frankel ever commented on this project?



token comment


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.


Thanks for the reports. I've filed a ticket for the first one:

https://github.com/captbaritone/winamp2-js/issues/485

I haven't been able to verify the second one.



Does it support milkdrop?


Hopefully some day. This guy is interested, but just too busy to get the code shareable: https://butterchurnviz.com/


My first question!

Anyway, if you want AVS, at some point they pubished sources, perhaps someone could reimplement AVS and AVS2?

https://github.com/majek/avs


We're working on integrating something similar: https://github.com/azeem/webvs/

You can follow along here: https://gitter.im/visbot/AVS



Winamp2-js author here. Just a note, that since that discussion, the playlist window, and thus support for multiple tracks at a time, has been added. As such, the project is only just now "complete".


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.


Check out http://www.windows93.net for a bonkers take on that vision.


I know about it. It's cool for sure.

With this we have a clean implementation tho.


Amazing work. Thanks for sharing.


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.


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.


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.


They had a Winamp client for a brief time, but it got pulled. https://news.spotify.com/us/2013/12/20/spotiamp-long-live-th...


How does this work? Do you not have any old random mp3s you like that aren't available via Spotify?


Loved the lama and the auto fade with winamp. When streamripper plugged into it and worked - those were the best days.

Now if yahoo would give musicmatch jukebox 7.5 back to the world I could DJ like it's 1999 and be happy again.


This is going to be the basis of my next startup: Winamp as a Service.


I'm overly excited about this. Winamp was a huge part of my early computer experience, even went so far as to (poorly) design my own. Can't wait to start using this!


If you have any js experience, or want to develop some, feel free to reach out. I can find you an issue that aligns with your interests.


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...


What about running it without the browser chrome?


you can run it on Firefox


Not sure if should be impressed or appalled.

These days i think i'll just use Foobar2k on Windows, and Deadbeef (or a terminal player) on Linux.


I like QMMP. It's a lot like Winamp


Interesting. And the dependencies seems reasonable as well. I'll gice it a look later.


God damn it, this was smooth to get working. Only got some odd error regarding the tag writer on vorbis, but not a major loss. Had it been a GTK based project i fear the number of "esoteric" sub-sub-sub-dependencies i would have had to track down...


I love reimplementations (or emulators) of retro software. Is there a site that catalogues projects like this?


Weird. I need to set my chrome zoom to 75% to get crisp graphics with this? 100% looks blurred.


Very cool. I saw this and imagined the future - maybe compiled as a webassembly binary.


The quad amp skin was my favourite (proud owner of a quad 22 valve stack gathering dust)


Will the implementation also include a memory leak? Part of the experience...



The wiki says Winamp was created in 1997. I feel like I used it in 94 or 95.


It was released in late April 1997. MacAmp actually came out a little earlier on April 13, 1997


Just says "Loading ..." for me when using SlimJet? Chrome works.


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?


I'm using Chrome by the way.

#1 - TypeError: Object.entries is not a function(…) e.(anonymous function) @ winamp.js:38

#2 - winamp.js:49 Uncaught (in promise) TypeError: Object.entries is not a function at _ (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at Ct.beginWork (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at i (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at a (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at s (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at E (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at b (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at h (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at p (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at Object.Nt.updateContainer (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at https://jordaneldredge.com/projects/winamp2-js/built/winamp.... at Object.Rt.unbatchedUpdates (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at gn (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at uo.render (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at e.<anonymous> (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at r (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at a._invoke (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at a.e.(anonymous function) [as next] (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at r (https://jordaneldredge.com/projects/winamp2-js/built/winamp....) at https://jordaneldredge.com/projects/winamp2-js/built/winamp....


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


My holy, how did you port that!


I wrote a lot of JavaScript :D


It Kicks the Llamas Ass!


[flagged]


Have you tried clicking the play button or double clicking the single, 5 second audio file in the player? It doesn't play by default and it isn't a .gif

Unless you're using Safari 5.1 on Windows (it also explicitly states modern versions), the supported browsers are seen here https://caniuse.com/#feat=audio-api


Yes of course I’ve tried clicking the play button!!! Just who do you take me for?!?

And no it’s not Safari on Windows! And yes I’ve the latest Safari!!!


Just tested it in Safari 10 on Sierra and Safari 11 on High Sierra and it worked fine in both - so the issue is very likely something on your end.


No. The software is unmodified; the system has not been tampered with.


>Winamp 2.9 in HTML5 and JavaScript

https://i.imgur.com/Br00TCn.gif




Consider applying for YC's W25 batch! Applications are open till Nov 12.

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

Search: