--ID3v1を使いこなそう--



「使いこなそう」なんて偉そうな事言ってますけどたいした事無いです。このバージョンは簡単なんですよ。
ID3v2のがちょっとムズイ。

それよりID3ってなんだか分かります?簡単に言うと、MP3フォーマットに曲名や歌手名などの情報を付け加えるためのフォーマットの事です。これ以上の情報が知りたい方は別のサイトで(笑)

じゃあ早速ID3v1の仕様について説明します。
これは非常に簡単で、MP3ファイルの末尾128バイトがそうです。
(ID3v1には厳密にはID3v1とID3v1.1の2つの仕様があります。まぁID3v1の方は1996年の物なので今時だったらID3v1と言ったらID3v1.1と考えても良いんじゃないでしょうか。)

ID3v1
"TAG"(3バイト)
曲名(30バイト)
アーティスト名(30バイト)
アルバム名(30バイト)
制作年度(4バイト)
コメント(30バイト)
音楽ジャンル(1バイト)
ID3v1.1
"TAG"(3バイト)
曲名(30バイト)
アーティスト名(30バイト)
アルバム名(30バイト)
制作年度(4バイト)
コメント(28バイト)
曲・トラック番号(2バイト)
音楽ジャンル(1バイト)


こんな風に構造がしっかりしていれば簡単ですね。ユーザー定義型作ってポンッですから。
じゃあ以下はサンプルコードです。(というよりこれ以上難しく出来ない・・・)

´ID3v1は無視してます。全部ID3v1.1だと考えて処理
Private Type
tagID3v1
  Header     As String * 3
  MusicName  As String * 30
  ArtistName  As String * 30
  AlbamName  As String * 30
  MakeYear   As String * 4
  Coment    As String * 28
  TrackNum(1) As Byte
  Genre(0)    As Byte
End Type

Private Function GetID3v1(FileName As String) As String
Dim FilesLen As Long
Dim ID3v1 As tagID3v1
Dim FN As Long

  FN = FreeFile
  Open FileName For Binary As FN
  'ファイルが異常
  If LOF(FN) <= 128 Then
    GetID3v1 = ""
    Close
    Exit Function
  End If


  FilesLen = FileLen(FileName)
  Get FN, FilesLen - 127, ID3v1

  If ID3v1.Header <> "TAG" Then
    Close

    GetID3v1 = ""
  Else'ID3v1がある場合の処理
    GetID3v1 = "曲名 :" & DelNull(ID3v1.MusicName) & vbCrLf & _
            "アーティスト名 :" & DelNull(ID3v1.ArtistName) & vbCrLf & _
            "アルバム名 :" & DelNull(ID3v1.AlbamName) & vbCrLf & _
            "製作年度 :" & DelNull(ID3v1.MakeYear) & vbCrLf & _
            "コメント :" & DelNull(ID3v1.Coment) & vbCrLf & _
             "曲・トラック番号:" & CInt(TrackNum(1)) & vbCrLf & _
             "ジャンル :" & GetMP3Genre(CInt(ID3v1.Genre(0)))
  End If
End Function


'Null文字を取り除く処理
Private Function DelNull(Buffer As String) As String
  If InStr(Buffer, vbNullChar) Then
    DelNull = Left$(Buffer, InStr(Buffer, vbNullChar) - 1)
  Else
    DelNull = Buffer
  End If
End Function

ジャンルのとこにあるGetMP3Genreというのは、下の表の様に音楽ジャンルが定められているので、数値からジャンルの文字列を返す関数です。長くなる割には内容の無い関数なんで載せません。

-音楽ジャンル-
00:ブルース 20:オルタナティヴ 40:アルタナロック 60:トップ40
01:クラシックロック 21:スカ 41:ベース 61:クリスチャンラップ
02:カントリー 22:デスメタル 42:ソウル 62:ポップ・ファンク
03:ダンス 23:プランクス 43:パンク 63:ジャングル
04:ディスコ 24:サウンドトラック 44:スペース 64:ネイティブアメリカン
05:ファンク 25:ユーロテクノ 45:メディテイティブ 65:カバレット
06:グランジ 26:アンビエント 46:インストポップ 66:ニューウェイブ
07:ヒップホップ 27:トリップホップ 47:インストロック 67:サイケデリック
08:ジャズ 28:ヴォーカル 48:エスニック 68:レイブ
09:メタル 29:ジャズ+ファンク 49:ゴシック 69:ショートゥーン
10:ニューエイジ 30:フュージョン 50:ダークウェイブ 70:トレーラー
11:オールディーズ 31:トランス 51:テクノ・インダストリアル 71:ローファイ
12:その他 32:クラシカル 52:エレクトロニック 72:トライバル
13:ポップス 33:インストゥルメンタル 53:ポップ・フォーク 73:アシッドパンク
14:R&B 34:アシッド 54:ユーロダンス 74:アシッドジャズ
15:ラップ 35:ハウス 55:ドリーム 75:ポルカ
16:レゲエ 36:ゲーム 56:サザンロック 76:レトロ
17:ロック 37:サウンドクリップ 57:コメディ 77:ミュージカル
18:テクノ 38:ゴスペル 58:カルト 78:ロックンロール
19:インダストリアル 39:ノイズ 59:ガングスタ 79:ハードロック


-Back-