CDGPlayer provides browser karaoke playback libraries under the @cxing/media-* package family.
BREAKING CHANGE: The legacy CDGPlayer and CDGControls monolithic packages have been deprecated and replaced with a modular package architecture. See the migration guide for details.
@cxing/media-core: shared media contracts, parser interfaces, and runtime primitives.@cxing/media-parser-cdg: CD+G parsing, instruction execution, and frame rendering primitives.@cxing/media-loader: zip/file/url loading with normalized track payloads and metadata.@cxing/media-player: high-level playback orchestration, audio sync, and rendering dispatch.@cxing/media-playback-controls: framework-agnostic controls model and UI control builders.@cxing/logger: standalone scoped logging utility shared across runtime packages.
Install the packages your app needs.
- Minimal playback setup:
@cxing/media-player - Loader-only integrations:
@cxing/media-loader - UI control integrations:
@cxing/media-playback-controls - Runtime logging integrations:
@cxing/logger
pnpmis pinned viapackageManagerinpackage.json.- TypeScript baseline is
6.xfor workspace development and CI.
- Getting started
- Migration guide
- Logger contract
- Loader contract
- Player contract
- Controls contract
- Framework-agnostic implementation guide
- React implementation guide
Repository setup, CI/CD workflows, and branch protection policy are documented in CONTRIBUTING.md.
The composed hub build (pnpm nx run storybook-hub:site) embeds the framework-specific Storybooks under apps/storybook-hub/.dist.
Storybook 10 emits index.json for references. During static hosting, compatibility files (stories.json, metadata.json) are mirrored from index.json for each embedded ref to avoid 404 requests from composition clients that still probe legacy manifest names.