Top > プログラミング関連 > ファイルがMIDI(SMF)かどうか判定する

ファイルがMIDI(SMF)かどうか判定する

2006/ 5/ 9 記述

ダウンロード(29.4KB)

概要

指定されたファイルが標準MIDIファイルかどうかを判定します。

仕組み

ファイル先頭の数バイトをまず読み込みます。

標準MIDIファイルの場合、ファイル先頭はヘッダチャンクになっており、その先頭4バイトがアスキー文字列「MThd」、次の4バイトが「0,0,0,6」の固定数値となっています。

つまり、指定されたファイルの先頭8バイトを比較すれば、標準MIDIファイルであることが判定できるわけです。

ここに載せたコードでは、この8バイトの後に続くMIDIのフォーマットの種類も取得しています。この情報は標準MIDIファイル先頭の9バイト目と10バイト目に格納されています。

この数値はWindowsではちょうどWORD型の変数に格納できるのですが、一般的なWindowsマシン(リトルエンディアン)の場合、エンディアンの違いによりそのままでは数値を取得できません(MIDI規格では ビッグエンディアンで数値を保存する)。ここに載せたコードではswab()関数によりエンディアンを変換しています。

MIDIのフォーマットには0,1,2の3種類があり、これ以外のフォーマットが取得された場合には標準MIDIファイルではないと見なしています。

MIDIについて知りたい人へ

MIDIについては、詳細MIDI規格や、書籍「Windowsサウンドプログラミング 音の知識×プログラミングの知識」(ISBN:ISBN4-7981-0018-8)などが詳しいです。


コードについて

このコードにはNYSL 0.9982を適用します。

戻る


[Claybird Logo]泥巣 by Claybird <claybird.without.wing@gmail.com>