This utility extracts and converts Enigma XML from a Finale .musx file. It is a successor to the original denigma project by Chris Roode.
This project is not affiliated with or endorsed by Finale or its parent company.
- It is an independent open-source utility designed to help users access and convert their own data in the absence of Finale, which has been discontinued.
- It does not contain any Finale source code.
- It is not capable of writing Finale files, only reading them.
- Nothing in this repository circumvents digital copy protection on the Finale application.
Denigma is split into small reusable libraries as well as the CLI utility:
denigma_classifyprovides independent classification helpers for clefs, articulations, dynamics, and jumps.denigma_format_enigmaxmlhandles MUSX archive extraction and EnigmaXML pass-through.denigma_format_mnxconverts MUSX content to MNX.denigma_format_mssconverts MUSX content to MSS.denigma_format_musicxmlconverts MUSX content to MusicXML.denigma_format_svgconverts MUSX content to SVG.
The documentation site for the library API is https://rpatters1.github.io/denigma/.
Denigma can also be consumed as libraries from another CMake project. Link only the narrow library or libraries you need:
target_link_libraries(my_tool PRIVATE denigma::classify)
target_link_libraries(my_tool PRIVATE denigma::mnx)
target_link_libraries(my_tool PRIVATE denigma::mss)
target_link_libraries(my_tool PRIVATE denigma::musicxml)
target_link_libraries(my_tool PRIVATE denigma::svg)
target_link_libraries(my_tool PRIVATE denigma::enigmaxml)Use denigma::classify when you only need classification helpers. Use one of the format targets when you need a specific converter.
The companion denigma-examples repository demonstrates this from separate native and WebAssembly projects using CMake FetchContent or a local Denigma checkout.
Use the --help option to get a full list of commands:
denigma --help
Clone the GitHub repository and clone all submodules.
Install the latest cmake:
brew install cmake
brew install ninjaYou must install cmake and xxd. The easiest way is with a package manager such as Choclatey (choco).
Choclatey install instructions
Install the latest cmake and xxd
choco install cmake
choco install ninja
choco install xxdcmake -P build.cmakeor (for Linux or macOS)
./build.cmakeYou can clean the build directory with
cmake -P build.cmake -- cleanor (for Linux or macOS)
./build.cmake -- cleanSee .vscode_template/README.md for OS-specific templates (macos, linux, windows) with launch.json and tasks.json.