English / Japanese

# MIDITrail Ver.1.2.1 for Mac OS X ユーザーマニュアル

Copyright (c) 2010-2013, WADA Masashi All rights reserved.
Web: http://sourceforge.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、Mac OS X、iOSに対応しています。

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

## 2. 動作環境

対応OS： Mac OS X 10.5(Leopard), 10.6(Snow Leopard), 10.7(Lion), 10.8(Mountain Lion), 10.9(Mavericks)
intel CPUを搭載したMacで動作します。PowerPCを搭載したMacでは動作しません。

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

## 3. 導入方法

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

配布されている圧縮ファイルを任意のフォルダに展開して、MIDITrailを実行してください。

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

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

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

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

MIDITrailを展開したフォルダを削除してください。

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

Windows版のMIDITrailでは、ふみぃ氏が公開しているRCPCV.DLLを利用してレコンポーザの データファイル(*.rcp *.r36 *.g36)を読む込むことができます。
しかしMac OS XではRCPCV.DLLを利用できないため、レコンポーザのファイルの読み込みは サポートしていません。

## 4. 使用方法

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

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

### (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) 視点の保存

次の操作を行ったとき、視点がデフォルトの位置に戻ります。

- MIDIファイル読み込んだとき
- 演奏を停止させたとき
- 演奏終了後に再び演奏開始したとき

MIDITrailインストール直後は、MIDIデータを真横から眺める視点がデフォルト設定されています。
デフォルトの視点を変更したい方は、お好みの視点に移動した後で、 「View」メニューから「Save viewpoint」を選択してください。 現在の視点がデフォルトの視点として保存されます。
デフォルトの視点を真横からの視点に戻す場合は、「Reset viewpoint」を選択してください。

シーン切り替え時やMIDITrail終了時に、視点を自動的に保存したい場合は、 「View」メニューの「Auto save viewpoint」を選択状態にしてください。

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

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

お使いのMacによって、選択できるウィンドウサイズが変わります。
「ウィンドウサイズをカスタマイズしたい」という方はFAQを参照してください。

### (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を起動する場合は、以下の引数を指定できます。

    open ./MIDITrail.app --args [-p] [-q] [path/to/file]

引数 | 詳細
--- | ---
-p | MIDITrail起動直後に指定されたMIDIファイルの再生を開始します。 "path/to/file"が指定されていない場合は無視されます。
-q | MIDIファイルの再生終了後にMIDITrailを終了します。-pオプションが有効でない場合は無視されます。
path/to/file | MIDIファイルパスを指定します。 空白を含むパスを指定する場合はエスケープコードを使ってください。例："file\ name.mid"

MIDITrailのアイコンにMIDIファイルをドロップすると、MIDITrail起動時にファイルを開くことができます。

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

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

アンチエイリアシング
アンチエイリアシングを有効にすると、ギザギザ（ジャギー）が低減し、より綺麗な画像が表示されます。
しかしアンチエイリアシングの処理は重いため、高いレベルを選択するとパフォーマンスが落ちる可能性があります。
Macがアンチエイリアシングに対応していない場合は「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データを 快適に鑑賞するには、高性能なグラフィックチップを搭載したMacを使用してください。

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

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

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

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

## 6. FAQ

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

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

### (2) 演奏を開始するたびに真横からの視点に戻ってしまいます

お好みの視点に移動してから、「View」メニューの「Save viewpoint」を選択してください。 現在の視点が保存されます。
または「View」メニューの「Auto save viewpoint」を選択状態にして、 視点の自動保存を有効にしてください。

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

次のファイルをProperty List Editorで編集することにより、ウィンドウのサイズと位置をカスタマイズできます。
Property List EditorはXcodeに付属するユーティリティアプリです。
ウィンドウのサイズを指定する場合は、"Width"と"Height"を編集してください。
ウィンドウの位置を指定する場合は、"WindowPosition","X","Y"を追加してください。

    ~/Library/Preferences/jp.sourceforge.users.yknk.MIDITrail.plist

    View
        WindowSize
            Height=600 (Type:String)
            Width=800 (Type:String)
        WindowPosition
            X=100 (Type:String)
            Y=200 (Type:String)

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

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

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

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

