English / Japanese

# MIDITrail Ver.1.2.4 for Windows ユーザーマニュアル

Copyright (c) 2010-2019, WADA Masashi All rights reserved.
Web: https://osdn.jp/projects/miditrail/
Mail:

## 0. 目次

1. はじめに
2. 動作環境
3. 導入方法
4. 使用方法
5. 制限事項
6. FAQ
7. カスタマイズ
8. 著作権とライセンス
9. 補遺
10. 履歴

## 1. はじめに

MIDITrailは、MIDIデータを三次元可視化するMIDIプレーヤーです。
FPSライクな操作で空間を移動することにより、演奏を聴くだけでなく、見て楽しむことができます。
標準MIDIファイルFormat0/1、および複数ポート出力に対応しています。
MIDITrailはWindows, macOS, iOSに対応しています。

スクリーンショット：ピアノロール3D
スクリーンショット：ピアノロールレイン

## 2. 動作環境

対応OS： Windows 2000 / XP / Vista / 7 / 8 / 10
DirectX 9.0c に対応したグラフィックチップが必要です。

スムーズな画面表示を実現するため、高性能グラフィックチップが搭載されたPCの使用を推奨します。
MIDIデータに含まれるノート（音符）の数が多くなるほど、より性能の高いグラフィックチップが必要になります。
PCの性能が許す限り、大画面でお楽しみください。

## 3. 導入方法

### (1) インストール

配布されている圧縮ファイルを任意のフォルダに展開して、MIDITrail.exeを実行してください。
圧縮ファイル名
MIDITrail-Ver.X.X.X-Windows.zip -- MIDITrail 32bit版
MIDITrail-Ver.X.X.X-Windows64.zip -- MIDITrail 64bit版

注意事項：
Windows 2000を利用している場合は、実行前にMicrosoft.VC90.CRTフォルダにあるmsvc*.dllファイルを MIDITrail.exeと同じフォルダに移動してください。
Windows XP / Vista / 7 / 8 / 10 を利用している場合は、DLLファイルを移動しないでください。

### (2) 初回起動時の設定

MIDITrailを起動したら、最初にMIDI出力ポートの設定を行ってください。
「Option」メニューから「MIDI OUT...」を選択すると、MIDI OUT設定ダイアログが表示されます。
ポートAの出力先は必ず設定してください。通常のMIDIデータはポートAを使って演奏されます。

複数ポートを利用するMIDIデータを再生する場合は、ポートB以降の出力先を設定してください。
複数ポートを利用するMIDIデータを再生しない場合は、ポートB以降の出力先を設定する必要はありません。
なお、複数ポートを利用するMIDIデータを再生するには、 複数ポート対応のMIDIインターフェースと音源を用意する必要があります。

### (3) アンインストール

MIDITrail.exeを展開したフォルダを削除してください。 レジストリは使用していません。

### (4) レコンポーザのファイル読み込み対応

ふみぃ氏が公開しているレコンポーザ変換DLL(RCPCV.DLL)を別途用意することにより、 レコンポーザのデータファイル(*.rcp *.r36 *.g36)を読み込めるようになります。
RCPCV.DLLを公開サイト(Vector)からダウンロードして、MIDITrail.exeと同じフォルダに配置してください。
なおMIDITrail(32bit版)はRCPCV.DLLを利用できますが、MIDITrail(64bit版)はRCPCV.DLLを利用できません。
RCPCV.DLL http://www.vector.co.jp/soft/win95/art/se114143.html

## 4. 使用方法

### (1) 標準MIDIファイルの読み込み

「File」メニューから「Open...」を選択すると、ファイル選択ダイアログが表示されます。 ここで標準MIDIファイル(*.mid)を選択してください。
また、標準MIDIファイル(*.mid)をMIDITrailのウィンドウにドラッグ＆ドロップすることにより、 ファイルを読み込むことができます。

RCPCV.DLLを導入している場合は、レコンポーザのデータファイル(*.rcp *.r36 *.g36)を読み込むことができます。
詳しくは「3.(4) レコンポーザのファイル読み込み対応」を参照してください。

### (2) 演奏の開始／一時停止／再開／停止

次のキーを押下するか、「Playback」メニューを利用してください。

キー | 動作
--- | ---
`SPACE` | 演奏の開始／一時停止／再開
`ESC` | 演奏の停止
`1` `2` | スキップ：後方／前方
`4` `5` | 再生スピード：ダウン／アップ
`F2` | 2倍速再生

