#midi #midi-file #music #smf #command-line-interface #encoding

程序+库 midnote

一个用于查看MIDI轨道中音符的终端应用程序,并带有音频播放

7个版本

0.11.1 2022年5月18日
0.11.0 2022年4月24日
0.10.7 2022年4月2日
0.10.6 2022年3月11日
0.10.3 2021年10月18日

#45辅助技术

每月下载量 21次

MIT 许可证

29KB
942

MIDNOTE

Midnote 是一个终端应用程序,可以读取MIDI文件,并以条形图的方式显示其音符,同时播放它。

目标

作为一名盲人音乐家,我自己发现很难独立学习新歌。

我看到了 Lunar Tabs,并希望制作一个类似的应用程序,但针对MIDI文件,因为好的guitarpro5标签是付费的,但可以下载很多优秀的MIDI文件。

功能标志

您可以使用以下功能标志之一选择不同的音频后端

  • --features=jack:使用Jack后端。
  • --features=winrt:使用WinRT后端。

先决条件

Midnote 通过读取MIDI文件并解析其中的消息来工作。显示不需要MIDI设备(软件或硬件),但播放需要。

Windows自带默认的MIDI设备,声音很糟糕,而且延迟很大。强烈推荐Windows用户使用OmniMidi

在*NIX上,您需要安装自己的MIDI合成器。我推荐使用 Fluidsynth

在MacOS上,Fluidsynth 可用,并且应该与*NIX系统一样工作良好。

构建要求

您需要一个工作的 Rust 安装以及 rust 包管理器,cargocargo 随 Rust 工具链一起提供)。在 *nix 上,您还需要 alsa 开发库

# debian / ubuntu
apt install libasound2-dev
# fedora / sentos
dnf install alsa-lib-devel

如果您想使用Jack后端,还需要jack开发库

# Debian and derivatives
apt install libjack-jackd2-dev
# RHEL and derivatives
dnf install jack-audio-connection-kit-devel

安装

Windows:使用Scoop

首先将 我的bucket 添加到scoop

添加 scoop 桶 insomnia https://github.com/inssomnimus/scoop-bucket

更新 scoop

scoop update

安装应用程序

scoop install midnote

下载预构建的二进制文件

预构建的二进制文件可以在 发布页面 找到。

BYOB: 构建您自己的二进制文件

git clone https://github.com/insomnimus/midnote
cd midnote
git checkout main
cargo install --path . --locked
# To use the jack or winrt backends, do the following:
cargo install --path . --locked --features=jack # or winrt

用法

您可以通过传递 midi 文件作为参数并可选地指定 MIDI 设备来启动 midnote。

# Open megalovania.mid, using the default MIDI device:
midnote ./megalovania.mid

# Specify another MIDI device:
midnote ./megalovania.mid --device 2

# List available MIDI devices:
midnote --list

要设置更多选项,请运行 midnote --help

配置

Midnote 接受一个配置文件 (*.json),使用 --config 命令行参数。默认配置如下

{
  "colors": true,
  "keys": {
    "next": "Right",
    "prev": "Left",
    "replay": {
      "Char": "r"
    },
    "solo": {
      "Char": "s"
    },
    "silence": {
      "Char": " "
    },
    "rewind": {
      "Char": "p"
    },
    "exit": "Esc",
    "help": {
      "Char": "h"
    }
  }
}

可能的键

  • 退格
  • 回车
  • 首页
  • 尾页
  • 翻页上
  • 翻页下
  • 制表符
  • 前制表符
  • 删除
  • 插入
  • Esc

任何字母键也是有效的,但需要用 Char 对象包装,请参见上面的默认配置。

功能键的格式为 {"F": 1..=12 }

依赖项

~6–39MB
~571K SLoC