KJ CDG Creator is a cross-platform desktop application for building classic karaoke tracks in MP3 + CDG format using syllable-level tap timing.
- C#
- .NET 8
- Avalonia
- xUnit
- Lyrics editor where spaces create word timing units automatically and
|adds extra syllable splits inside a word. - Tap timing mode that records syllable timestamps with the Space key.
- CDG rendering engine for classic karaoke highlighting.
- Export pipeline for standard karaoke players such as VirtualDJ.
- Spaces automatically create timing units between words.
|creates additional timing unit boundaries inside a word.- Newlines create lyric lines.
- Blank lines create page breaks.
Example:
Be|cause I'm hap|py
Clap a|long
- The current lyric page advances after its final timing unit has been tapped.
- This lets the next page appear immediately in the editor preview before tapping the first word on that next page.
- Partially timed pages do not advance early.
src/
KJCDGCreator.Core Domain models and application contracts
KJCDGCreator.Audio Audio-facing infrastructure and timing input services
KJCDGCreator.Editor Avalonia desktop UI and composition root
KJCDGCreator.Tests Test project for core scaffolding
docs/
cdg-format.md Notes about the CDG packet format and rendering constraints
examples/
demo-project.json Example project payload for future import/export work
Implemented so far:
- Solution scaffolding for
Core,Audio,Editor,Tests, and a debug example runner. - Avalonia desktop shell with placeholder lyrics and timing views.
- Minimal CDG packet writer that generates a valid
hello.cdgfile. - Tile-based CDG screen buffer covering the full 50x18 display grid with 6x12 pixel tiles.
- Screen-buffer renderer that converts tile changes into
Tile Block Normalpackets and supports memory preset clears. - Bitmap font rendering for lyric-safe ASCII characters, written into the CDG tile screen buffer.
- CDG packet inspection and ASCII preview tooling for verifying generated files without external karaoke software.
- Basic automated tests for CDG file creation, packet sizing, tile-buffer updates, changed-tile rendering, and packet inspection.
- ✔ Lyrics parser (syllable-level structure)
- ✔ Tap timing domain model
- ✔ Tap timing capture session logic
- ✔ Highlight progression engine
- ✔ Highlighted lyric line rendering
- ✔ Active page selection and page layout
- ✔ End-to-end karaoke frame rendering
- ✔ CDG timeline export
- ✔ MP3 + CDG packaging
- ✔ Audio time source abstraction
- ✔ Live tap timing demo
- ✔ Intro/title screen support
- ✔ Project save/load
- ✔ Basic Avalonia project editor
- ✔ Avalonia live tap timing
- ✔ Automatic page handoff after final timed unit
Still intentionally deferred:
- Karaoke highlighting and syllable timing playback
- Real lyrics layout and rendering
- MP3 synchronization and full export workflow