### (3) 三次元空間内の視点移動

MIDIファイルを読み込んだ直後、および演奏中に、三次元空間内を移動して、 あらゆる方向からMIDIデータを眺めることができます。
FPS（一人称シューティング）ゲームでおなじみの操作で、三次元空間内を移動します。
初めてこの操作を体験する方は違和感を持つかもしれませんが、 一度慣れてしまうと非常に快適です。

#### マウス操作

画面をクリックすると、マウスによる視線移動モードになり、マウスカーソルが消えます。
マウスの移動によって、視線方向を制御できます。 もう一度クリックすると、視線移動モードが解除されます。
またマウスホイールを操作することにより、ピアノロールを回転させることができます。

#### キーボード操作

左手の人差し指を`D`、中指を`W`、薬指を`A`、に載せて操作します。

キー | 動作
--- | ---
`W` `S` | 前後に移動します。
`A` `D` | 左右に移動します。
`Q` `E` | 上昇下降します。
`Z` `C` | MIDIデータ進行方向に沿って移動します。 （ピアノロールレインの場合はキーボードに沿って移動します）
`SHIFT` + [`W` `S`] `SHIFT` + [`A` `D`] `SHIFT` + [`Q` `E`] `SHIFT` + [`Z` `C`] | `SHIFT`キーを押しながら移動キーを押すと、より高速に移動することができます。
`CTRL` + [`W` `S`] `CTRL` + [`A` `D`] | 視線方向を制御します。

#### 左利きの方へ

カーソルキーでも移動可能です。 マウスを左手で操作する方は、こちらの方が便利かもしれません。

キー | 動作
--- | ---
`↑``↓` | 前後に移動します。
`←``→` | 左右に移動します。
`PgUp` `PgDn` | 上昇下降します。
`,``.` | MIDIデータ進行方向に沿って移動します。 （ピアノロールレインの場合はキーボードに沿って移動します）
`SHIFT` + [`↑``↓`] `SHIFT` + [`←``→`] `SHIFT` + [`PgUp` `PgDn`] `SHIFT` + [`,``.`] | `SHIFT`キーを押しながら移動キーを押すと、より高速に移動することができます。
`CTRL` + [`↑``↓`] `CTRL` + [`←``→`] | 視線方向を制御します。

### (4) 視点の選択

Viewメニューから「Viewpoint 1 / Viewpoint 2 / Viewpoint 3」を選択するか、次のキーを押すと、 あらかじめ固定された視点に移動することができます。

キー | 動作
--- | ---
`7` | 視点1に移動する
`8` | 視点2に移動する
`9` | 視点3に移動する

### (5) ウィンドウサイズの変更

「View」メニューから「Window size...」を選択すると、ウィンドウサイズ設定ダイアログが表示されます。
お好みのウィンドウサイズを選択してOKボタンを押してください。
なお、演奏中／一時停止中にウィンドウサイズの変更はできません。

お使いのPCによって、選択できるウィンドウサイズが変わります。
任意のウィンドウサイズを指定したい場合は、「Width」「Height」にサイズを記入してください。
「Aplly to the view area」を選択すると、設定値が画像領域のサイズに反映されます。

### (6) 表示カウンタの種類

項目 | 内容
--- | ---
FPS | 1秒間あたりの画面描画回数(Frame Per Second)
TITLE | 曲名
TIME | 演奏時間
BPM | テンポ (Beats Per Minute)
BEAT | 拍子記号
BAR | 小節番号
NOTES | ノート数（音符の数）
SPEED | 再生スピード

### (7) ピアノロール表示の構造

(a) ピアノロール3Dの三次元可視化方式

複数ポートを使用するMIDIデータを読み込んだ場合、未出力ポートを省略して表示します。
例えばポートA,C,Eに出力するMIDIデータの場合、ポートA,C,Eを隣接させて表示し、 ポートB,Dは省略します。

(b) ピアノロールレインの三次元可視化方式

複数ポートを使用するMIDIデータを読み込んだ場合、現状はポートAのキーボードのみが表示されます。
ピアノロールバーは全ポート分が表示されます。

### (8) ビューモード選択

「View」メニューでビューモードを選択することができます。 演奏中／一時停止中にビューモードの変更はできません。

### (9) 表示／エフェクト選択

「View」メニューで表示／エフェクトの有無を切り替えることができます。

