## 概要

RainMIDIはMIDIファイルを再生、ピアノロール風に表示するためのフリーソフトです。
重たいMIDIファイル(通称：黒MIDI)をスムーズに再生することを目指して開発されました。

## 使用許諾

このソフトウェアは MIT License のもとで公開されています。
※以下の条件に従う限り、このソフトウェアを使用できます。

1. このソフトウェアはフリーソフトウェアです。個人使用に関わらず自由に使用してかまいません。
2. 複製、再配布を行う場合は、著作権表示、配布物とともに提供される文書を必ず含めること。
3. 動作環境や、プログラムの不具合などによって問題が生じる場合があります。それらを原因とした損害が発生しても、著作権者は一切の責任を取りません。

## 動作環境

快適に使用するためにはこれらのスペック以上を推奨します。

- OS: Windows 11
- CPU: Intel第10世代Core以上
- RAM: 16GB以上
- GPU: Geforce GTX 1060以上

なお、PCのスペックを満たしていない場合でも、設定項目の値を調整することで、動作が軽くなる可能性があります。
詳細はFAQをご覧ください。

MacやLinuxで動作させる場合は、別途JREをインストールする必要があります。
※WindowsはJREを同梱しているため、ユーザーが別途インストールする必要はありません。

## 起動方法・アンインストール方法

フォルダ内の`RainMIDI.exe`を実行することで起動できます。
アンインストールする場合は、exeを含むフォルダごと削除するだけで完了します。
※「プログラムの追加と削除」等の操作は必要ありません。

## 使い方

以下の操作を行うだけでMIDIファイルを再生できます。
特別な初期設定を必要としません。
※音が出ない場合は、FAQを参照してください。

### 基本操作

- `RainMIDI.exe`を起動する
- 「プレイヤーを起動」ボタンを押す
- MIDIファイルを画面内にドラッグアンドドロップする

## 設定項目

各設定の説明です。
音声やレンダラーの動作・見た目をカスタマイズできます。

項目 | 説明 | デフォルト | 範囲 / 備考
--- | --- | --- | ---
音声エンジン | MIDIファイルの音声を出力するエンジンを指定します。 MIDI Systemは、PCに搭載されているMIDIシンセサイザーを使用します。 KDMAPIは、KDMAPIドライバを使用してOmniMIDIを使用します。 ※KDMAPIを使用するには、別途OmniMIDIをインストールする必要があります。 | MIDI System | MIDI System / KDMAPI
MIDIデバイス | 音声を出力するMIDIデバイスを指定します。 Autoにすると、利用可能なMIDIデバイスの中から最適なものが自動で選択されます。 | Auto | 利用可能なMIDIデバイス
Low-High間のベロシティを発声しない | MIDIファイル内の小さな音を無視して再生します。 値を大きくすると、より多くの音が無視され動作が軽くなります。 | 1 ～ 20 | 1 ～ 127
音量 | 出力音量を調整します。 | システムの音量 | 1 ～ 100%
デザイン設定 | デザイン設定画面を開きます。 |  |
VRAMを使用しない | 描画時にVRAMを使用しません。 ※画面がカクつく場合はONにしてください。 | OFF | ON / OFF
エフェクトを無効化 | 描画効果を無効化します。 ※画面がカクつく場合はONにしてください。 | OFF | ON / OFF
画面サイズ | ウィンドウのサイズを指定します。 | 720p | 720p / 480p / 360p
表示モード | 表示モードを指定します。 Rain Fallは、ノートが上から下に流れるモードです。 Size Flowは、ノートが左から右に流れるモードです。 Counter Onlyは、ノートを表示せずカウンターのみを表示するモードです。 | Rain Fall | Rain Fall / Size Flow / Counter Only
使用するRAM | 使用するRAMの量を指定します。 | 中 | 低 / 中 / 高 / 最大
ノーツ速度 | ノートの移動速度を指定します。 | 普通 | 遅い / 普通 / 速い / とても速い
描画順序 | MIDIトラックのノート描画順序を指定します。 | Track1が背面 | Track1が背面 / Track1が前面
モニター表示 | MIDI情報表示の種類を指定します。 | ノーツ解析 | なし / ノーツ解析 / カウンター / クラシック
ゴーストノートを表示しない | ゴーストノートを隠すかどうかを指定します。 ※ゴーストノートとは、MIDIファイル内のノートイベントのうち、再生されないもの(表示専用のノート)を指します。 | OFF | ON / OFF
鍵盤数 | 表示する鍵盤数を指定します。 自動を設定すると、最も高い音と低い音の範囲に応じて鍵盤数が自動的に調整されます。 | 自動 | 自動 / 128鍵 / 88鍵 / 76鍵
設定を初期化 | すべての設定項目をデフォルトに初期化します。 |  |

