「使いこなそう」なんて偉そうな事言ってますけどたいした事無いです。このバージョンは簡単なんですよ。
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-
|