発音中のピアノロールバーは、ピッチベンドの変化に合わせて上下または左右に移動します。
MIDIアニメ作品の中には、ピッチベンドを用いて、 音の高さを変えずにバーの表示位置を意図的にずらしているものがあります。 MIDIアニメ作品が正常に表示されない場合は、バーの表示位置を固定するために、 ピッチベンドのエフェクトをOFFにしてください。

### (10) MIDITrailコマンドラインインターフェース

コマンドラインからMIDITrailを起動する場合は、以下の引数を指定できます。

    MIDITrail.exe [-p] [-q] ["path\to\file"]

引数 | 詳細
--- | ---
-p | MIDITrail起動直後に指定されたMIDIファイルの再生を開始します。 "path\to\file"が指定されていない場合は無視されます。
-q | MIDIファイルの再生終了後にMIDITrailを終了します。-pオプションが有効でない場合は無視されます。
path\to\file | MIDIファイルパスを指定します。 空白を含むパスを指定する場合はダブルクォーテーションで囲んでください。

MIDITrailのショートカットにMIDIファイルをドロップすると、MIDITrail起動時にファイルを開くことができます。

### (11) グラフィック設定

「Option」メニューから「Graphic...」を選択すると、グラフィック設定ダイアログが表示されます。
演奏中／一時停止中にグラフィック設定の変更はできません。

アンチエイリアシング
アンチエイリアシングを有効にすると、ギザギザ（ジャギー）が低減し、より綺麗な画像が表示されます。
しかしアンチエイリアシングの処理は重いため、高いレベルを選択するとパフォーマンスが落ちる可能性があります。
PCがアンチエイリアシングに対応していない場合は「Not supported」と表示されます。

背景画像ファイルパス
背景画像を表示したい場合は、画像のファイルパスを指定してください。

### (12) MIDI IN モニタ

MIDI INデバイスで受信したデータをリアルタイム表示することができます。
「Option」メニューから「MIDI IN...」を選択すると、MIDI IN設定ダイアログが表示されます。

モニタリングするMIDI INデバイスを選択してください。
MIDI INで受信したデータをそのままMIDI OUTに出力する場合は、MIDITHRUを選択してください。
モニタリングを開始するには、「Playback」メニューから「Start Monitoring」を選択してください。
なお、MIDITrailはMIDI INで受信したデータを保存することはできません。

## 5. 制限事項

### (1) 演奏と画面表示の同期について

アプリケーションが発音を指示してから実際に音が鳴るまでに遅延が生じる音源 （ソフトウェア音源など）を利用する場合、演奏と画面表示がずれる可能性があります。

### (2) グラフィックチップの性能について

MIDITrailは、MIDIデータに含まれる全ノートをリアルタイムレンダリングします。 このため、全ノート数が多いMIDIデータほど画面描画処理の負荷が高くなります。
クラシック音楽のように、演奏時間が長く、全ノート数が数万個に達するMIDIデータを 快適に鑑賞するには、高性能なグラフィックチップを搭載したPCを使用してください。

### (3) 複数ポート出力について

標準MIDIファイルの仕様には、複数ポート出力への対応方法は定義されていません。 しかし特定のパラメータを用いて複数ポート出力に対応する方式(*1)が存在します。 MIDITrailは、この方式に沿って複数ポート出力対応を行っていますが、 MIDIデータによってはうまく再生できない可能性があります。
(*1) メタイベント(FF 21 01 pp)を出力先ポート番号の切替とみなします。

### (4) 標準MIDIファイル対応について

デルタタイムが実時間タイムコードで表現されているMIDIデータには対応していません。

## 6. FAQ

### (1)「d3dx9_**.dllが見つからない」というエラーが出て起動できません

お使いのPCにインストールされているDirectXのバージョンが古いと、このエラーが発生します。
マイクロソフト社のWebページにアクセスして、 最新の「DirectX エンドユーザーランタイム(DirectX End-User Runtime)」をインストールしてください。

Microsoft: DirectX End-User Runtimes (June 2010)
https://www.microsoft.com/en-us/download/details.aspx?id=8109

### (2) 画面がスムーズに描画されません

ウィンドウサイズを小さくして、アンチエイリアシングをOFFにしてください。レンダリングの負荷が減少します。
ウィンドウタイトルに表示されているFPS（1秒間あたりの画面描画回数）の値が60付近を維持できていない場合、 グラフィックチップの性能が不足しています。
なお、MIDIデータに含まれる音符の数が多いほど、描画処理が重くなります。
PCの処理能力を確認するために、音符の数が少ないMIDIデータを再生してみてください。
それでも改善されない場合は、高速なグラフィックチップが搭載されたPCを使用してください。

