MCMidi

MCMidi

MCMidi 是一个 Minecraft Fabric 模组,允许你在游戏内播放 MIDI 文件,具有高质量音效和实时可视化效果。

工具

MCMidi

MCMidi 是一个 Minecraft Fabric 模组,可让你在游戏内播放 MIDI 文件,并具备高品质音效与实时可视化功能。

特性

  • MIDI 播放:可直接在 Minecraft 客户端中播放 .midi 或 .mid 文件。
  • 自定义 SoundFont:支持 .sf2 SoundFont 文件,以自定义乐器音色。
  • 实时可视化:内置专属的“Midi 控制中心”,包含多个可视化标签页:
    • Detail(详情):实时 MIDI 消息日志、BPM 与播放位置。
    • Nodes(节点):活动 MIDI 节点的可视化表示。(尚未实现。)
    • Piano(钢琴):显示活动音符的虚拟钢琴卷帘。(尚未实现。)
    • Waveform(波形):动态波形可视化。(尚未实现。)
  • 游戏内配置:集成 Mod Menu 与 Cloth Config,可无缝调整设置。
  • 客户端命令:通过控制台命令快速控制播放。

命令用法

使用以下客户端命令管理 MIDI 播放:

  • /midi play <filename>:从本地曲库播放 MIDI 文件。
  • /midi stop:停止当前 MIDI 播放。

使用方法

  1. 准备文件:
    • 将 .midi 或 .mid 文件放入 Minecraft 实例文件夹内的 midi/musics/ 目录中。
    • (可选)将 .sf2 SoundFont 文件放入 midi/soundfonts/ 目录中。
  2. 启动 Minecraft:按下 ,(默认按键绑定)打开 Midi 控制中心。
  3. 配置设置:从主菜单打开 Mod Menu,找到 MCMidi,点击齿轮图标以调整音量或选择自定义 SoundFont。

已实现的架构

MCMidi 以模块化与可维护性为核心构建:

  • 依赖注入:使用抽象的 IConfigManager 处理配置,避免全局静态状态。
  • 抽象标签页系统:借助 KarasunikiLib 的 ITabBar 与 ITabContent 接口,提供灵活且可扩展的 UI。
  • 解耦的 MIDI 引擎:使用 IMidiEngine 接口,使模组未来可支持不同的 MIDI 驱动或外部设备。

依赖

本模组需要以下库:

  • Fabric API
  • KarasunikiLib
  • Cloth Config API
  • Mod Menu(可选,推荐用于配置界面)

贡献

欢迎贡献!如果你有建议、缺陷报告,或希望提交拉取请求,请遵循以下步骤:

  1. Fork 本仓库,并从 master 创建你的分支。
  2. 进行修改,并使用清晰的提交信息。
  3. 确保你的代码可以构建并通过现有检查。
  4. 提交拉取请求,并附上对你的修改的说明。

对于重大更改,请先开一个 issue 讨论你想修改的内容。

许可证

本项目采用 MIT 许可证。详情请参阅 LICENSE。