{
  "added_at": "2026-10-27",
  "additional_evidence_urls": [
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/README.md#L62-L67",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp-docs/docs/05_features/05_skins.md",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp-docs/docs/05_features/03_equalizer.md",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp-docs/docs/05_features/02_mikdrop.md",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp-docs/docs/07_guides/01_cors.md",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp-docs/docs/12_changelog.md",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp/docs/architecture.md",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp-modern/README.md",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp-modern/src/maki/maki-bytecode.md",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp-modern/snowpack-maki-plugin.js",
    "https://github.com/captbaritone/webamp/tree/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp-modern/resources/maki_compiler",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/packages/webamp-modern/resources/maki_decompiler_1.1/COPYING",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/.github/workflows/ci.yml",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/.nvmrc",
    "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/LICENSE.txt",
    "https://registry.npmjs.org/webamp/2.3.1"
  ],
  "category": "reconstruction-cases",
  "description_en": "Reimplements Winamp 2's main, equalizer and playlist windows in HTML5 and JavaScript, with Web Audio playback, volume, balance and equalizer, and renders original classic .wsz skins, which its documentation says match Winamp 2.9 pixel for pixel; Milkdrop presets run through the Butterchurn WebGL port. It ships as the webamp npm module for embedding in web pages, and the same monorepo runs webamp.org and the skins.webamp.org skin museum. Its webamp-modern prototype targets Winamp 3/5 modern skins with an interpreter for MAKI skin scripts, whose undocumented bytecode format the author reverse engineered and documents in the repository.",
  "description_zh": "用 HTML5 和 JavaScript 重新实现 Winamp 2 的主窗口、均衡器和播放列表窗口，借助 Web Audio 实现播放、音量、声道平衡和均衡器，并渲染原有的经典 .wsz 皮肤，其文档称渲染效果与 Winamp 2.9 逐像素一致；Milkdrop 预设通过 Butterchurn 的 WebGL 移植版运行。它以 webamp npm 模块的形式发布，可嵌入网页，同一 monorepo 还运行着 webamp.org 和 skins.webamp.org 皮肤博物馆。其中的 webamp-modern 原型面向 Winamp 3/5 的现代皮肤，内含 MAKI 皮肤脚本解释器；MAKI 字节码格式原本没有公开文档，作者对其进行了逆向分析，并在仓库中写成文档。",
  "entry_url": "https://awesomerea.org/resources/webamp-winamp-reimplementation-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/webamp-winamp-reimplementation-case/",
  "evidence_url": "https://github.com/captbaritone/webamp/blob/f01369fc2d7aaa9366a3ba9ab0ad1db4b6417a40/README.md",
  "group": "cases",
  "id": "webamp-winamp-reimplementation-case",
  "json_url": "https://awesomerea.org/resources/webamp-winamp-reimplementation-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/webamp-winamp-reimplementation-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/webamp-winamp-reimplementation-case/index.md",
  "name": "Webamp: a browser reimplementation of Winamp 2",
  "name_zh": "Webamp：在浏览器中重新实现 Winamp 2",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "Release at review: webamp 2.3.1 on npm, published 2026-06-16; the reviewed master commit (2026-10-17) adds unreleased accessibility and API changes listed in the changelog. The README says it works in modern Edge, Firefox, Safari and Chrome. It reimplements Winamp's behavior and skin rendering rather than recovering Winamp's code, and webamp-modern remains a prototype with an open list of unimplemented MAKI and skin features.",
    "No original Winamp installation is needed: Webamp bundles a default skin and sample track, and users can load their own Winamp 2 .wsz skins, audio files, Milkdrop presets and .eqf equalizer presets. Skins and audio fetched from another domain must be served with CORS permission, because Webamp reads their contents.",
    "Development uses pnpm and Turborepo; .nvmrc names Node.js 22 and CI uses Node.js 20 to build every package, lint, type-check and run the Jest tests. These test Webamp's own parsing and rendering. Compiling webamp-modern's MAKI test scripts calls the bundled Winamp 5.66 mc.exe, directly on Windows or through Wine elsewhere.",
    "The code is MIT-licensed, and the README says the Winamp name, interface and sample audio file are Nullsoft's property. Bundled files that carry no license of their own: the Nullsoft MAKI compiler builds under packages/webamp-modern/resources/maki_compiler (five mc.exe versions from Winamp 3 alpha 8r to Winamp 5.66, nscrt.dll and the MAKI .mi library headers), the skins named after Winamp defaults (base-2.91, Winamp 3 build 499, Winamp Modern 5.66) and the third-party community skins used for demos and tests, the llama sample MP3 and the Winamp Modern Skins tutorial PDF. The bundled Perl MAKI decompiler is GPL-2.0."
  ],
  "requirements_zh": [
    "审阅时的最新版本为 npm 上的 webamp 2.3.1，于 2026-06-16 发布；所审阅的 master 分支提交（2026-10-17）另含更新日志中列出、尚未发布的无障碍和 API 改动。README 称它可在新版 Edge、Firefox、Safari 和 Chrome 中运行。它重新实现的是 Winamp 的行为和皮肤渲染，并非恢复 Winamp 的代码；webamp-modern 仍是原型，尚有一份未完成的 MAKI 与皮肤功能清单。",
    "无需原版 Winamp：Webamp 自带默认皮肤和示例音轨，用户也可载入自己的 Winamp 2 .wsz 皮肤、音频文件、Milkdrop 预设和 .eqf 均衡器预设。从其他域名获取的皮肤和音频须允许 CORS 访问，因为 Webamp 需要读取其内容。",
    "开发使用 pnpm 和 Turborepo；.nvmrc 指定 Node.js 22，CI 则用 Node.js 20 构建所有包、执行代码检查和类型检查并运行 Jest 测试。这些测试检验的是 Webamp 自身的解析和渲染。编译 webamp-modern 的 MAKI 测试脚本时会调用仓库自带的 Winamp 5.66 mc.exe：在 Windows 上直接运行，在其他系统上通过 Wine 运行。",
    "代码采用 MIT 许可，README 称 Winamp 的名称、界面和示例音频文件属于 Nullsoft。以下随附文件没有自己的许可声明：packages/webamp-modern/resources/maki_compiler 下的 Nullsoft MAKI 编译器（从 Winamp 3 alpha 8r 到 Winamp 5.66 的五个 mc.exe 版本、nscrt.dll 以及 MAKI .mi 库头文件），以 Winamp 默认皮肤命名的皮肤（base-2.91、Winamp 3 build 499、Winamp Modern 5.66）和用于演示与测试的第三方社区皮肤，llama 示例 MP3，以及 Winamp Modern Skins 教程 PDF。随附的 Perl 版 MAKI 反编译器采用 GPL-2.0 许可。"
  ],
  "targets": [
    "app"
  ],
  "url": "https://github.com/captbaritone/webamp",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