### (3) ウィンドウサイズをカスタマイズしたいのですが

次のファイルをテキストエディタで編集することにより、ウィンドウサイズをカスタマイズできます。

    Windows 2000 / XP の場合
    C:\Documents and Settings\（ユーザー名）\Application Data\yknk\MIDITrail\View.ini
    Windows Vista / 7 / 8 / 10 の場合
    C:\Users\（ユーザー名）\AppData\Roaming\yknk\MIDITrail\View.ini

テキストエディタでView.iniを開き、WidthとHeightの値を書き換えてください。

    [WindowSize]
    Width=800
    Height=600

### (4) フルスクリーン表示にしたい

現時点では、フルスクリーン表示には対応していません。
そのうち対応するかもしれません。

### (5) メニューを表示すると画面の描画が止まります

すいません。仕様です。

### (6) Windows 2000で「アプリケーションを正しく初期化できませんでした」というエラーが出て起動できません

Windows 2000の場合に限り、MIDITrailインストール時にDLLファイルを移動する必要があります。
MIDITrailインストール先のMicrosoft.VC90.CRTフォルダにあるmsvc*.dllファイルを MIDITrail.exeと同じフォルダに移動してください。

### (7) 「DirectX API error. / FUNC: DXRenderer::Initialize / INFO: 8876086A」というエラーが出ます

お使いのPCがDirect3Dをサポートしていない場合にこのエラーが発生します。
DirectX診断ツール(dxdiag.exe)を起動して「ディスプレイ」タブを選択し、 「Direct3Dアクセラレータ」が「使用可能」になっているか確認してください。
「使用可能」に変更できない場合は、そのPCがDirect3Dをサポートしていないため、MIDITrailは実行できません。
DirectX 9.0cをサポートしているPCを使用してください。

### (8) 波紋を派手にしたい

設定ファイルを編集することにより、波紋の大きさを変更することができます。
詳しくは「7. カスタマイズ - (2) ピアノロール表示のカスタマイズ」を参照してください。
RippleHeight, RippleWidth の値を大きくします。

## 7. カスタマイズ

MIDITrailインストール先のconfフォルダにある設定ファイルをテキストエディタで編集することにより、 自分の好みに合わせてカスタマイズすることができます。

ファイル | 内容
--- | ---
conf/Player.ini | プレイヤー設定
conf/PianoRoll3D.ini | ビューモード設定：Piano Roll 3D
conf/PianoRoll2D.ini | ビューモード設定：Piano Roll 2D
conf/PianoRollRain.ini | ビューモード設定：Piano Roll Rain
conf/PianoRollRain2D.ini | ビューモード設定：Piano Roll Rain 2D
conf/PianoRoll3DLive.ini | ビューモード設定：Piano Roll 3D（MIDI IN モニタ）
conf/PianoRoll2DLive.ini | ビューモード設定：Piano Roll 2D（MIDI IN モニタ）
conf/PianoRollRainLive.ini | ビューモード設定：Piano Roll Rain（MIDI IN モニタ）
conf/PianoRollRain2DLive.ini | ビューモード設定：Piano Roll Rain 2D（MIDI IN モニタ）

### (1) プレイヤーの設定

#### (a) プレーヤー制御

[PlayerControl]セクションを編集します。

値名 | 内容
--- | ---
AllowMultipleInstance | 二重起動許可（0:許可しない / 1:許可する）
AutoPlaybackAfterOpenFile | ファイルオープン後の自動演奏開始（0:無効 / 1:有効）

#### (b) ビュー制御

[ViewControl]セクションを編集します。

値名 | 内容
--- | ---
ShowFileName | タイトルの代わりにファイル名を表示する（0:無効 / 1:有効）

#### (c) スキップ制御

[SkipControl]セクションを編集します。

値名 | 内容
--- | ---
SkipBackTimeSpanInMsec | 後方スキップ時間間隔 (msec)
SkipForwardTimeSpanInMsec | 前方スキップ時間間隔 (msec)
MovingTimeSpanInMsec | スキップアニメーション時間間隔 (msec)

#### (d) 再生スピード制御

[PlaybackSpeedControl]セクションを編集します。

値名 | 内容
--- | ---
SpeedStepInPercent | 再生スピード変化間隔 (%)
MaxSpeedInPercent | 再生スピード最大値 (%)

### (2) ビューモードの設定

#### (a) 視点移動速度のカスタマイズ

