incidentist / the_tuul

Make a decent karaoke video from any song in about 10 minutes.
https://the-tuul.com
17 stars 4 forks source link

Add export to CDG #5

Open incidentist opened 2 years ago

incidentist commented 2 years ago

Add CDG export so videos can be played at actual karaoke joints.

oxodao commented 5 months ago

Would be really cool. There pretty much no good CDG creator, they're either really old piece of software, paid at a huge price (Seriously 100+€ for this?) or both :(

incidentist commented 5 months ago

I agree, I'd like for this to happen but it's low on the priority list right now. Most of the karaoke places I know are not limited to CDG anymore, they can play mp4s just fine. Adding CDG is also a lot of work, because as you mention, there are no existing libraries for encoding to pull from. Lots of libraries for decoding, so that's cool.

The best reference I have found is the Karaoke Lyric Editor, which has a CDG exporter that could probably be translated into Python/TypeScript: https://github.com/gyunaev/karlyriceditor/blob/master/src/cdggenerator.cpp . I'm happy to accept a PR for this, preferably in TypeScript since The Tuul is moving towards doing as much as possible on the client side.

incidentist commented 5 months ago

Couple other links: https://goughlui.com/2019/03/31/tech-flashback-the-cdgraphics-format-cdg/ https://jbum.com//cdg_revealed.html

oxodao commented 5 months ago

I have a niche case, I'm making a photobooth-ish appliance that can also do karaoke which takes pictures every x minutes, so I much prefer CDG as they are not obtrusive on screen, they render directly what we need, videos have full background hiding the webcam feed. Plus they are heavier (<10mo for CDG+MP3 while VP9 video @ 720p for a song is generally 30mo which is quite a huge difference when we're talking about hundreds of songs).

I unfortunately do not have the time to make a PR but I wish you luck, this is a really cool project

incidentist commented 5 months ago

Thanks, it's always useful to have a better understanding of use cases. Another option might be to output lyrics/timing info in a format that the lyric editor linked above can work with. You'd do most of the work in The Tuul, export to that format, load the exported file in that app, and export to CDG.

That'll take time, but not as much time as writing an encoder from scratch.