音を出す・音を止める
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/10 02:35 UTC 版)
「スタンダードMIDIファイル」の記事における「音を出す・音を止める」の解説
どのキーをどの速さで押し下げたか等の音楽データをイベントと呼び、MIDIイベント、システムエクスクルーシブ (SysEx) イベント、メタイベントの3種類がある。データセクションには時間情報と共にイベントを順次格納する。 なお、時間情報やイベント内のいくつかの数値については、同じくビッグエンディアン形式であるが一種の圧縮形式で格納されている。この形式は1byte~4byteの可変長で、可変長数値表現とも呼ばれ、1byteあたりには7bitの数値情報を持ち、最大28bitの数値情報を表すことができる。そして、それぞれの最上位bitがフラグとなっており、1である場合は次の1byteにビッグエンディアン形式の下位7bitずつの情報を含むことを示す。4byte目の最上位bitは使用しない。具体的には、音の長さを2進数で記載し、下7桁ずつで区切り、最下位の7桁に8桁目として0を付記し、次の7桁に8桁目として1を付記し、さらに次の7桁が存在すれば8桁目として1を付記し、それぞれの8桁の2進数を16進法表記に変換して時間情報(デルタタイム)を表現する。 例えば、2進法で10000 00000000(16進法で10 00、10進法で4096)ならば、100000 0000000のように下7桁毎に区切られて、最初の下7桁の冒頭に0を書き加え、次の下7桁の8桁目になる部分に1と間の桁に必要な数の0を書き加えて16桁の10 10000 0 0000000となる。これをそのまま2進法にすると10100000 00000000となる。これを16進法に変換するとA0 00という可変長数値表現が得られる。時間情報(デルタタイム)はこのような可変長数値表現が用いられる。 データセクションでは、音を出す、音を止める、の操作指示を出している。音を出す場合には、デルタタイム(待ち時間)、ノートオンコマンド「90」、音の高さ(ノートナンバー)、音量(ベロシティ値)、の4つのデータを示す。音を消す場合には、デルタタイム、ノートオフコマンド「80」、音の高さ、音量「00」、の4つのデータを示す。音を消す際のデルタタイムが、音を消す待ち時間となり、実際には音を出している時間に相当する。 ノートオンコマンド「90」の前半の「9」は音を出す指示を意味し、後半の「0」は16チャンネルあるうちの最初のチャンネル番号を意味する。同様に、ノートオフコマンド「80」の前半の「8」は音を止める指示を意味する。 4分音符のドの音を出して止めるには、音を出すデルタタイム「00」、音を出すノートオンコマンド「90」、音を出すドの音程「3C」、音を出す音量「40」、音を消すデルタタイム(可変長数値表現での待ち時間)「83 60」、音を消すノートオフコマンド「80」、音を消すドの音程「3C」、消した後の音量「00」、のようなコードになる。なお、音を出すノートオンコマンドは、同一トラック内で最初の1回だけ指定すれば以後のノートオンコマンドとノートオフコマンドの記載は省略することができる。 このような音を出す、音を止める操作の繰り返しとなる。
※この「音を出す・音を止める」の解説は、「スタンダードMIDIファイル」の解説の一部です。
「音を出す・音を止める」を含む「スタンダードMIDIファイル」の記事については、「スタンダードMIDIファイル」の概要を参照ください。
- 音を出す・音を止めるのページへのリンク