[FirstPersonCam]セクションを編集します。

値名 | PR-3D/2D | PR-Rain/2D | 内容
--- | --- | --- | ---
VelocityFB | o | o | 前後方向の移動速度 (m/s)
VelocityLR | o | o | 左右方向の移動速度 (m/s)
VelocityUD | o | o | 上下方向の移動速度 (m/s)
VelocityPT | o | o | 視線の角速度 (degree/s)
AcceleRate | o | o | SHIFTキー押下時の加速倍率（通常速度のn倍）
VelocityAutoRoll | o | o | ピアノロール自動回転角速度 (degree/s)
VelocityManualRoll | o | o | ピアノロール手動回転角速度 (degree/s)

#### (b) ピアノロール表示のカスタマイズ

[Scale]セクションを編集します。

値名 | PR-3D/2D | PR-Rain/2D | 内容
--- | --- | --- | ---
QuarterNoteLength | o | o | 四分音符の長さ(m)
NoteBoxHeight | o | x | ノートボックスの高さ(m)
NoteBoxWidth | o | x | ノートボックスの幅(m)
NoteStep | o | x | ノート間隔(m)
ChStep | o | x | チャンネル間隔(m)
RippleHeight | o | x | 波紋の高さ(m)
RippleWidth | o | x | 波紋の幅(m)
PictBoardRelativePos | o | x | ピクチャボードと再生面の直交位置 0.0 画像の左端が再生面と直交する 0.5 画像の中央が再生面と直交する 1.0 画像の右端が再生面と直交する
LiveNoteLengthPerSecond | o | o | モニタ表示の1秒あたりのノートの長さ(m)
LiveMonitorDisplayDuration | o | o | モニタ表示の時間間隔(msec)

QuarterNoteLengthの値を小さくすると、箱庭的なMIDIデータ鑑賞ができます。

#### (c) 色のカスタマイズ

[Color]セクションを編集します。
RGBAのAは透明度です。

値名 | PR-3D/2D | PR-Rain/2D | 内容
--- | --- | --- | ---
NoteColorType | o | o | ノートの色種別 CHANNEL: チャンネル単位で色を割り当てる (Ch-XX-NoteRGBA) SCALE: 音階単位で色を割り当てる (Scale-XX-NoteRGBA)
Ch-01-NoteRGBA Ch-02-NoteRGBA ・・・ Ch-16-NoteRGBA | o | o | ピアノロールバーのチャンネル別の色(RGBA)
Scale-01-NoteRGBA Scale-02-NoteRGBA ・・・ Scale-12-NoteRGBA | o | o | ピアノロールバーの音階別の色(RGBA) 01=C,02=C#,03=D,04=D#,05=E,06=F,07=F#,08=G,F09=G#,10=A,11=A#,12=B
GridLineRGBA | o | x | グリッド線と小節線の色(RGBA) RGBAのAが00の場合、線は消えます。
PlaybackSectionRGBA | o | x | 再生面の色(RGBA)
CaptionRGBA | o | o | キャプション／カウンタの文字色(RGBA)
BackGroundRGB | o | o | 背景色(RGB)

#### (d) 発音中ノートのカスタマイズ

[ActiveNote]セクションを編集します。

値名 | PR-3D/2D | PR-Rain/2D | 内容
--- | --- | --- | ---
Duration | o | x | 発音によって光らせる時間間隔（ミリ秒）を指定します。
WhiteRate | o | x | 発音開始時点の最大白色率を指定します。 0.0 ピアノロールバーの色と同じ（光らない） 0.5 ピアノロールバーの色と白の中間色 1.0 白
EmissiveRGBA | o | x | 発音中ピアノロールバーのエミッシブ色(RGBA) この値はPianoRoll2Dでは無視されます。
SizeRatio | o | x | 発音中ピアノロールバーのサイズ拡大率を指定します。 この値はMIDI INモニタでは無視されます。

#### (e) 波紋のカスタマイズ

[Ripple]セクションを編集します。

値名 | PR-3D/2D | PR-Rain/2D | 内容
--- | --- | --- | ---
Duration | o | x | 波紋を表示する時間間隔（ミリ秒）を指定します。

#### (f) 星のカスタマイズ

[Stars]セクションを編集します。

値名 | PR-3D/2D | PR-Rain/2D | 内容
--- | --- | --- | ---
NumberOfStars | o | o | 描画する星の数

#### (g) ビットマップのカスタマイズ

