Releases: stijnfrishert/libLSDJ
Releases · stijnfrishert/libLSDJ
v2.2.0
Been a while, but time for another upgrade! Big thanks to Shakaboyd for pointing out that lsdj-mono
wasn't processing files.
- Fixed
lsdj-mono
which would skip everything but.MONO
files, instead of the other way around - Removed
ghc
dependency, because I can usestd::filesystem
now - Upgraded the minimum language version to C++20
- Fixed tools returning 1 on success
- Added
LSDJ_UNKNOWN_EXTENSION
error - Fixed a function missing a return statement
- Added some missing includes for Linux
- Built the Windows binaries with vs 2022
v2.1.0
The changes for this release
lsdsng-export
can now export entire folders (searches them for saves)lsdsng-import
no longer imports files ending with.WM.lsdsng
to the working memory. Instead, it gained a-w
flag for that purpose.lsdsng-import
can take multiple sav files as input to concatenate themlsdsng-import
recursively searches folders for inputlsdj-wavetable-import
gained a--decimal
flag to tell it the indices are not in hex- Added functionality to read/write song data up to 8.9.3 (mainly envelope data)
- This isn't used in any of the tools yet, but the API is in the library
- Fixed a small bug where song filenames outputted from
lsdsng-export
contained spaces.
v2.0.1
This release contains:
- A hotfix for writing projects to a sav. The block allocation table wasn't written correctly, resulting in a seemingly empty project slot.
- Using Github Actions for CI/CD
v2.0.0
It's been a long time coming, but (drumroll...) today marks the official release of libLSDJ v2.0.0. Huzzah!
So, what warrants the new version number?
Version 1 served it's purpose pretty well, but as time went on it became clear the design of the library was prone to produce erratic save files whenever LSDJ itself was updated. The new v2 library (and tools) solve this, among several other things:
- Song bytes are read, stored and written in their entirety (0x8000 bytes), instead of immediately parsing them to sensible data. This way the library guarantees that whenever you read and write something back, you're working with exactly the same set of byte values.
- All song data setter/getter functions (for instruments, phrases, tables, etc.) are rewritten to read/write into the above 0x8000 byte structure and check for format version changes.
- Disclaimer: when e.g. LSDJ adds new features I need to add new setters/getters as well, but even if I don't, your song data stays intact.
- Song data setter/getters are up to date with LSDJ 8.3.4, including tempo's > 255, drum max, cmd/rate and more.
- Only thing missing for now are ADSR setter/getters, but none of the current tools use that.
- Import and export tools no longer read/write song data. They just compress/decompress projects, which lessens the chance of error even further.
- A test suite, to verify I'm not making any errors. Yes, libLSDj now checks against actual LSDj save files!
- All libLSDJ functions that allocate now take an optional
lsdj_allocator_t*
. You can provide your own memory (de)allocation. This makes libLSDJ usable in embedded environments. - Rewrote the error reporting mechanism to not malloc anymore (ties in with the previous point).
- Ditched Boost dependency in favour of two header-only libraries (makes building easier).
- Checking for
rb
flag on three locations now (decided to in consulation with Johan Kotlinski). - A couple of small bug fixes in the tools themselves.
v1.2.3
Changes:
- Changed
lsdj-wavetable-import
's options for less confusion lsdsng-export
prints song tempo's (bpm)- If not all lsdsng's fit in a sav, that won't your sav anymore and exit gracefully
- Added
LSDJ_PROJECT_MAX_SIZE
andLSDSNG_MAX_SIZE
for users the library lsdj_project_write_lsdsng_to_memory()
returns the number of bytes written- Added
lsdj_sav_erase_project()
- Added functions that test whether something is likely a valid sav or lsdsng
- All tools show their version number in the help screen
Special thanks to DEFENSE MECHANISM and TommityTom for this release!
v1.2.2
Changes:
- When importing a single folder, the folder name is used for output unless otherwise specified
- When importing into a sav, the same sav is used for output unless otherwise specified
- lsdsng-export --print can take a folder and will print out contents of all saves in that folder
- lsdsng-export ignores empty project slots (used to be a thing in older versions of LSDJ)
v1.2.1
Changes:
- .snt files are read as binary, which solves issues on Windows
v1.2.0
Changes:
- LibLSDJ toolset now includes lsdj-wavetable-import, for import .snt wavetable files into your LSDJ songs!
v1.1.2
Changes:
- Added support for WAV speed and length changes in 6.7.0 and 6.8.0 (in other words, format versions 6 and 7 are correctly read and written).
- All static constants are now defines. As a result, liblsdj builds on Arch Linux (thanks DigiPack!).
- Fixed a small layout issue in
lsdsng-export --print
.
v1.1.1
Changes:
- Reading/writing new FOLD and LIMIT settings for lsdj v6.6.2+ savs
- --verbose shows slightly more output
- Exposed more data in the API, such as commands, wavetables, row data, etc.
- Cleaned up lsdsng-import and lsdsng-export code
- Fixed bugs having to do with kit data read/write and instrument names