|
|
MFiの全体構造
|
docomoの着信メロディは、MFiと呼ばれる形式です。MFiのファイルには、SMFやSMAFと同様に、先頭にファイルヘッダがあり、ボディが続きます。ボディは、幾つかのトラック(通常4つのトラック)で構成されます。
|
|
|
|
ヘッダの情報
|
ヘッダには曲のタイトルや著作権情報などが書かれています。また、MFiのバージョンも書かれています。
|
|
|
|
トラックの情報
|
各トラックには演奏情報が書かれています。
SMFに習い、トラックに書き込まれる1つ1つのデータをイベントと呼ぶことにしましょう。イベントとは、「音を出せ」「音色を変えろ」などの命令(メッセージと言います)と、その命令を実行するタイミングをペアにしたものです。これらの名称もSMFに習い、命令の部分をメッセージ、タイミングの部分をデルタタイムと呼ばれています。
1つのトラックには、幾つかのチャネル(通常4つのチャネル)の情報が含まれます。
トラック内のデータの詳細については、こちらをご覧ください。 |
|
|
|
|
|
|
|
メッセージ |
着メロデータはdocomoのものに限らず、コマンドとそれを実行するタイミングをペアにしたデータの集まりです。コマンドのことをメッセージと呼びます。タイミングはデルタタイムという値によって示されます。デルタタイムとメッセージを組み合わせたものをイベントと呼びます。なので、着メロファイルはイベントのデータの集まりによって出来ているということができます。 |
|
|
|
メッセージの種類
|
メッセージには大きくわけて次の3つの種類があります。
(A) ファイルや曲全体に関する設定を行うためのメッセージ
(B) どれか1つのチャネルの設定を行うためのメッセージ
(C) チャネルで音をだすためのメッセージ |
|
|
|
システムメッセージとチャネルメッセージ |
(A)には、トラックの始まりや終わりを指定したり、テンポを設定したりするメッセージがあります。(B)には、音色、音量などの設定を行うメッセージがあります。バイト列として見た場合、
(A)と(B)は同じ構造を持ちますので、(A)と(B)の種類のメッセージをあわせて、システムメッセージと呼ぶことにします。(B)だけを指して、チャネルメッセージと呼ぶこともあります。
システムメッセージの1バイト目(イベント全体では2バイト目)にはFFhが、2バイト目には何の設定を行うかを示す値が、3バイト目には設定に使用する値が置かれます。
|
|
|
|
ノートメッセージ
|
(C)は、実際に音を出して演奏を行わせるためのメッセージです。ここではノートメッセージとよぶことにします。ノートメッセージの1バイト目には、チャネルと音高を示す値が置かれます。2バイト目には音の長さ(ゲートタイム)が置かれます。
|
|
|
|
イベントの構造
|
イベントは、デルタタイムとメッセージを組み合わせたものです。
それぞれのメッセージの先頭には、前のメッセージからの経過間を示すデルタタイムが付け加えられます。MFiでは、デルタタイムやゲートタイムは、4分音符の長さを30h(10進数の48)として指定するようです。それぞれFFh(255)までの値しか指定することができませんので、4分音符で5つ分を超える長さの音符を使用する場合は、2つの音をつなげて鳴らすテクニックを使用することになります。また、MFiにもSMFやSMAFと同様に、分解能を変える(4分音符の長さを48以外にする)方法が用意されています。
|
|
|
|
|
|
|
|