[Bitmap]セクションを編集します。
MIDITrailインストール先のdataフォルダに表示したいビットマップファイルを格納し、 そのファイル名を設定ファイルに記述してください。
縦横サイズが大きすぎると、グラフィックチップによっては描画できない場合があります。

値名 | PR-3D/2D | PR-Rain/2D | 内容
--- | --- | --- | ---
Board | o | x | ピクチャボードのビットマップファイル名（例："data\Board.bmp"） ピアノ鍵盤の代わりにお好みの壁紙を表示することができます。縦横サイズは任意です。 設定ファイル [Scale] / PictBoardRelativePos を編集して、再生面との直交位置を調整してください。
Ripple | o | x | 波紋のビットマップファイル名（例："data\Ripple.bmp"） ノートONになったときに表示される波紋を変更することができます。縦横サイズは任意です。 設定ファイル [Scale] / RippleHeight, RippleWidth を編集して、波紋の縦横サイズを調整してください。
Keyboard | x | o | キーボードのビットマップファイル名（例："data\Keyboard.bmp"） ピアノキーボードのテクスチャ画像です。縦横サイズは変更できません。

#### (h) ピアノキーボードのカスタマイズ

[PianoKeyboard]セクションを編集します。

値名 | PR-3D/2D | PR-Rain/2D | 内容
--- | --- | --- | ---
KeyDownDuration | x | o | キー下降時間（ミリ秒）
KeyUpDuration | x | o | キー上昇時間（ミリ秒）
KeyboardStepY | x | o | キーボード配置間隔：水平方向(m)
KeyboardStepZ | x | o | キーボード配置間隔：垂直方向(m)
KeyboardMaxDispNum | x | o | 最大キーボード表示数（0-16）
WhiteKeyColor | x | o | 白鍵の色(RGBA)
BlackKeyColor | x | o | 黒鍵の色(RGBA)
ActiveKeyColorType | x | o | 発音中キーの色種別 STANDARD: 標準 (ActiveKeyColor) NOTE: ノート色 (Ch-XX-NoteRGBA or Scale-XX-NoteRGBA)
ActiveKeyColor | x | o | 発音中キーの色(RGBA)
ActiveKeyColorDuration | x | o | 発音開始から最終中間色に変化させるまでの時間間隔（ミリ秒）
ActiveKeyColorTailRate | x | o | 最終中間色の定義：発音開始時の色（赤）とキー色（白／黒）の色比率（0.0-1.0）
KeyDispRangeStart | x | o | キー表示範囲：開始位置 (0-127) 一般的な88鍵ピアノのキー開始位置は21(A0)です。
KeyDispRangeEnd | x | o | キー表示範囲：終了位置 (0-127) 一般的な88鍵ピアノのキー終了位置は108(C8)です。

#### (i) 固定視点のカスタマイズ

[Viewpoint-2],[Viewpoint-3]セクションを編集します。視点1はカスタマイズできません。

値名 | PR-3D/2D | PR-Rain/2D | 内容
--- | --- | --- | ---
X | o | o | X座標
Y | o | o | Y座標
Z | o | o | Z座標
Phi | o | o | 方位角(度)
Theta | o | o | 天頂角(度)
ManualRollAngle | o | o | 手動回転角度(度)
AutoRollVelocity | o | o | 自動回転速度(度/秒)

## 8. 著作権とライセンス

MIDITrailの著作権は和田雅志が保有しています。 MIDITrailは修正BSDライセンスを適用して公開しています。

    Copyright (c) 2010-2019, WADA Masashi <>
    All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions
    are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the author nor the names of its contributors
      may be used to endorse or promote products derived from this
      software without specific prior written permission.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
    FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
    COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    POSSIBILITY OF SUCH DAMAGE.

## 9. 補遺

### (1) 開発の経緯

ニコニコ動画で、職人の方々が作成したすばらしいMIDIアニメ作品群を見て楽しんでいたところ、 ピアノロールを3Dにしたら面白いのでは？と思いつき、開発することにしました。 たくさんのピアノロールバーが浮かぶ小道を歩いていく、というイメージが浮かんだからです。
ところが開発を開始してから数日後、3Dピアノロール表示機能を搭載したMIDIPlayerのデモ映像が、 ニコニコ動画で公開されているのを見つけて、少々落ち込むことになりました。 しかし、自分のイメージを実現してみようということで、開発を続けました。

### (2) MIDIデータ三次元可視化を実現するソフトについて