## FAQ

Q. 音が出ない。楽器が鳴らない。

「MIDIデバイス」を確認してください。
選択肢の中に「Gervil」か「Microsoft GS Wavetable SW Synth」があるはずなので選択してください。

Q. 音が途切れる。

内蔵シンセ「Gervil」や「Microsoft GS Wavetable SW Synth」は、スペックの高いPCでも重たいMIDIファイルを再生すると音が途切れることがあります。 別途性能の高いシンセをインストールして、「MIDIデバイス」から選択してください。
以下のシンセは無料で使用でき、性能も高いためおすすめです。

- OmniMIDI: https://github.com/KeppySoftware/OmniMIDI/releases
- VirtualMIDISynth: https://coolsoft.altervista.org/en/virtualmidisynth

Q. 画面がカクカクする。重たい。

「VRAMを使用しない」をONにしてください。
※それでもダメなら、「使用するRAM」を低にしてください。
※それでもダメなら、「エフェクトを無効化」をONにしてください。(デザインは軽量なものになってしまいます)
※それでもダメなら、PCのスペックが足りていない可能性があります。orz

Q. 再生中にエラーになった。ソフトが落ちた。

Javaが確保できるRAM上限を超えた可能性があります。
PCスペックが十分であれば、ソフトを終了した後「RainMIDI-Ram8G.exe」または「RainMIDI-Ram16G.exe」を起動して再度お試しください。

## Zulu JDK/JREについて

本アプリケーションには、Azul Systems, Inc. により提供されるZulu OpenJDK が含まれています。
Zulu OpenJDK は、GNU General Public License version 2（GPLv2）および Classpath Exception のもとでライセンスされています。

- OpenJDK Project: https://openjdk.java.net/
- GPLv2 + Classpath Exception: https://openjdk.java.net/legal/gplv2+ce.html
- Azul Systems: https://www.azul.com/

Zulu JDK/JRE のソースコードは、Azul にリクエストすることで入手可能です（受領から3年間以内、実費のみ）。
詳細は azul_openjdk@azul.com にお問い合わせください。
使用しているJDK/JREのバージョン：Zulu 25.0.2+10

## FFmpeg、FFprobeについて

本アプリケーションは FFmpeg および FFprobe を使用しています。
FFmpeg は GNU Lesser General Public License（LGPL）バージョン 2.1 以降のもとでライセンスされています。

- FFmpeg プロジェクト：https://ffmpeg.org/
- FFmpeg のソースコード: https://ffmpeg.org/download.html

## 連絡先・リンク

ご質問やご要望がある場合は、以下の連絡先からお気軽にお問い合わせください。
不具合の報告も歓迎します！

- 作者メールアドレス: suka.dev6626@gmail.com
- GitHub
- Youtube
- X(Twitter)

## 寄付のお願い

RainMIDIは完全に無料で使用できるソフトウェアです。
もしRainMIDIを気に入っていただけたら、今後の活動のために寄付を検討していただけると大変助かります！
以下のサイトから寄付できます。