Code Monkey home page Code Monkey logo

cdgdeck's Introduction

CD+G Deck

CD+G Deck is an application for playing Compact Disc Graphics. In the later 80's, the CD+G format was introduced to embed low bitrate graphics tracks in audio CDs, using the discs' "subcode" fields. A limited selection of CDs have these elaborate but low bitrate graphics tracks embedded in them. You can learn more about CD+G at the CD+G Museum.

This happened contemporaneously with CD Video (not to be confused with Video CD), and a few years before the Philips CD-i. After this initial commercial push, CD+G retreated from public view with the exception of karaoke CDs, which have made continued use of the format. There was also a CD+EG (Compact Disc Extended Graphics) format, but I am not aware of any discs using this standard ever being made. The Sega Saturn may have a reference decoder for the CD+EG format.

This application is focused on playing subcode tracks (doesn't support reading the CD directly) of discs from the CD+G launch. These older discs use more of the features of the CD+G system, including features rarely seen on karaoke CDs, and have the most interesting graphics.

Building

Install vcpkg for dependency management. You must also need CMake and a C++ compiler.

vcpkg setup instructions

Install the following:

sdl2 sdl2-mixer sdl2-ttf libpng zlib fltk

Note, fltk may need static linking.

Optional decoders:

sdl2-mixer[libflac] sdl2-mixer[mpg123] sdl2-mixer[libvorbis] --recurse

Build

Replace $VCPKG_ROOT with where you installed vcpkg.

mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake ..
make

History

This code was originally written around 2012-2013. It was mainly tested against Information Society (the disc I originally learned about CD+G from), and then later against Jimi Hendrix Experience' Smash Hits (probably one of the most technically and artistically developed CD+G discs.) I tested against a few karaoke CDs, and Lou Reed's New York, which may be one of the few discs that uses alternate CD+G channels for translated lyrics.

I think this application is one of the most correct open source CD+G implementations available. Compare to VLC, which as of writing does not play Smash Hits correctly because of an incorrect implementation of BORDERPRESET. This seems to be a common error without having seen a disc that scrolls graphics into view.

The code was somewhat updated in 2020 to use SDL2 and published.

License

BSD License

Copyright 2020 Isaac Brodsky

cdgdeck's People

Contributors

isaacbrodsky avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.