GoogleやYoutubeで検索すると、MIDIデータを三次元化した動画はたくさん見つかります。
しかしリアルタイムレンダリングして演奏と同期するソフトは、なかなか見つかりません。
現時点で確認したソフトは、次の通りです。

#### 3D MiDi / Marc Cardle氏 / 1998?～2000年

OpenGLを利用するWindows用MIDIプレーヤー。
ピアノロールではなく、立方体や球が演奏に合わせて動き回ります。 現在はソフトの入手が難しくなっています。

    窓の杜：MIDI演奏に合わせて3Dアニメーションを表示する「3D MiDi」Alpha 0.1
    http://www.forest.impress.co.jp/article/1999/11/18/threedmidi.html

#### comp-i (Comprehensible MIDI Player-Interactive) / 宮崎麗子氏, 藤代一成氏, 平賀瑠美氏 / 2002～2004年

直感的なMIDIデータ編集の実現を目標に掲げている、MIDIデータ三次元可視化ソフトです。
音程だけでなく様々なパラメータを可視化する試みが実現されています。
このソフトはMIDIデータの3次元可視化に取り組んだ研究論文の中で解説されています。

    宮崎麗子, 藤代一成 「MIDIデータの3次元可視化」 2002年7月
    http://ci.nii.ac.jp/naid/110002935789

    宮崎麗子, 藤代一成, 平賀瑠美 「MIDIデータの視覚探索システム」 2004年3月
    http://ci.nii.ac.jp/naid/110002712125

検索すると、他にも関連する論文がありました。
comp-iは、World-ToolKitを利用するWindows用ソフトらしいです。
ソフトは公開されていません。是非、動作しているところを見てみたいものです・・・。

#### MIDIJam / スコット・ハーグ氏 / 2005?～2007年

OpenGLを利用するWindows用MIDIプレーヤー。
このソフトは、3Dの楽器が演奏しているシーンをリアルタイム表示します。 最新版では92種類の楽器がサポートされています。

    MIDIJam
    http://www.gamesbyscott.com/midijam.htm

#### MIDIPlayer / rz氏 / 2010年～

OpenGLを利用するJava実行環境向けMIDIプレーヤー。
複数のレンダリングプラグインを持ち、そのうちのひとつが3Dピアノロールを実現しています。
MIDIキーボードによるリアルタイム演奏も3Dピアノロール表示されます。

    MIDIPlayer
    https://osdn.net/projects/midiplayer/

## 10. 履歴

