Skip to content

Releases: stijnfrishert/libLSDJ

v2.2.0

22 Jun 14:05
Compare
Choose a tag to compare

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 use std::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

27 Nov 07:13
Compare
Choose a tag to compare

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 them
  • lsdsng-import recursively searches folders for input
  • lsdj-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

26 May 21:58
cd7fe2d
Compare
Choose a tag to compare

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

18 Apr 15:29
ad6c52f
Compare
Choose a tag to compare

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

20 Sep 18:42
f5f2447
Compare
Choose a tag to compare

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 and LSDSNG_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

11 Feb 20:20
Compare
Choose a tag to compare

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

11 Dec 07:36
Compare
Choose a tag to compare

Changes:

  • .snt files are read as binary, which solves issues on Windows

v1.2.0

26 Sep 18:46
Compare
Choose a tag to compare

Changes:

  • LibLSDJ toolset now includes lsdj-wavetable-import, for import .snt wavetable files into your LSDJ songs!

v1.1.2

15 Sep 06:31
Compare
Choose a tag to compare

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

06 Aug 09:09
cf06e62
Compare
Choose a tag to compare

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