Skip to content

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KJ CDG Creator

KJ CDG Creator is a cross-platform desktop application for building classic karaoke tracks in MP3 + CDG format using syllable-level tap timing.

Stack

  • C#
  • .NET 8
  • Avalonia
  • xUnit

Planned v1 scope

  1. Lyrics editor where spaces create word timing units automatically and | adds extra syllable splits inside a word.
  2. Tap timing mode that records syllable timestamps with the Space key.
  3. CDG rendering engine for classic karaoke highlighting.
  4. Export pipeline for standard karaoke players such as VirtualDJ.

Lyrics Authoring

  • 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

Live Tap Timing Behavior

  • 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.

Solution layout

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

Status

Implemented so far:

  1. Solution scaffolding for Core, Audio, Editor, Tests, and a debug example runner.
  2. Avalonia desktop shell with placeholder lyrics and timing views.
  3. Minimal CDG packet writer that generates a valid hello.cdg file.
  4. Tile-based CDG screen buffer covering the full 50x18 display grid with 6x12 pixel tiles.
  5. Screen-buffer renderer that converts tile changes into Tile Block Normal packets and supports memory preset clears.
  6. Bitmap font rendering for lyric-safe ASCII characters, written into the CDG tile screen buffer.
  7. CDG packet inspection and ASCII preview tooling for verifying generated files without external karaoke software.
  8. Basic automated tests for CDG file creation, packet sizing, tile-buffer updates, changed-tile rendering, and packet inspection.
  9. ✔ Lyrics parser (syllable-level structure)
  10. ✔ Tap timing domain model
  11. ✔ Tap timing capture session logic
  12. ✔ Highlight progression engine
  13. ✔ Highlighted lyric line rendering
  14. ✔ Active page selection and page layout
  15. ✔ End-to-end karaoke frame rendering
  16. ✔ CDG timeline export
  17. ✔ MP3 + CDG packaging
  18. ✔ Audio time source abstraction
  19. ✔ Live tap timing demo
  20. ✔ Intro/title screen support
  21. ✔ Project save/load
  22. ✔ Basic Avalonia project editor
  23. ✔ Avalonia live tap timing
  24. ✔ 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

About

Open-source tool to create classic MP3+CDG karaoke tracks using syllable-level tap timing.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages