* prettier * typo * bugfix: expect error on non supported skin format * multiple instance, different gamma (colors) * bugfix colortheme bg, cleanup * prettier * back to load single skin, del dead code * del hack() * trial to rename 'parse' -> skinengine_wal * fully SkinEngine_Audio * cleanup console warn. * real switchSkin * integrate WAL parser with plugable skinEngine. * +KJofol ! * show Vis, Song, * +WindowsMediaPlayer: Engine,Skins. * load JS * MMD3's header: movable * +DialKnob * +Button for down image that use global bmp * preparing to Dock (layout name|mode) * dock! * undoc button * +FloodLevel: kjofol seek. only ui/drag-mouse * bugfix can't click * +slider action. * del dead code * bugfix on switch kjofol skin * call dispose() on switch skin * bugfix Audion timer. * bugfix loading skin*.zip, bugfix knob * demo: loading .zip (unknown|ambiguous ext) * just rename file * wsz: failed to load wsz:( * default Equalizer: missing #11,#12 * loading classic skin .wsz * bugfix: don't stop when bitmap not found * maximum viable. * Replace the previous base with DeClassified This commit aims to replace the base used for rendering Classic Skins in Webamp Modern with the latest commit of DeClassified * added iso support for the EQ, update base skin * working tooltips for the time display * rename wsz_root to skin for some reason this still doesnt make webamp modern render the skin it's given * a bunch of things * allow wsz_root to skin. (failed due missing files) * prettier * add but ignore. maybe soon be used * temporary disabling "application.mi" * reusing old classic code, that works * + manifesto * okay, lets use skin in correct way * ren file * redefining eq xml * thumb background changes when mousemove * +Pitch ! * set seek z-order to be not covering pitch. * pitch: smooth audio effect during changes. * bugfix normal pitch != 100% * +Shade mode * add objective-c syntaxt highlighter * +Repeat, Shuffle * Call & StrangeCall diff exploration * +FileExtractor * prettier. * loading sonique for first time * loading sonique for first time * showing the main frame, + regional applied * play,pause,stop * play,pause,stop click images * revert to using std|*.json * show song duration (both enquee & addtrack) * finding a correct bitrate * +real metadata, +experiment bitRate * show real song artist + title * +showing real KBPS, real KHZ. * track.id is not (can not be) required, error on eqnueeefile() * complete album art. * bugfix volume onchanged * del dead code * lowercase key, to avoid misleading * lowercase key, to avoid misleading * speedup id3 parsing by Promise * load another maki * valid: uiRoot required for vm. * move Track * playlist text elipsis * +scifi (sample skin) * first attept to wrap text inside an irregular shape * reduce noise in html. => head/css. * show cone gradient as Ring's preparation. * show progress Ring * both ring are now drawn. * allow 270deg * preparing real progress * completing ui, no event yet * bugfix mistaken mask * allowing ring.action (+events) * shuffle,repeat. * eject * switch to layout:NAV * switch to layout:SMALL * adding JetAudio support * all bitmaps are loaded * prevent 'undefined' id. * show something visible :P * preparing to load one tag with several meaning * adding JetCowonAudio (old uib) support * bugfix CORS issue of api.webampskins.org/graphql * more window buttons * add more sonique skin * do list of ini content * valid yarn build. * sgf extractor * sonique icon * ignore 'extracted-*' folders * add more sonique skin to load * custom bitmap (just shown) * just colorized * maybe yes/no. colors is not confirmed * not-found items ( taken from sonique install dir) * load global png: via .ts * show icons in circle buttons! * exploring rgn (failed) * can load from path (yeah, slow! :v) * add freform/winamp * add lineHeight to adjust font-size * add border-bottom of menus * prefix css (scrollbars) * just commit, whatever. * bugfix frequency position (not overlaped) * +Menu ! (can only hover & mouse-down) * still bugfix lineheight of titlebar's text * show deprecated class * show deprecated methods * better on showing deprecated * bugfix Menu.GUID * force lowercase * menus res * set zero as a valid value of calcelation. * completing Container props * add more props, and also by retype (lowcase typo) * pre-add * +List, etc. * addd more props * rename _width -> _w & _height -> _h * +onresize * more detail message of too many similar error * +ontextchanged * log description on where the error come? * avoid missing script id. (better debug) * attaching WindowHolder * my BigBento is just working (some hardcoded) * add (my hacked) BigBento into selection. * rename: _resizable -> _canResize. to avoid conflict in Frame * Frame.from = L * a bit better. but not reflect on toggle click. * reaching 71% of maki implementation * mute frame border * MUTE GRAPHQL ERROR CORS. * dummy method: addSubMenu * oke lah. lumayan * implement windowholder for PL (only). * correct align children: left & right. * a bit better (assuring all key = lowercased) * recompile some scripts * bugfix thinger * +MMD3 with thinger included (standalone) * bugfix mono/stereo get by text.display="songinfo" * +winamp browser * + Maki Explorer * +fake implementation * Big Bugfix: COnfig Item * I understand, bud no found any mistake * trial to compare string == insensitive * trial to compare string != insensitive * trial to case insensitive * trial to compare string != insensitive * bugfix triggering multi events * set DEBUG, doesnt work :( * more preserved guid * mice down/up = work. but no visually. * add undefined as fake * implement fake Popup > open @mouse-hover * bugfix: hover didn't work * mute lint error * bugfix xmlParam -> toLowerCase * failed code to comment: * allow bool as int * mute console * unhide text when not expanded | to find a text * inpect "Class" in binary (distinct to other var) * bugfix CORS cdn. , wait until user click demo. * bugfix reading unicode char. * Mad Apple Girl dancing * Mad Apple Girl skin * bad apple HD * set back Text to be used by titlebar * Completing missing classes (For better maki explorer / maki understanding) * split editor to 2, for comparing up & down * mark CLASS. by subclassing of vars identification * Full speed animation * add more maki: Application, File+XmlDoc * add more maki: Application, File+XmlDoc * more info when error (id of script) * +global: application. +few methods * +few methods. * beautify (format doc), (typo) * bugfix eris-lund: found a fatal error/program stop * Class defintion (in maki file) is back supported. * STUPID? mute ERROR. (don't stop) * set back to very-simple logic * implement alternateText * bugfix a maki file loaded twice (multi) * + trigger event in a class. * mute console * sorry, for hardcoded. ;p * clean up uneeded dependency * load very simple part: main.bmp + cbutton.bmp * load main.shaded * bitrates * bitrates * more classic skin * + note & link, +full bitlist * more classic items * more progress. * ++ various implementation, based on /progress * *.WMZ region.txt is now ready ! * typo. * integrate play/pause/stop statuses + mono|stereo * network status * change: wa.play.red => traffic.red (buffering) * Volume + Pan * EQ + PL buttons * bugfix Text (char not found , too narrow bitmapfont) * TIME text is clickable * +Shuffle + Repeat * better pseudo minus sign taken from "5" & "7" char * pixel-perfect of Timer (text) of WInamp Modern. * completing classic.player (container) * completing VISCOLOR.txt parsing & applying values * bugfix wrong parameter of vis * Allow bitmap transparency by color (WMP) * bugfix wrong parameter of vis * Green Head is back running! (WMP) * running WMP correctly * running WMP correctly: background-color * format from root dir * format from root dir * reduce lint complain * del unknown file --------- Co-authored-by: Fathony <fathony@smart-leaders.net> Co-authored-by: Eris Lund <38136789+0x5066@users.noreply.github.com> |
||
|---|---|---|
| .github/workflows | ||
| .yarn/releases | ||
| config | ||
| examples | ||
| packages | ||
| .editorconfig | ||
| .eslintignore | ||
| .eslintrc | ||
| .gitattributes | ||
| .gitignore | ||
| .parcelrc | ||
| .prettierignore | ||
| .yarnrc | ||
| deploy.sh | ||
| LICENSE.txt | ||
| netlify.toml | ||
| package.json | ||
| README.md | ||
| yarn.lock | ||
Webamp
A reimplementation of Winamp 2.9 in HTML5 and JavaScript with full skin support. As seen on TechCrunch, Motherboard, Gizmodo, Hacker News (1, 2, 3, 4), and elsewhere.
Check out this Twitter thread for an illustrated list of features. Works in modern versions of Edge, Firefox, Safari and Chrome. IE is not supported.
Add Webamp to Your Site
Here is the most minimal example of adding Webamp to a page:
<div id="app"></div>
<script src="https://unpkg.com/webamp"></script>
<script>
const app = document.getElementById("app")
const webamp = new Webamp();
webamp.renderWhenReady(app);
</script>
For more examples, including how to add audio files, check out examples/ directory and the API documentation.
About This Repository
Webamp uses a monorepo approach, so in addition to the Webamp NPM module, this repository contains code for a few closely related projects and some pieces of Webamp which are published as standalone modules:
packages/webamp: The Webamp NPM modulepackages/webamp/demo: The demo site which lives at webamp.orgpackages/ani-cursor: An NPM module for rendering animiated.anicursors as CSS animationspackages/skin-database: The server component of https://skins.webamp.org which also runs our Twitter bot, and a Discord bot for our community chatpackages/skin-museum-client: The front-end component of https://skins.webamp.org.packages/winamp-eqf: An NPM module for parsing and constructing Winamp equalizer preset files (.eqf)packages/archive-org-webamp-integration-tests: An integration that confirms that archive.org's Webamp integration is working as expectedpackages/webamp-modern: A prototype exploring rendering "modern" Winamp skins in the browserexamples: A few examples showing how to use the NPM module
Community
Join our community chat on Discord: https://discord.gg/fBTDMqR
Related communites:
- Winamp Community Update Pack - "New plug-ins to add additional features to Winamp as well as replacement plug-ins to provide better implementations of some of the plug-ins natively included with Winamp". (Forum / Discord server)
In the Wild
An incomplete list of websites using Webamp:
- Internet Archive - The Internet Archive lets you preview winamp skins and listen to audio tracks using Webamp
- Winampify.io - An online Spotify client using Webamp
- Webamp Desktop - An Electron app version of Webamp
- 98.js.org - A Windows 98 clone in JavaScript (GitHub)
- winxp.now.sh - A Windows XP clone in JavaScript with React (GitHub)
- Try Andy's Desk - A quirky Windows themed desktop experience.
- www.dkdomino.zone - Someone's personal music player
Thanks
- Butterchurn, the amazing Mikdrop 2 WebGL implementation. Built and integrated into Webamp by: jberg
- Research and feature prototyping: @PAEz
- Beta feedback, catching many small UI inconsistencies: LuigiHann
- Beta feedback and insider answers to obscure Winamp questions: Darren Owen
- Donating the
webampNPM module name: Dave Eddy
Thank you to Justin Frankel and everyone at Nullsoft for Winamp which inspired so many of us.
License
While the Winamp name, interface, and, sample audio file are surely property of Nullsoft, the code within this project is released under the MIT License. That being said, if you do anything interesting with this code, please let me know. I'd love to see it.
