1个不稳定版本

0.1.0 2022年4月29日

#1461 in 编码


lsdj-tools中使用

MIT/Apache

59KB
1K SLoC

LSDJ

LittleSoundDj,或简称LSDJ,是用于原始任天堂Game Boy的流行音乐跟踪软件。虽然该手持游戏机最初于1989年发布,但(《chiptune》)音乐家现在仍然使用其硬件来创建和演奏电子音乐。

虽然LSDJ有内置的文件系统来管理曲目,但您需要工具来获取单个文件以进行备份或从导出的曲目构建新的保存文件。这个crate提供了一个用于操作LSDJ保存文件/SRAM的库,同时提供了一个用于管理您的歌曲的命令行实用程序crate。它受到了我在liblsdj上的工作的启发,这是一个C语言的等效库。

LSDJ背后的开发者还制作了LSDPatcher,一个用于管理您的歌曲的GUI包。

示例

use lsdj::{
    sram::SRam,
    fs::{Index, File}
};

// Load a save file from disk
let sram = SRam::from_path("bangers.sav").expect("Could not load SRAM");

// Access one of the files
if let Some(file) = sram.filesystem.file(Index::new(0)) {
    // Convert the file to an .lsdsng (common song format)
    let lsdsng = file.lsdsng().expect("Could not convert file to LsdSng");

    // Store the song on disk
    lsdsng.to_path("put_yo_hands_up.lsdsng").expect("Could not save LsdSng");
}

功能

这个crate目前支持以下功能

  • SRAM 序列化和反序列化
  • Filesystem 操作(查询、插入和删除文件)
  • LsdSng 序列化和反序列化
  • 完整实现压缩算法(通过测试验证)

愿望清单

以下是我希望在某个时候探索/添加的功能

  • SongMemory 解析到每个格式版本的曲目结构。(这将允许操作曲目。)
  • .lsdprj 支持
  • ROM 处理,主要为了样本操作

支持

如果您喜欢这个crate并想以某种方式支持我,请考虑购买一些我的音乐

依赖项

~3–11MB
~143K SLoC