日時 | バージョン | 変更内容
--- | --- | ---
2010/03/08 | Ver.0.0.0 | 開発開始
2010/05/18 | Ver.1.0.0 beta | ベータ版公開
2010/06/02 | Ver.1.0.0 | 正式版公開
2010/06/05 | Ver.1.0.1 | #22102 バグ修正：Visual C++ランタイムライブラリが見つからず起動が失敗する #22106 バグ修正：英語版WindowsでAboutダイアログのサイズが大きい
2010/06/20 | Ver.1.0.2 | #22218 機能追加：英語版マニュアル追加 #22108 バグ修正：VOCALOIDで書き出したMIDIファイルを開くと落ちる #22217 バグ修正：波紋が重なるとちらつく
2010/07/11 | Ver.1.0.3 | #22319 機能追加：発音中のピアノロールバーの色を変える #22412 機能追加：ピッチベンドの変化をピアノロールに反映する #22425 機能追加：ピアノロールの2D表示に対応する #22442 機能追加：表示／エフェクトの有無を選択可能にする #22413 バグ修正：スペキュラを無効にして描画速度を向上する #22414 バグ修正：ノート総数の値が正しくない #22424 バグ修正：波紋消去までの時間を一定にする
2010/07/24 | Ver.1.0.4 | #22320 機能追加：アプリケーションアイコン作成 #22522 機能追加：レコンポーザのデータファイル読み込みに対応する #22523 機能追加：コマンドライン対応 #22582 機能追加：2倍速再生機能を追加 #22585 機能追加：マウスホイールによるピアノロール回転に対応する #22566 バグ修正：演奏時間が数％短い #22506 バグ修正：再生終了後に音が鳴り続ける場合がある
2010/08/06 | Ver.1.0.5 | #22633 バグ修正：ピアノロール回転状態が「Save viewpoint」で保存されない #22652 バグ修正：55MCMDL1.MID（渡辺宙明メドレー）を開くとエラー発生 #22709 バグ修正：マルチパケットシステムエクスクルーシブでF7を送信してしまう #22710 バグ修正：ピアノロール自動回転の速度が一定でない
2010/08/29 | Ver.1.1.0 beta | ベータ版公開（ピアノロールレイン追加）
2010/09/19 | Ver.1.1.0 | #23174 機能追加：ビューモード「ピアノロールレイン」追加 #23175 バグ修正：ファイル選択ダイアログがモーダル表示されていない
2010/10/17 | Ver.1.1.1 | #23439 機能追加：アンチエイリアシング対応 #23347 バグ修正：ピアノロールレインでキー押下タイミングとピアノロールがずれる #23348 バグ修正：ファイル選択ダイアログでスペルミスあり #23422 バグ修正：ピアノロールレインで黒鍵の位置が正しくない
2010/12/26 | Ver.1.1.2 | MIDITrail for Mac OS Xと同時にリリース #23970 機能追加：キー操作で視線方向の制御を可能にする #23971 機能追加：テクスチャ画像の変更 #23972 機能追加：アプリケーションアイコンを更新 #23497 バグ修正：ViewメニューのPianoRollRainが常に活性状態 #23968 バグ修正：ファイル読み込み直後に拍子記号が常に4/4と表示される #23969 バグ修正：曲名に含まれる空白文字がタイトル表示に反映されない
2012/01/15 | Ver.1.1.3 | #27006 マージ：MIDITrail Ver.1.1.3 for Mac OS X 追加機能 #25454 機能追加：グリッドラインの表示制御 #26987 機能追加：再生スピード制御 #26988 機能追加：スキップ制御 #26989 機能追加：星とカウンタの表示制御 #27005 機能追加：How to viewダイアログにプレイヤー操作説明図を追加 #27091 機能追加：DirectX機能サポート確認（インデックスバッファ） #26990 バグ修正：ライセンスの記述ミス修正 #27139 バグ修正：Piano Roll 3D のノートボックスの色が白っぽい #27140 バグ修正：Piano Roll Rain の星が暗い
2012/03/04 | Ver.1.2.0 | #27711 マージ：MIDITrail Ver.1.2.0 for Mac OS X 追加機能 #27458 機能追加：MIDI IN モニタ機能追加 #27459 機能追加：MIDI OUT 自動設定機能追加 #27712 機能追加：ファイルオープンのショートカットキー登録 #27725 バグ修正：ポート番号が6以上のトラックを含むMIDIデータの再生でエラー発生
2013/12/4 | Ver.1.2.1 | #30545 機能追加：キー表示範囲指定 #30546 機能追加：背景色指定 #30547 機能追加：音階色指定 #30553 機能追加：任意3Dモデル描画対応 #32360 機能追加：自動視点保存機能の追加 #32361 機能追加：モニタリング用視点情報の保存 #32362 機能追加：ファイルオープン直後の自動再生機能の追加 #32363 機能追加：再生中のMIDIファイルオープン対応 #32364 機能追加：二重起動抑止モードの追加 #32366 機能追加：ファイル名表示機能の追加 #32367 機能追加：ビューモード「ピアノロールレイン2D」追加 #32427 機能追加：押下状態のキーにノートの色を反映する #32365 仕様変更：TITLE:を削除してタイトルのみを表示する #30552 内部改善：演奏イベントをウィンドウメッセージからキューに変更 #30548 バグ修正：再生開始直後の演奏が引っかかる #32359 バグ修正：スキップ実行時にコントロールチェンジが送信されない
2014/02/23 | Ver.1.2.1a | #33252 機能追加：Windows版 64bit対応
2014/04/20 | Ver.1.2.1b | #33674 バグ修正：MIDI OUTにNSX-39を選択すると再生開始直後にエラー発生 #33695 バグ修正：MTFont2Bmp::_writeGlyphToBmpBufでエラー発生
2016/12/05 | Ver.1.2.2 | #35775 仕様変更：SourceForge.JPサイト名称変更に伴うユーザマニュアル修正 #36844 機能追加：ウィンドウサイズ任意設定対応 #36845 機能追加：背景画像表示機能追加 #36846 仕様変更：バージョン情報表示変更
2017/10/09 | Ver.1.2.3 | #37561 機能追加：発音中ノートボックスを大きく描画する #37562 仕様変更：波紋の色を明るくする
2019/02/10 | Ver.1.2.4 | #38953 機能追加：視点選択対応 #38954 バグ修正：Piano Roll 2Dでピアノロールバーがちらつく #38955 バグ修正：Piano Roll 3Dでタイムインジケータが不透明になる