## 7. カスタマイズ

MIDITrailのリソースに格納されている設定ファイルをテキストエディタで編集することにより、 自分の好みに合わせてカスタマイズすることができます。
なお編集するときは、改行コードを必ずCRLFにしてください。

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

MIDITrailのリソースを参照するには、MIDITrailのアイコンを右クリックして 「パッケージの内容を表示」をクリックしてください。

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

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

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

値名 | 内容
--- | ---
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)
BackGroundRGBA | o | o | 背景色(RGBA)

#### (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では無視されます。

#### (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フォルダに表示したいビットマップファイルを格納し、 そのファイル名を設定ファイルに記述してください。
縦横サイズが大きすぎると、グラフィックチップによっては描画できない場合があります。
またMac OS X 10.5では、画像サイズが(2^n)*mでないとテクスチャの描画が崩れるようです。

値名 | 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) ピクチャボードのカスタマイズ

[Board]セクションを編集します。
[Bitmap]セクションの"Board"で指定した画像について、 一部の矩形領域を表示する場合にこの設定を利用します。

値名 | PR-3D/2D | PR-Rain | 内容
--- | --- | --- | ---
ClipImage | o | x | 画像クリップ有無（0:なし／1:あり）
ClipAreaX1 | o | x | クリップ領域座標 X1
ClipAreaY1 | o | x | クリップ領域座標 Y1
ClipAreaX2 | o | x | クリップ領域座標 X2
ClipAreaY2 | o | x | クリップ領域座標 Y2

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

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

    Copyright (c) 2010-2013, 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
    http://sourceforge.jp/projects/midiplayer/

## 10. 履歴

日時 | バージョン | 変更内容
--- | --- | ---
2010/10/21 | Ver.0.0.0 | MIDITrail Ver.1.1.1 for WindowsをベースにしてMac版の開発を開始
2010/12/26 | Ver.1.1.2 | Mac OS X版 初回正式リリース #23973 MIDITrail for Mac OS X 開発
2011/12/25 | Ver.1.1.3 | #25454 機能追加：グリッドラインの表示制御 #26985 機能追加：Mac OS X 10.7 (Lion) 対応 #26987 機能追加：再生スピード制御 #26988 機能追加：スキップ制御 #26989 機能追加：星とカウンタの表示制御 #27005 機能追加：How to viewダイアログにプレイヤー操作説明図を追加 #26990 バグ修正：ライセンスの記述ミス修正
2012/02/12 | Ver.1.2.0 | #27458 機能追加：MIDI IN モニタ機能追加 #27459 機能追加：MIDI OUT 自動設定機能追加 #27457 バグ修正：リピート有効のとき演奏終了直前の前方スキップで画面がちらつく
2014/1/2 | Ver.1.2.1 | #32544 マージ：MIDITrail Ver.1.2.1 for Windows 追加機能 #30545 機能追加：キー表示範囲指定 #30546 機能追加：背景色指定 #30547 機能追加：音階色指定 #30549 機能追加：フォントエラー発生時のメッセージ改良 #32543 機能追加：ウィンドウ表示位置指定 #30550 機能追加：仮想MIDIポート対応 #30551 機能追加：INIファイル改行コード対応 #32360 機能追加：自動視点保存機能の追加 #32361 機能追加：モニタリング用視点情報の保存 #32362 機能追加：ファイルオープン直後の自動再生機能の追加 #32363 機能追加：再生中のMIDIファイルオープン対応 #32366 機能追加：ファイル名表示機能の追加 #32367 機能追加：ビューモード「ピアノロールレイン2D」追加 #32427 機能追加：押下状態のキーにノートの色を反映する #32606 機能追加：サンドボックス対応 #32365 仕様変更：TITLE:を削除してタイトルのみを表示する #32730 仕様変更：開発環境をXcode4に移行 #30548 バグ修正：再生開始直後の演奏が引っかかる #32359 バグ修正：スキップ実行時にコントロールチェンジが送信されない #32542 バグ修正：MIDIデバイスのオフラインプロパティ取得エラー #32779 バグ修正：MIDI OUT設定でnoneを選択しても反映されない