{"id":17902247,"url":"https://github.com/korilakkuma/xsound","last_synced_at":"2026-04-05T08:01:20.094Z","repository":{"id":37768299,"uuid":"111272247","full_name":"Korilakkuma/XSound","owner":"Korilakkuma","description":"XSound gives Web Developers Powerful Audio Features Easily !","archived":false,"fork":false,"pushed_at":"2026-04-01T11:57:08.000Z","size":40354,"stargazers_count":216,"open_issues_count":26,"forks_count":17,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-04-01T13:34:38.884Z","etag":null,"topics":["audio","music","webassembly","webaudio","webmidi","webrtc"],"latest_commit_sha":null,"homepage":"https://xsound.jp","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Korilakkuma.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-11-19T07:00:02.000Z","updated_at":"2026-04-01T11:57:10.000Z","dependencies_parsed_at":"2023-09-29T14:13:27.928Z","dependency_job_id":"f8a6eb0c-a201-4763-8bb4-6cb971d78242","html_url":"https://github.com/Korilakkuma/XSound","commit_stats":{"total_commits":124,"total_committers":1,"mean_commits":124.0,"dds":0.0,"last_synced_commit":"d7f5e44e12a3571cf6158f1949af258ef6cc4c9f"},"previous_names":[],"tags_count":175,"template":false,"template_full_name":null,"purl":"pkg:github/Korilakkuma/XSound","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Korilakkuma%2FXSound","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Korilakkuma%2FXSound/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Korilakkuma%2FXSound/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Korilakkuma%2FXSound/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Korilakkuma","download_url":"https://codeload.github.com/Korilakkuma/XSound/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Korilakkuma%2FXSound/sbom","scorecard":{"id":79935,"data":{"date":"2025-08-11","repo":{"name":"github.com/Korilakkuma/XSound","commit":"62949eb2a934960479898ba27aee815838812ec1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":10,"reason":"23 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/Korilakkuma/XSound/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/Korilakkuma/XSound/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/Korilakkuma/XSound/ci.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating nginx to nginx@sha256:84ec966e61a8c7846f509da7eb081c55c1d56817448728924a87ab32f12a72fb","Warn: npmCommand not pinned by hash: .github/workflows/ci.yml:27","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-xffm-g5w8-qvg7"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-15T05:36:44.132Z","repository_id":37768299,"created_at":"2025-08-15T05:36:44.132Z","updated_at":"2025-08-15T05:36:44.132Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31428645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T02:22:46.605Z","status":"ssl_error","status_checked_at":"2026-04-05T02:22:33.263Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","music","webassembly","webaudio","webmidi","webrtc"],"created_at":"2024-10-28T16:07:09.170Z","updated_at":"2026-04-05T08:01:19.569Z","avatar_url":"https://github.com/Korilakkuma.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![XSound - Powerful Audio Features Easily ! -](https://user-images.githubusercontent.com/4006693/154785249-a59e030a-6471-4472-8a5f-98f1243b428a.png)](https://xsound.jp)\n\n[![Node.js CI](https://github.com/Korilakkuma/XSound/workflows/Node.js%20CI/badge.svg)](https://github.com/Korilakkuma/XSound/actions?query=workflow%3A%22Node.js+CI%22)\n![node-current](https://img.shields.io/node/v/xsound?color=brightgreen)\n[![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)\n[![npm](https://img.shields.io/npm/dt/xsound.svg)](https://www.npmjs.com/package/xsound)\n[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/xsound/badge)](https://www.jsdelivr.com/package/npm/xsound)\n  \n## Overview\n  \nXSound gives Web Developers Powerful Audio Features Easily !  \nIn concrete, XSound is useful to implement the following features.\n  \n- Create Sound\n- Play the One-Shot Audio\n- Play the Audio\n- Play the Media\n- Streaming (by WebRTC)\n- MIDI (by Web MIDI API)\n- MML (Music Macro Language)\n- Effectors (Compressor / Wah / Equalizer / Tremolo / Phaser / Chorus / Delay / Reverb ... etc)\n- Visualization (Overview in Time Domain / Time Domain / Spectrum)\n- Multi-Track Recording (Create WAVE file)\n- Audio Streaming\n- Visual Audio Sprite\n  \nXSound don't depend on other libraries or frameworks (For example, jQuery, React).\n  \n## Supported Browsers\n  \n\u003cimg src=\"https://raw.githubusercontent.com/Korilakkuma/XSound/main/misc/supported-browsers.png\" alt=\"Supported Browsers are Chrome, Edge, Firefox, Opera and Safari\" style=\"max-width: 100%;\" /\u003e\n  \n## Getting Started\n\nIn case of using as **full stack** (For example, use oscillator) ...\n\n```JavaScript\nX('oscillator').setup([true, true, false, false]).ready(2, 5).start([440, 880]).stop();\n```\n\nor, in case of using as **module base** (For example, use chorus effector) ...\n\n```JavaScript\n// The instance of `AudioContext`\nconst context = X.get();\n\n// Create the instance of `Chorus` that is defined by XSound\nconst chorus = new X.Chorus(context);\n\nconst oscillator = context.createOscillator();\n\n// The instance that is defined by XSound has connectors for input and output\noscillator.connect(chorus.INPUT);\nchorus.OUTPUT.connect(context.destination);\n\n// Set parameters for chorus\nchorus.param({\n  time : 0.025,\n  depth: 0.5,\n  rate : 2.5,\n  mix  : 0.5\n});\n\n// Activate\nchorus.activate();\n\noscillator.start(0);\n```\n\nXSound enable to using the following classes (Refer to [API Documentation](https://xsound.jp/docs/) for details).\n\n```TypeScript\nX.Analyser(context: AudioContext);\nX.Recorder(context: AudioContext);\n\n// Effectors\nX.Autopanner(context: AudioContext);\nX.BitCrusher(context: AudioContext);\nX.Chorus(context: AudioContext);\nX.Compressor(context: AudioContext);\nX.Delay(context: AudioContext);\nX.Equalizer(context: AudioContext);\nX.Filter(context: AudioContext);\nX.Flanger(context: AudioContext);\nX.Fuzz(context: AudioContext);\nX.Listener(context: AudioContext);\nX.NoiseGate(context: AudioContext);\nX.NoiseSuppressor(context: AudioContext);\nX.OverDrive(context: AudioContext);\nX.Panner(context: AudioContext);\nX.Phaser(context: AudioContext);\nX.PitchShifter(context: AudioContext);\nX.Preamp(context: AudioContext);\nX.Reverb(context: AudioContext);\nX.Ringmodulator(context: AudioContext);\nX.Stereo(context: AudioContext);\nX.Tremolo(context: AudioContext);\nX.VocalCanceler(context: AudioContext);\nX.Wah(context: AudioContext);\n```\n\n## Demo\n  \n[XSound.app](https://xsound.app) uses this library.\n  \nNow, I'm creating website for Web Audio API. Please refer to the following site for understanding API Documentation.\n  \n[Web Music Documentation](https://korilakkuma.github.io/Web-Music-Documentation/)\n\n## Installation\n\n```bash\n$ npm install --save xsound\n```\n\nor,\n\n```bash\n$ pnpm install xsound\n```\n\n## Usage\n\nIn case of using ES Modules,\n\n```JavaScript\nimport { XSound, X } from 'xsound';\n```\n\nIf SSR (Server-Side Rendering), use [dynamic imports](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import),\n\n```JavaScript\nasync () =\u003e {\n  const { XSound, X } = await import('xsound');\n};\n```\n\nIn case of using CDN,\n\n```HTML\n\u003cscript type=\"text/javascript\" src=\"https://cdn.jsdelivr.net/npm/xsound@latest/build/xsound.min.js\"\u003e\u003c/script\u003e\n```\n\n## Setup\n\n### Use Webpack Dev Server\n\n```bash\n$ git clone git@github.com:Korilakkuma/XSound.git\n$ cd XSound\n$ npm install\n$ npm run build  # for build WebAssembly Modules\n$ npm run dev\n$ open http://localhost:8080/playground/\n```\n\n### Use Docker\n\n```bash\n$ git clone git@github.com:Korilakkuma/XSound.git\n$ cd XSound\n$ npm install\n$ npm run build  # for build WebAssembly Modules\n$ npm run watch\n$ docker compose up -d --build\n$ open http://localhost:8080/playground/\n```\n\n### Installation instructions using the emsdk\n\nUse WebAssembly Modules on v4 or later.  \nTherefore, it is required to set up emsdk (Refer to [details](https://emscripten.org/docs/getting_started/downloads.html)).\n\n```bash\n$ git clone https://github.com/emscripten-core/emsdk.git  # Use an another directory excepte XSound directory\n$ cd emsdk\n$ ./emsdk install latest\n$ ./emsdk activate latest\n$ source ./emsdk_env.sh\n$ cd /${path}/XSound\n\n# If error occurred, execute `softwareupdate --install-rosetta`, then retry (in case of using macOS)\n```\n\n## API Documentation\n  \n[XSound API Documentation](https://xsound.jp/docs/)\n  \n## Playground\n  \n[XSound Playground](https://xsound.jp/playground/) (Watch by [YouTube](https://www.youtube.com/watch?v=QBe7FkidrUc)).\n\n\u003cimg src=\"https://raw.githubusercontent.com/Korilakkuma/XSound/main/misc/xsound-playground.gif\" alt=\"XSound Playground Screenshot\" style=\"max-width: 100%;\" /\u003e\n  \n## Migration to v3\n\nPlease refer to [API Documentation](#api-documentation) for details.\n\n### Case sensitive\n\n```JavaScript\n// Bad (v2 or earlier)\nX('audio').module('panner').param({ coneinnerangle: 240 });\n\n// Good (v3)\nX('audio').module('panner').param({ coneInnerAngle: 240 });\n```\n\n### Use plain object if parameters setter\n\n```JavaScript\n// Bad (v2 or earlier)\nX('oscillator').get(0).param('type', 'sawtooth');\n\n// Good (v3)\nX('oscillator').get(0).param({ type: 'sawtooth' });\n```\n\n### Validate parameters on the application side\n\n```JavaScript\nif ((type === 'sine') || (type === 'square') || (type === 'sawtooth') || (type === 'triangle')) {\n  X('oscillator').get(0).param({ type });\n}\n```\n\n## Migration to v3.1.x or later\n\nIf use bundle tool and compress class names such as webpack and `terser-webpack-plugin`,  \n**must add the following [options](https://webpack.js.org/plugins/terser-webpack-plugin/#terseroptions)** (because of using inline `AudioWorkletProcessor`).\n\n```JavaScript\nnew TerserWebpackPlugin({\n  // ... other options\n  terserOptions: {\n    keep_classnames: /^.*?Processor$/\n  }\n})\n```\n\n## Pickups\n  \n- [9 libraries to kickstart your Web Audio stuff - DEV Community](https://dev.to/areknawo/9-libraries-to-kickstart-your-web-audio-stuff-460p)\n  - \u003cblockquote\u003eXSound is a batteries-included library for everything audio. From basic management and loading through streaming, effects, ending with visualizations and recording, this libraries provides almost everything! It also has nice, semi-chainable API with solid documentation.\u003c/blockquote\u003e\n- [20 Useful Web Audio Javascript Libraries – Bashooka](https://bashooka.com/coding/web-audio-javascript-libraries/)\n- [Extending X3D Realism with Audio Graphs, Acoustic  Properties and 3D Spatial Sound](https://dl.acm.org/doi/10.1145/3424616.3424709)\n- [DeView: Confining Progressive Web Applications by Debloating Web APIs](https://www.microsoft.com/en-us/research/uploads/prod/2022/09/deview-acsac22.pdf)\n  - \u003cblockquote\u003eIn this section, we discuss the effectiveness of DeView’s Web API profiling in terms of code coverage. We choose three popular PWAs: Starbucks, Telegram [112], and XSound [57] from eCommerce, social media, and productivity categories, respectively.\u003c/blockquote\u003e\n  \n## License\n  \nReleased under the [MIT](https://github.com/Korilakkuma/XSound/blob/main/LICENSE) license\n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkorilakkuma%2Fxsound","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkorilakkuma%2Fxsound","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkorilakkuma%2Fxsound/lists"}