A fast, multi-threaded C++ tool for unlocking NCM audio files and embedding cover images natively.
- High-Performance C++ Core: Multi-threaded processing with optimized decryption.
- Cover Art Support: Automatic cover image embedding into converted FLAC or MP3 music files using TagLib.
- Batch Processing: Built-in batch mode to process entire directories without needing external scripts.
- Colorful Logging: Built-in colorful terminal output for status tracking.
- Cross-Platform: Builds and runs on Linux and other systems with a C++20 compiler.
- Smart Extension Handling: Proper filename handling for files with dots in names.
- OpenSSL: Cryptographic operations.
- RapidJSON: Metadata parsing.
- TagLib: Audio tag and cover image embedding natively.
- CMake: Build system.
-
Clone the repository:
git clone https://github.com/WindustH/ncmpp.git cd ncmpp -
Create a build directory:
mkdir build cd build -
Configure and build:
cmake .. cmake --build . -j$(nproc)
The executable
ncmppwill be created in thebuilddirectory.
usage: ./ncmpp [options] ... [input_path] [output_path]
options:
-t, --threads Maximum number of concurrent processing threads (unsigned int [=auto])
-s, --showtime Display processing time for each file and total time
-b, --batch Batch mode: Treat input and output paths as directories (non-recursive)
-h, --help Print this help message1. Process a single file:
./build/ncmpp song.ncm out_dir(This will decrypt song.ncm and save it to out_dir with the proper extension, embedding its cover art automatically).
2. Process an entire directory in batch mode:
./build/ncmpp ./music_input ./music_output -b3. Use 4 threads with timing and batch mode:
./build/ncmpp ./music_input ./music_output -b -t 4 -sncmpp/
├── CMakeLists.txt # CMake build configuration
├── build/ # Build directory (created during compilation)
├── ncmlib/ # Core library for decryption, parsing and cover extraction
├── ncmpp/ # CLI application logic
└── README.md
This project is licensed under the MIT License.