A cross-platform C library and tool suite for reading, writing, and manipulating Little Sound DJ (LSDj) save and song files.
libLSDJ is a C library and suite of tools for working with the file formats of Little Sound DJ (LSDJ), a music tracker for the Nintendo Game Boy. It allows developers to programmatically read, write, and manipulate LSDJ save files (.sav) and song files (.lsdsng), solving the problem of managing music projects outside the Game Boy hardware.
Developers building tools for the LSDJ/chiptune community, musicians who want to automate LSDJ file management, and projects like RetroPlug that need reliable LSDJ save file integration.
It provides a robust, future-proof library that prevents song corruption, includes ready-to-use command-line tools, and is open-source, fostering collaboration within the chiptune scene.
Library for working with the LSDj save file format
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The library is rewritten to avoid song corruption when LSDJ adds new features, ensuring reliability until the compression algorithm changes, as highlighted in the README.
Written in C with precompiled binaries for macOS, Windows, and Linux, it runs on common operating systems, with testing confirmed on Sierra, Windows 7/10, and Arch Linux.
Includes utilities like lsdsng-export and lsdj-mono that directly address LSDJ workflow needs, such as batch exporting songs and converting tracks to mono.
Used by projects like RetroPlug for save file management, demonstrating real-world utility and trust within the chiptune community.
Only handles LSDJ-specific formats (.sav, .lsdsng, .snt), making it unsuitable for projects involving other Game Boy music trackers or broader chiptune ecosystems.
All tools are command-line based, requiring technical knowledge and potentially limiting accessibility for musicians who prefer graphical user interfaces.
Wavetable import relies on external repositories like psgcabal/lsdjsynths for .snt files, adding an extra step and potential point of failure for users.