# MIDITrail Ver.1.0.0 マニュアル

Copyright (c) 2010, 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ファイルの読み込みと再生を行うWindows用MIDIプレーヤーです。
DirectXを使用したMIDIデータの三次元可視化を主要機能としており、 演奏を聴くだけでなく、見て楽しむことができます。
標準MIDIファイルFormat0/1、および複数ポート出力に対応しています。

スクリーンショット
Windowsに標準インストールされているMIDIファイルを演奏中 (C:\Windows\Media\flourish.mid)

## 2. 動作環境

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

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

## 3. 導入方法

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

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

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

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

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

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

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

## 4. 使用方法

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

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

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

スペースキーを押すと、演奏が開始／一時停止／再開します。
ESCキーを押すと、演奏が停止します。

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

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

#### マウス操作

画面をクリックすると、マウスによる視線移動モードになり、マウスカーソルが消えます。
マウスの移動によって、視線の方向を変えることができます。 もう一度クリックすると、視線移動モードが解除されます。

#### キーボード操作

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

キー | 動作
--- | ---
W / S | 前後に移動します。
A / D | 左右に移動します。
Q / E | 上昇下降します。
Z / C | MIDIデータ進行方向に沿って移動します。
SHIFT | SHIFTキーを押しながら移動キーを押すと、より高速に移動することができます。

#### 左利きの方へ

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

キー | 動作
--- | ---
↑ / ↓ | 前後に移動します。
← / → | 左右に移動します。
PgUp/PgDn | 上昇下降します。
, / . | MIDIデータ進行方向に沿って移動します。
SHIFT | SHIFTキーを押しながら移動キーを押すと、より高速に移動することができます。

### (4) 視点の保存

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

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

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

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

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

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

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

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

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

ピアノロールの三次元可視化の方式を以下の図に示します。

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

## 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が見つからない」というエラーが出て起動できません

実行時に「d3dx9_**.dllが見つからない」というエラーが発生した場合は、 マイクロソフト社のWebページにアクセスして、 最新の「DirectX エンドユーザーランタイム(DirectX End-User Runtime)」をインストールしてください。

Microsoft: DirectX (ダイレクトエックス) 最新ダウンロード/統合情報
http://www.microsoft.com/japan/directx/default.mspx

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

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

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

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

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

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

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

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

    [WindowSize]
    Width=800
    Height=600

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

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

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

すいません。仕様です。

## 7. カスタマイズ

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

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

PianoRoll3D.ini の[FirstPersonCam]セクションを編集します。

値名 | 内容
--- | ---
VelocityFB | 前後方向の移動速度 (m/s)
VelocityLR | 左右方向の移動速度 (m/s)
VelocityUD | 上下方向の移動速度 (m/s)
VelocityPT | 視線の角速度 (degree/s)
AcceleRate | SHIFTキー押下時の加速倍率（通常速度のn倍）

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

PianoRoll3D.ini の[Scale]セクションを編集します。

値名 | 内容
--- | ---
QuarterNoteLength | 四分音符の長さ(m)
NoteBoxHeight | ノートボックスの高さ(m)
NoteBoxWidth | ノートボックスの幅(m)
NoteStep | ノート間隔(m)
ChStep | チャンネル間隔(m)
RippleHeight | 波紋の高さ(m)
RippleWidth | 波紋の幅(m)
PictBoardRelativePos | ピクチャボードと再生面の直交位置 0.0 画像の左端が再生面と直交する 0.5 画像の中央が再生面と直交する 1.0 画像の右端が再生面と直交する

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

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

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

値名 | 内容
--- | ---
Ch-01-NoteRGBA Ch-02-NoteRGBA ・・・ Ch-16-NoteRGBA | ピアノロールバーのチャンネル別の色(RGBA)
GridLineRGBA | グリッド線と小節線の色(RGBA)
PlaybackSectionRGBA | 再生面の色(RGBA)

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

PianoRoll3D.ini の[Stars]セクションを編集します。

値名 | 内容
--- | ---
NumberOfStars | 描画する星の数

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

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

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

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

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

    Copyright (c) 2010, 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 MIDITrail 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 ／ 宮崎麗子氏 藤代一成氏 平賀瑠美氏 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用ソフトらしいです。
ソフトは公開されていません。是非、動作しているところを見てみたいものです・・・。

#### MIDIPlayer ／ rz氏 2010年〜

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

    MIDIPlayer
    http://sourceforge.jp/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 | 正式版公開