This project is a DJ/rhythm game engine written in C++. All sources live under include/.
See document Website
Prerequisites:
- C++20 compatible compiler
- CMake 3.12 or later
- SWIG
- OpenSSL
- Conan
To build the engine:
on linux & macos
bash ./BuildInitwithConan.sh . Release
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="../conan_cmakes/conan_toolchain.cmake" -DPDJE_DYNAMIC=OFF #to get dynamic library, change here
cmake --build . --parallel #add your maximum number of coreson windows
./BuildInitwithConan.bat . static Release
::to get dynamic library, change static into dynamic
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="../conan_cmakes/conan_toolchain.cmake" -DPDJE_DYNAMIC=OFF #to get dynamic library, change here
cmake --build . --config Release --parallel #add your maximum number of cores
⚠️ WARNING
To change the build type (Debug/Release) or switch between static and dynamic builds,
you must re-run theBuildInitwithConanscript with the new options.
Otherwise, Conan dependencies may not be configured correctly.If you plan to build Swig binding, you should use dynamic build on windows. static build may cause link errors.
This project uses the following dependencies, which are automatically fetched using FetchContent or Conan:
- miniaudio: Audio playback and capture library.
- highway: High-performance SIMD library.
- CapnProto: Serialization library.
- nlohmann/json: JSON for Modern C++.
- sqlite3: SQL database engine.
- cppcodec: Header-only C++11 library for encoding/decoding schemes.
- annoy: Approximate Nearest Neighbors Oh Yeah.
- spdlog: Fast C++ logging library.
- libgit2: Git core library.
- rocksdb: A library that provides an embeddable, persistent key-value store for fast storage.
- SoundTouch: Audio processing library.
- Faust language: Functional Programming Language for Real Time Signal Processing
Documentation is produced using Doxygen and Sphinx. Ensure both tools are available in your PATH, then run:
bash DOCUMENT_GENERATOR.shThe resulting HTML documentation will appear in the docs/ directory.