基本的なファイル構成以下はバイナリエディタを利用した簡単なデータの有無の判別方法です。
ID3v2タグ MP3データ ID3v1タグ
・ID3v2タグは先頭に付加(サイズ可変)
・フレーム単位で音声データが保持されている
・ID3v1タグは終端に付加(サイズ128バイト固定)
ID3v2タグ
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF
00000000 : 49 44 33 03 00 00 00 00 01 76 54 50 45 31 00 00 ID3.......TPE1.. 00000010 : 00 0D 00 00 00 59 61 6D 61 74 61 6E 20 42 61 6E .....Yamatan Ban 00000020 : 64 54 49 54 32 00 00 00 0C 00 00 00 53 61 6D 70 dTIT2.......Samp 00000030 : 6C 65 20 53 6F 6E 67 54 41 4C 42 00 00 00 07 00 le SongTALB..... 00000040 : 00 00 4D 50 33 6F 6E 33 54 59 45 52 00 00 00 05 ..MP3on3TYER.... 00000050 : 00 00 00 32 30 30 34 43 4F 4D 4D 00 00 00 10 00 ...2004COMM..... 00000060 : 00 00 65 6E 67 00 53 61 6D 70 6C 65 20 44 61 74 ..eng.Sample Dat 00000070 : 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a............... 00000080 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 〜 000000F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000100 : FF FB 90 60 00 00 00 00 00 00 00 00 00 00 00 00 ..秦............ 〜
MP3ファイルの先頭に ID3 の文字列が見つかれば、ID3v2タグが付加されていると判断できます。(上図の )
ID3v2タグのサイズは可変ですが、シンクセーフ整数 としてサイズ値が保持されているので(上図例では 00 00 01 76)、以下の式で算出できます。
16進 : 00 × 803 + 00 × 802 + 01 × 80 + 76 = F6
10進 : 0 × 1283 + 0 × 1282 + 1 × 128 + 118 = 246
算出されたサイズにはヘッダー10バイト(上図の 49 44 33 03 00 00 00 00 01 76 の部分)は含まれないので、 この例でのID3v2タグの全体のサイズは 246 + 10 = 256バイトになります。(16進だと100)
※シンクセーフ整数 ID3v2タグを認識しないデコーダーがMP3の同期ワード(FFF,後述)と 混同しないように、0xFF を使わずに7ビットで整数を表現する方法例) 00001111 11111111 (0F FF) → 00011111 01111111 (1F 7F)
MP3データ
算出されたID3v2タグのサイズに従い、アドレス 00000100 の位置を見ると FFF〜 という同期ワードで始まるMP3のデータが見つかります。
(ID3v2タグがないMP3ファイルの場合は、ファイルの先頭は通常このデータから始まります)
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 〜 000000F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000100 : FF FB 90 60 00 00 00 00 00 00 00 00 00 00 00 00 ..秦............ 00000110 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000120 : 00 00 00 00 49 6E 66 6F 00 00 00 0F 00 00 0E 0C ....Info........ 00000130 : 00 16 F0 A6 00 03 05 07 0A 0D 0F 12 14 17 1A 1C ................ 00000140 : 1E 22 24 26 29 2C 2E 30 33 36 38 3B 3D 3F 43 45 ."$&),.0368;=?CE 00000150 : 47 4A 4D 4F 52 54 57 59 5C 5E 61 64 66 68 6C 6E GJMORTWY\^adfhln 00000160 : 70 73 76 78 7B 7D 7F 82 85 87 89 8D 8F 91 94 97 psvx{}e燕書迫 00000170 : 99 9C 9E A1 A4 A6 A8 AB AE B0 B2 B6 B8 BA BD BF 劈棕............ 00000180 : C2 C5 C7 C9 CD CF D1 D3 D7 D9 DB DE E1 E3 E6 E8 ............矼跖 00000190 : EB EE F0 F2 F6 F8 FA FC 00 00 00 3A 4C 41 4D 45 ...........:LAME 000001A0 : 33 2E 39 33 20 01 AF 00 00 00 00 00 00 00 00 12 3.93 ........... 000001B0 : 80 24 05 28 4E 00 00 80 00 16 F0 A6 2A C1 0C EC .$.(N.......*... 000001C0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000200 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000210 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000220 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000230 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000240 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000250 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000260 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000270 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000280 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000290 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000002A0 : 00 FF FB 90 60 00 00 03 8D 85 BC 26 35 40 00 36 ...秦...劫.&5@.6 000002B0 : 8C 88 00 C1 08 00 0C E5 01 0D 5C D3 00 01 2F 96 決........\.../問 〜
この FFF〜 で始まるデータの固まり(上図の の部分)をフレームと呼びます。 MP3の音声データはこのフレームという単位で構成されています。 フレームは次々と連続して並んで現われ、これらをデコードして行くことで音声として再生されます。
各フレームのサイズはフレームヘッダー(先頭4バイト)にある情報から算出できます。
144 × ビットレート ÷ サンプリング周波数 (パディングビットが ON なら更に+1)
上図例の場合は 144 × 128000 ÷ 44100 ≒ 417 バイトとなります。(16進だと1A1)
CBRでは各フレームのサイズは全て同じになりますが、 VBRの場合はフレーム毎にビットレートが異なるので、サイズもフレーム毎に異なります。
MP3データ内で一番先頭にあるフレーム内に Info の文字列が見つかれば、 それは Lame でエンコードされた時に付加された CBR の Xingヘッダー です。 VBR でエンコードされた場合は Xing の文字列になります。
ID3v1タグ
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 〜 0016F1A0 : 55 55 55 55 55 55 54 41 47 53 61 6D 70 6C 65 20 UUUUUUTAGSample 0016F1B0 : 53 6F 6E 67 00 00 00 00 00 00 00 00 00 00 00 00 Song............ 0016F1C0 : 00 00 00 00 00 00 00 59 61 6D 61 74 61 6E 20 42 .......Yamatan B 0016F1D0 : 61 6E 64 00 00 00 00 00 00 00 00 00 00 00 00 00 and............. 0016F1E0 : 00 00 00 00 00 4D 50 33 6F 6E 33 00 00 00 00 00 .....MP3on3..... 0016F1F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0016F200 : 00 00 00 32 30 30 34 53 61 6D 70 6C 65 20 44 61 ...2004Sample Da 0016F210 : 74 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ta.............. 0016F220 : 00 00 00 00 06 11 ......
MP3ファイルの末尾から戻って128バイト目の位置に TAG の文字列が見つかれば、 ID3v1タグが付加されていると判断できます。(上図の )
Exact Audio Copy で作成
PERFORMER "Yamatan Band" TITLE "MusicPack 3on3" FILE "CDImage.mp3" WAVE TRACK 01 AUDIO TITLE "Null Pointer" PERFORMER "Yamatan Band" INDEX 01 00:00:00 TRACK 02 AUDIO TITLE "Don't Use GOTO" PERFORMER "Yamatan Band" INDEX 01 02:54:47 TRACK 03 AUDIO TITLE "Do While, Do Until" PERFORMER "Yamatan Band" INDEX 01 07:11:27 TRACK 04 AUDIO TITLE "Permanent Loop" PERFORMER "Yamatan Band" INDEX 01 09:26:53 TRACK 05 AUDIO TITLE "Stack Over Flow" PERFORMER "Yamatan Band" INDEX 01 12:40:21 TRACK 06 AUDIO TITLE "Memory Dump" PERFORMER "Yamatan Band" INDEX 01 16:20:13 TRACK 07 AUDIO TITLE "Debug & Recompile" PERFORMER "Yamatan Band" INDEX 01 19:42:11 TRACK 08 AUDIO TITLE "Abnormal Termination" PERFORMER "Yamatan Band" INDEX 01 24:11:55 TRACK 09 AUDIO TITLE "System Crash!" PERFORMER "Yamatan Band" INDEX 01 27:44:02 TRACK 10 AUDIO TITLE "Null Pointer(Reprise)" PERFORMER "Yamatan Band" INDEX 01 30:59:10
MusicPack 3on3 から Export
TITLE "MusicPack 3on3" PERFORMER "Yamatan Band" REM *** Generated by MusicPack 3on3 *** REM 128Kbps 44100Hz 80272frames REM Total Time 34:56:67 FILE "Yamatan Band - MusicPack 3on3.pac.mp3" MP3 TRACK 01 AUDIO TITLE "Null Pointer" PREGAP 00:00:00 INDEX 01 00:00:00 TRACK 02 AUDIO TITLE "Don't Use GOTO" INDEX 01 02:54:47 TRACK 03 AUDIO TITLE "Do While, Do Until" INDEX 01 07:11:27 TRACK 04 AUDIO TITLE "Permanent Loop" INDEX 01 09:26:53 TRACK 05 AUDIO TITLE "Stack Over Flow" INDEX 01 12:40:21 TRACK 06 AUDIO TITLE "Memory Dump" INDEX 01 16:20:13 TRACK 07 AUDIO TITLE "Debug & Recompile" INDEX 01 19:42:11 TRACK 08 AUDIO TITLE "Abnormal Termination" INDEX 01 24:11:55 TRACK 09 AUDIO TITLE "System Crash!" INDEX 01 27:44:02 TRACK 10 AUDIO TITLE "Null Pointer(Reprise)" INDEX 01 30:59:10
↑
・全トラックが同じPERFORMERなので省略
・REM(コメント)として追加情報を付加
アーティスト名(PERFORMER)曲名(TITLE)をトラック(TRACK)毎に分けて 再生開始時間(INDEX)を指定した一覧表がキューシートです。
MusicPack 3on3 で作成したりMP3のID3v2タグに埋め込む場合は右側の形式になります。 (ビットレート、サンプリング周波数、フレーム数、再生合計時間をコメント行(REM)に付加情報として追加)
ID3v2タグに埋め込む場合は GEOB フレームに設定しています。(下図の )
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF
00000000 : 49 44 33 03 00 00 00 00 08 3F 54 49 54 32 00 00 ID3......?TIT2.. 00000010 : 00 0F 00 00 00 4D 75 73 69 63 50 61 63 6B 20 33 .....MusicPack 3 00000020 : 6F 6E 33 54 50 45 31 00 00 00 0D 00 00 00 59 61 on3TPE1.......Ya 00000030 : 6D 61 74 61 6E 20 42 61 6E 64 47 45 4F 42 00 00 matan BandGEOB.. 00000040 : 04 05 00 00 00 74 65 78 74 00 6D 70 33 63 75 65 .....text.mp3cue 00000050 : 20 43 75 65 53 68 65 65 74 00 51 43 55 45 53 48 CueSheet.QCUESH 00000060 : 45 45 54 0D 0A 54 49 54 4C 45 20 22 4D 75 73 69 EET..TITLE "Musi 00000070 : 63 50 61 63 6B 20 33 6F 6E 33 22 0D 0A 50 45 52 cPack 3on3"..PER 00000080 : 46 4F 52 4D 45 52 20 22 59 61 6D 61 74 61 6E 20 FORMER "Yamatan 00000090 : 42 61 6E 64 22 0D 0A 52 45 4D 20 2A 2A 2A 20 47 Band"..REM *** G 000000A0 : 65 6E 65 72 61 74 65 64 20 62 79 20 4D 75 73 69 enerated by Musi 000000B0 : 63 50 61 63 6B 20 33 6F 6E 33 20 2A 2A 2A 0D 0A cPack 3on3 ***.. 000000C0 : 52 45 4D 20 31 32 38 4B 62 70 73 20 34 34 31 30 REM 128Kbps 4410 000000D0 : 30 48 7A 20 38 30 32 37 32 66 72 61 6D 65 73 0D 0Hz 80272frames. 000000E0 : 0A 52 45 4D 20 54 6F 74 61 6C 20 54 69 6D 65 20 .REM Total Time 000000F0 : 33 34 3A 35 36 3A 36 37 0D 0A 46 49 4C 45 20 22 34:56:67..FILE " 00000100 : 59 61 6D 61 74 61 6E 20 42 61 6E 64 20 2D 20 4D Yamatan Band - M 00000110 : 75 73 69 63 50 61 63 6B 20 33 6F 6E 33 2E 70 61 usicPack 3on3.pa 00000120 : 63 2E 6D 70 33 22 20 4D 50 33 0D 0A 20 20 54 52 c.mp3" MP3.. TR 00000130 : 41 43 4B 20 30 31 20 41 55 44 49 4F 0D 0A 20 20 ACK 01 AUDIO.. 00000140 : 20 20 54 49 54 4C 45 20 22 4E 75 6C 6C 20 50 6F TITLE "Null Po 00000150 : 69 6E 74 65 72 22 0D 0A 20 20 20 20 50 52 45 47 inter".. PREG 00000160 : 41 50 20 30 30 3A 30 30 3A 30 30 0D 0A 20 20 20 AP 00:00:00.. 00000170 : 20 49 4E 44 45 58 20 30 31 20 30 30 3A 30 30 3A INDEX 01 00:00: 00000180 : 30 30 0D 0A 20 20 54 52 41 43 4B 20 30 32 20 41 00.. TRACK 02 A 00000190 : 55 44 49 4F 0D 0A 20 20 20 20 54 49 54 4C 45 20 UDIO.. TITLE 000001A0 : 22 44 6F 6E 27 74 20 55 73 65 20 47 4F 54 4F 22 "Don't Use GOTO" 000001B0 : 0D 0A 20 20 20 20 49 4E 44 45 58 20 30 31 20 30 .. INDEX 01 0 000001C0 : 32 3A 35 34 3A 34 37 0D 0A 20 20 54 52 41 43 4B 2:54:47.. TRACK 000001D0 : 20 30 33 20 41 55 44 49 4F 0D 0A 20 20 20 20 54 03 AUDIO.. T 000001E0 : 49 54 4C 45 20 22 44 6F 20 57 68 69 6C 65 2C 20 ITLE "Do While, 000001F0 : 44 6F 20 55 6E 74 69 6C 22 0D 0A 20 20 20 20 49 Do Until".. I 00000200 : 4E 44 45 58 20 30 31 20 30 37 3A 31 31 3A 32 37 NDEX 01 07:11:27 00000210 : 0D 0A 20 20 54 52 41 43 4B 20 30 34 20 41 55 44 .. TRACK 04 AUD 00000220 : 49 4F 0D 0A 20 20 20 20 54 49 54 4C 45 20 22 50 IO.. TITLE "P 00000230 : 65 72 6D 61 6E 65 6E 74 20 4C 6F 6F 70 22 0D 0A ermanent Loop".. 00000240 : 20 20 20 20 49 4E 44 45 58 20 30 31 20 30 39 3A INDEX 01 09: 00000250 : 32 36 3A 35 33 0D 0A 20 20 54 52 41 43 4B 20 30 26:53.. TRACK 0 00000260 : 35 20 41 55 44 49 4F 0D 0A 20 20 20 20 54 49 54 5 AUDIO.. TIT 00000270 : 4C 45 20 22 53 74 61 63 6B 20 4F 76 65 72 20 46 LE "Stack Over F 00000280 : 6C 6F 77 22 0D 0A 20 20 20 20 49 4E 44 45 58 20 low".. INDEX 00000290 : 30 31 20 31 32 3A 34 30 3A 32 31 0D 0A 20 20 54 01 12:40:21.. T 000002A0 : 52 41 43 4B 20 30 36 20 41 55 44 49 4F 0D 0A 20 RACK 06 AUDIO.. 000002B0 : 20 20 20 54 49 54 4C 45 20 22 4D 65 6D 6F 72 79 TITLE "Memory 000002C0 : 20 44 75 6D 70 22 0D 0A 20 20 20 20 49 4E 44 45 Dump".. INDE 000002D0 : 58 20 30 31 20 31 36 3A 32 30 3A 31 33 0D 0A 20 X 01 16:20:13.. 000002E0 : 20 54 52 41 43 4B 20 30 37 20 41 55 44 49 4F 0D TRACK 07 AUDIO. 000002F0 : 0A 20 20 20 20 54 49 54 4C 45 20 22 44 65 62 75 . TITLE "Debu 00000300 : 67 20 26 20 52 65 63 6F 6D 70 69 6C 65 22 0D 0A g & Recompile".. 00000310 : 20 20 20 20 49 4E 44 45 58 20 30 31 20 31 39 3A INDEX 01 19: 00000320 : 34 32 3A 31 31 0D 0A 20 20 54 52 41 43 4B 20 30 42:11.. TRACK 0 00000330 : 38 20 41 55 44 49 4F 0D 0A 20 20 20 20 54 49 54 8 AUDIO.. TIT 00000340 : 4C 45 20 22 41 62 6E 6F 72 6D 61 6C 20 54 65 72 LE "Abnormal Ter 00000350 : 6D 69 6E 61 74 69 6F 6E 22 0D 0A 20 20 20 20 49 mination".. I 00000360 : 4E 44 45 58 20 30 31 20 32 34 3A 31 31 3A 35 35 NDEX 01 24:11:55 00000370 : 0D 0A 20 20 54 52 41 43 4B 20 30 39 20 41 55 44 .. TRACK 09 AUD 00000380 : 49 4F 0D 0A 20 20 20 20 54 49 54 4C 45 20 22 53 IO.. TITLE "S 00000390 : 79 73 74 65 6D 20 43 72 61 73 68 21 22 0D 0A 20 ystem Crash!".. 000003A0 : 20 20 20 49 4E 44 45 58 20 30 31 20 32 37 3A 34 INDEX 01 27:4 000003B0 : 34 3A 30 32 0D 0A 20 20 54 52 41 43 4B 20 31 30 4:02.. TRACK 10 000003C0 : 20 41 55 44 49 4F 0D 0A 20 20 20 20 54 49 54 4C AUDIO.. TITL 000003D0 : 45 20 22 4E 75 6C 6C 20 50 6F 69 6E 74 65 72 28 E "Null Pointer( 000003E0 : 52 65 70 72 69 73 65 29 22 0D 0A 20 20 20 20 49 Reprise)".. I 000003F0 : 4E 44 45 58 20 30 31 20 33 30 3A 35 39 3A 31 30 NDEX 01 30:59:10 00000400 : 0D 0A 45 4E 44 43 55 45 53 48 45 45 54 43 55 45 ..ENDCUESHEETCUE 00000410 : 56 45 52 53 49 4F 4E 0D 0A 4D 75 73 69 63 50 61 VERSION..MusicPa 00000420 : 63 6B 20 33 6F 6E 33 45 4E 44 43 55 45 56 45 52 ck 3on3ENDCUEVER 00000430 : 53 49 4F 4E 43 55 45 49 4E 46 4F 0D 0A 45 4E 44 SIONCUEINFO..END 00000440 : 43 55 45 49 4E 46 4F 0D 0A 50 61 63 6B 00 00 05 CUEINFO..Pack... 〜
GEOB フレーム内で の部分がキューシートのテキストデータです。
埋め込まれたキューシートの部分はテキストビューア等でも参照できます。
ID3・ ・?TIT2 ・ MusicPack 3on3TPE1 Yamatan BandGEOB ・・ text mp3cue CueSheet QCUESHEET TITLE "MusicPack 3on3" PERFORMER "Yamatan Band" REM *** Generated by MusicPack 3on3 *** REM 128Kbps 44100Hz 80272frames REM Total Time 34:56:67 FILE "Yamatan Band - MusicPack 3on3.pac.mp3" MP3 TRACK 01 AUDIO TITLE "Null Pointer" PREGAP 00:00:00 INDEX 01 00:00:00 TRACK 02 AUDIO TITLE "Don't Use GOTO" INDEX 01 02:54:47 TRACK 03 AUDIO TITLE "Do While, Do Until" INDEX 01 07:11:27 TRACK 04 AUDIO TITLE "Permanent Loop" INDEX 01 09:26:53 TRACK 05 AUDIO TITLE "Stack Over Flow" INDEX 01 12:40:21 TRACK 06 AUDIO TITLE "Memory Dump" INDEX 01 16:20:13 TRACK 07 AUDIO TITLE "Debug & Recompile" INDEX 01 19:42:11 TRACK 08 AUDIO TITLE "Abnormal Termination" INDEX 01 24:11:55 TRACK 09 AUDIO TITLE "System Crash!" INDEX 01 27:44:02 TRACK 10 AUDIO TITLE "Null Pointer(Reprise)" INDEX 01 30:59:10 ENDCUESHEETCUEVERSION MusicPack 3on3ENDCUEVERSIONCUEINFO ENDCUEINFO Pack ・Q 〜
ID3v2タグ
(Cueシート含む)P
a
c
k
Pack ヘッダー 曲データ1 曲データ2 : 曲データn Pack フッター ID3v1タグ ・ID3v2タグ付きの場合 (→参照) ・各曲データの情報を保持(後述) ・通常のMP3ファイル (→参照) ・各曲データの間は全て切れ目なく繋がった状態 ・128バイト以上のデータ(後述) ・ID3v1タグ付きの場合 (→参照)
各曲データを切れ目なく連結させて、ヘッダーとフッターを前後に付加した形式です。 各曲の先頭位置(Pack 文字列を起点とした相対位置)はヘッダーに保持してあります。 (その他詳しい説明は Pack詳細 を参照)
Packヘッダー
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 〜 00000440 : 43 55 45 49 4E 46 4F 0D 0A 50 61 63 6B 00 00 05 CUEINFO..Pack... 00000450 : 51 00 0A 00 08 4D 75 73 69 63 50 61 63 6B 20 33 Q....MusicPack 3 00000460 : 6F 6E 33 00 00 00 09 02 59 61 6D 61 74 61 6E 20 on3.....Yamatan 00000470 : 42 61 6E 64 20 2D 20 4E 75 6C 6C 20 50 6F 69 6E Band - Null Poin 00000480 : 74 65 72 2E 6D 70 33 00 59 61 6D 61 74 61 6E 20 ter.mp3.Yamatan 00000490 : 42 61 6E 64 00 4E 75 6C 6C 20 50 6F 69 6E 74 65 Band.Null Pointe 000004A0 : 72 00 01 2A 4F 4E 59 61 6D 61 74 61 6E 20 42 61 r..*ONYamatan Ba 000004B0 : 6E 64 20 2D 20 44 6F 6E 27 74 20 55 73 65 20 47 nd - Don't Use G 000004C0 : 4F 54 4F 2E 6D 70 33 00 59 61 6D 61 74 61 6E 20 OTO.mp3.Yamatan 000004D0 : 42 61 6E 64 00 44 6F 6E 27 74 20 55 73 65 20 47 Band.Don't Use G 000004E0 : 4F 54 4F 00 03 25 2D 09 59 61 6D 61 74 61 6E 20 OTO..%-.Yamatan 000004F0 : 42 61 6E 64 20 2D 20 44 6F 20 57 68 69 6C 65 2C Band - Do While, 00000500 : 20 44 6F 20 55 6E 74 69 6C 2E 6D 70 33 00 59 61 Do Until.mp3.Ya 00000510 : 6D 61 74 61 6E 20 42 61 6E 64 00 44 6F 20 57 68 matan Band.Do Wh 00000520 : 69 6C 65 2C 20 44 6F 20 55 6E 74 69 6C 00 04 29 ile, Do Until..) 00000530 : 44 58 59 61 6D 61 74 61 6E 20 42 61 6E 64 20 2D DXYamatan Band - 00000540 : 20 50 65 72 6D 61 6E 65 6E 74 20 4C 6F 6F 70 2E Permanent Loop. 00000550 : 6D 70 33 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 mp3.Yamatan Band 00000560 : 00 50 65 72 6D 61 6E 65 6E 74 20 4C 6F 6F 70 00 .Permanent Loop. 00000570 : 05 66 4A 52 59 61 6D 61 74 61 6E 20 42 61 6E 64 .fJRYamatan Band 00000580 : 20 2D 20 53 74 61 63 6B 20 4F 76 65 72 20 46 6C - Stack Over Fl 00000590 : 6F 77 2E 6D 70 33 00 59 61 6D 61 74 61 6E 20 42 ow.mp3.Yamatan B 000005A0 : 61 6E 64 00 53 74 61 63 6B 20 4F 76 65 72 20 46 and.Stack Over F 000005B0 : 6C 6F 77 00 07 3D 2C 04 59 61 6D 61 74 61 6E 20 low..=,.Yamatan 000005C0 : 42 61 6E 64 20 2D 20 4D 65 6D 6F 72 79 20 44 75 Band - Memory Du 000005D0 : 6D 70 2E 6D 70 33 00 59 61 6D 61 74 61 6E 20 42 mp.mp3.Yamatan B 000005E0 : 61 6E 64 00 4D 65 6D 6F 72 79 20 44 75 6D 70 00 and.Memory Dump. 000005F0 : 09 02 4D 32 59 61 6D 61 74 61 6E 20 42 61 6E 64 ..M2Yamatan Band 00000600 : 20 2D 20 44 65 62 75 67 20 26 20 52 65 63 6F 6D - Debug & Recom 00000610 : 70 69 6C 65 2E 6D 70 33 00 59 61 6D 61 74 61 6E pile.mp3.Yamatan 00000620 : 20 42 61 6E 64 00 44 65 62 75 67 20 26 20 52 65 Band.Debug & Re 00000630 : 63 6F 6D 70 69 6C 65 00 0B 09 71 34 59 61 6D 61 compile...q4Yama 00000640 : 74 61 6E 20 42 61 6E 64 20 2D 20 41 62 6E 6F 72 tan Band - Abnor 00000650 : 6D 61 6C 20 54 65 72 6D 69 6E 61 74 69 6F 6E 2E mal Termination. 00000660 : 6D 70 33 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 mp3.Yamatan Band 00000670 : 00 41 62 6E 6F 72 6D 61 6C 20 54 65 72 6D 69 6E .Abnormal Termin 00000680 : 61 74 69 6F 6E 00 0C 59 1C 51 59 61 6D 61 74 61 ation..Y.QYamata 00000690 : 6E 20 42 61 6E 64 20 2D 20 53 79 73 74 65 6D 20 n Band - System 000006A0 : 43 72 61 73 68 21 2E 6D 70 33 00 59 61 6D 61 74 Crash!.mp3.Yamat 000006B0 : 61 6E 20 42 61 6E 64 00 53 79 73 74 65 6D 20 43 an Band.System C 000006C0 : 72 61 73 68 21 00 0E 17 63 1E 59 61 6D 61 74 61 rash!...c.Yamata 000006D0 : 6E 20 42 61 6E 64 20 2D 20 4E 75 6C 6C 20 50 6F n Band - Null Po 000006E0 : 69 6E 74 65 72 28 52 65 70 72 69 73 65 29 2E 6D inter(Reprise).m 000006F0 : 70 33 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 00 p3.Yamatan Band. 00000700 : 4E 75 6C 6C 20 50 6F 69 6E 74 65 72 28 52 65 70 Null Pointer(Rep 00000710 : 72 69 73 65 29 00 0F 7F 7E 12 00 00 00 00 00 00 rise)..~....... 00000720 : 00 00 00 00 03 21 00 00 00 00 FF FB 90 40 00 00 .....!......拭.. 00000730 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000740 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 49 6E ..............In 00000750 : 66 6F 00 00 00 03 00 01 39 90 01 FF F1 F0 00 00 fo......9....... 00000760 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000770 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000780 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000790 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000007A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000007B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000007C0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000007D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000007E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000007F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000800 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000810 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000820 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000830 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000840 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000850 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000860 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000870 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000880 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000890 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000008A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000008B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000008C0 : 00 00 00 00 00 00 00 00 00 00 00 49 44 33 03 00 ...........ID3.. 〜
ID3v2タグの後ろ、またはMP3ファイルの曲データの前に Pack の文字列が見つかったら、 そこからPackヘッダーが始まります。(上図の )
Packヘッダーには各曲データの先頭バイト位置、ファイル名、アーティスト名/タイトルを保持しています。 アーティスト名/タイトルはプレイリスト内での表示にも利用されます。
また、パック化MP3全体に対するXingヘッダーを付けた場合は、 Packヘッダーの末尾にフレームの形式で設定されます。 (上図でも FFF〜 の同期ワードと Info の文字列が確認できます)
その他の説明については Pack詳細 を参照してください。
Packフッター
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 〜 020002D0 : AA AA AA AA AA AA AA AA AA AA AA 54 41 47 4E 75 ...........TAGNu 020002E0 : 6C 6C 20 50 6F 69 6E 74 65 72 28 52 65 70 72 69 ll Pointer(Repri 020002F0 : 73 65 29 00 00 00 00 00 00 00 00 00 59 61 6D 61 se).........Yama 02000300 : 74 61 6E 20 42 61 6E 64 00 00 00 00 00 00 00 00 tan Band........ 02000310 : 00 00 00 00 00 00 00 00 00 00 4D 75 73 69 63 50 ..........MusicP 02000320 : 61 63 6B 20 33 6F 6E 33 00 00 00 00 00 00 00 00 ack 3on3........ 02000330 : 00 00 00 00 00 00 00 00 32 30 30 34 00 00 00 00 ........2004.... 02000340 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000350 : 00 00 00 00 00 00 00 00 00 0A 11 0D 0A 3D 3D 3D .............=== 02000360 : 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ================ 02000370 : 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ================ 02000380 : 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ================ 02000390 : 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ================ 020003A0 : 3D 3D 3D 0D 0A 45 6E 64 20 6F 66 20 50 61 63 6B ===..End of Pack 020003B0 : 65 64 20 4D 50 33 20 20 2D 20 47 65 6E 65 72 61 ed MP3 - Genera 020003C0 : 74 65 64 20 62 79 20 22 4D 75 73 69 63 50 61 63 ted by "MusicPac 020003D0 : 6B 20 33 6F 6E 33 22 20 2D 0D 0A k 3on3" -..
パック化MP3内の最後の曲データの後から始まる128バイト以上のデータです。(上図の )
最低でも128バイトの領域を確保しているのは、 最後の曲データにID3v1タグ(128バイト)が付いていた場合に、 パック化MP3全体のID3v1タグと誤って認識されてしまうのを防ぐためです。
その他の情報が付加される場合もありますが、それらの説明については Pack詳細 を参照してください。
ID3v2タグ
(Cueシート含む)Z
I
P
Local File Header 曲データ1 Local File Header 曲データ2 Local File Header : Local File Header 曲データn Central Directory
:
(n個分存在)End of Central
Directory RecordID3v1タグ ・ID3v2タグ付きの場合 (→参照) ・各曲データの前には全てヘッダーが付いている ・通常のMP3ファイルを無圧縮データとして保持 (→参照) ・保持している件数分存在 ・最後に存在 ・ID3v1タグ付きの場合 (→参照)
ID3タグ以外は通常のZIPファイルと同じ形式です。 ID3タグを付加した場合は正常なZIPファイルの形式ではなくなるため、 一部のアーカイバでは解凍できなくなります。
Local File Header
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 00000000 : 50 4B 03 04 0A 00 00 00 00 00 F4 8A 50 30 79 57 PK.........咳0yW 00000010 : 83 EE 4C A3 2A 00 4C A3 2A 00 1F 00 00 00 59 61 L.*.L.*.....Ya 00000020 : 6D 61 74 61 6E 20 42 61 6E 64 20 2D 20 4E 75 6C matan Band - Nul 00000030 : 6C 20 50 6F 69 6E 74 65 72 2E 6D 70 33 49 44 33 l Pointer.mp3ID3 00000040 : 03 00 00 00 00 00 79 54 50 45 31 00 00 00 0D 00 ......yTPE1..... 00000050 : 00 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 54 49 ..Yamatan BandTI 00000060 : 54 32 00 00 00 0D 00 00 00 4E 75 6C 6C 20 50 6F T2.......Null Po 00000070 : 69 6E 74 65 72 54 41 4C 42 00 00 00 0F 00 00 00 interTALB....... 00000080 : 4D 75 73 69 63 50 61 63 6B 20 33 6F 6E 33 54 52 MusicPack 3on3TR 00000090 : 43 4B 00 00 00 06 00 00 00 30 31 2F 31 30 54 59 CK.......01/10TY 000000A0 : 45 52 00 00 00 05 00 00 00 32 30 30 34 54 43 4F ER.......2004TCO 000000B0 : 4E 00 00 00 09 00 00 00 28 31 37 29 52 6F 63 6B N.......(17)Rock 000000C0 : FF FB 90 64 00 00 00 00 00 69 06 00 00 00 00 00 ..薪.....i...... 000000D0 : 0D 20 C0 00 00 00 00 01 A4 1C 00 00 00 00 00 34 . .............4 〜 MP3データ 〜 002AA300 : 55 55 55 55 55 55 55 55 55 54 41 47 4E 75 6C 6C UUUUUUUUUTAGNull 002AA310 : 20 50 6F 69 6E 74 65 72 00 00 00 00 00 00 00 00 Pointer........ 002AA320 : 00 00 00 00 00 00 00 00 00 00 59 61 6D 61 74 61 ..........Yamata 002AA330 : 6E 20 42 61 6E 64 00 00 00 00 00 00 00 00 00 00 n Band.......... 002AA340 : 00 00 00 00 00 00 00 00 4D 75 73 69 63 50 61 63 ........MusicPac 002AA350 : 6B 20 33 6F 6E 33 00 00 00 00 00 00 00 00 00 00 k 3on3.......... 002AA360 : 00 00 00 00 00 00 32 30 30 34 00 00 00 00 00 00 ......2004...... 002AA370 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 002AA380 : 00 00 00 00 00 00 00 01 11 50 4B 03 04 0A 00 00 .........PK..... 〜
格納された各曲(ファイル)の前には Local File Header が付けられます。(上図の )
PK という文字列とその後に 03 04 の16進数が見つかれば、 その位置が Local File Header の先頭になります。 ここに格納された各ファイルの情報(ファイル名、サイズ、圧縮率 etc...)が保持されています。(詳細は省略)
その後に格納されたMP3ファイルの曲データが続きます。 無圧縮なのでデータはそのままの状態で保存されています。 上図でもID3タグの識別子(ID3 TAG)やフレームの同期ワード(FFF〜)が確認できます。
データが終わればまた Local File Header が現われます。 これが格納されたファイルの数だけ繰り返されます。
Central Directory 〜 End of Central Directory Record
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 〜 01FFFD00 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01FFFD10 : 00 00 00 0A 11 50 4B 01 02 17 0B 0A 00 00 00 00 .....PK......... 01FFFD20 : 00 F4 8A 50 30 79 57 83 EE 4C A3 2A 00 4C A3 2A ..咳0yWL.*.L.* 01FFFD30 : 00 1F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01FFFD40 : 00 00 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 20 ...Yamatan Band 01FFFD50 : 2D 20 4E 75 6C 6C 20 50 6F 69 6E 74 65 72 2E 6D - Null Pointer.m 01FFFD60 : 70 33 50 4B 01 02 17 0B 0A 00 00 00 00 00 F4 8A p3PK...........咳 01FFFD70 : 50 30 1B 35 2A 4D BB AE 3E 00 BB AE 3E 00 21 00 P0.5*M..>...>.!. 01FFFD80 : 00 00 00 00 00 00 00 00 00 00 00 00 89 A3 2A 00 ............殴*. 01FFFD90 : 59 61 6D 61 74 61 6E 20 42 61 6E 64 20 2D 20 44 Yamatan Band - D 01FFFDA0 : 6F 6E 27 74 20 55 73 65 20 47 4F 54 4F 2E 6D 70 on't Use GOTO.mp 01FFFDB0 : 33 50 4B 01 02 17 0B 0A 00 00 00 00 00 F5 8A 50 3PK...........咳 01FFFDC0 : 30 4A 63 4E 1F CF 0B 21 00 CF 0B 21 00 25 00 00 0JcN...!...!.%.. 01FFFDD0 : 00 00 00 00 00 00 00 00 00 00 00 83 52 69 00 59 ...........コi.Y 01FFFDE0 : 61 6D 61 74 61 6E 20 42 61 6E 64 20 2D 20 44 6F amatan Band - Do 01FFFDF0 : 20 57 68 69 6C 65 2C 20 44 6F 20 55 6E 74 69 6C While, Do Until 01FFFE00 : 2E 6D 70 33 50 4B 01 02 17 0B 0A 00 00 00 00 00 .mp3PK.......... 01FFFE10 : F5 8A 50 30 70 56 12 80 FA 42 2F 00 FA 42 2F 00 .咳0pV...B/..B/. 01FFFE20 : 21 00 00 00 00 00 00 00 00 00 00 00 00 00 95 5E !.............豹 01FFFE30 : 8A 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 20 2D ..Yamatan Band - 01FFFE40 : 20 50 65 72 6D 61 6E 65 6E 74 20 4C 6F 6F 70 2E Permanent Loop. 01FFFE50 : 6D 70 33 50 4B 01 02 17 0B 0A 00 00 00 00 00 F5 mp3PK.......... 01FFFE60 : 8A 50 30 29 70 0D 6C B2 B0 35 00 B2 B0 35 00 22 咳0)p.l..5...5." 01FFFE70 : 00 00 00 00 00 00 00 00 00 00 00 00 00 CE A1 B9 ................ 01FFFE80 : 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 20 2D 20 .Yamatan Band - 01FFFE90 : 53 74 61 63 6B 20 4F 76 65 72 20 46 6C 6F 77 2E Stack Over Flow. 01FFFEA0 : 6D 70 33 50 4B 01 02 17 0B 0A 00 00 00 00 00 F5 mp3PK.......... 01FFFEB0 : 8A 50 30 8C 0D 9C 88 AE 50 31 00 AE 50 31 00 1E 咳0..怦.P1..P1.. 01FFFEC0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 C0 52 EF ..............Rナ 01FFFED0 : 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 20 2D 20 .Yamatan Band - 01FFFEE0 : 4D 65 6D 6F 72 79 20 44 75 6D 70 2E 6D 70 33 50 Memory Dump.mp3P 01FFFEF0 : 4B 01 02 17 0B 0A 00 00 00 00 00 F5 8A 50 30 0E K...........咳0. 01FFFF00 : D8 DF E6 02 D2 41 00 02 D2 41 00 24 00 00 00 00 .....A...A.$.... 01FFFF10 : 00 00 00 00 00 00 00 00 00 AA A3 20 01 59 61 6D ........... .Yam 01FFFF20 : 61 74 61 6E 20 42 61 6E 64 20 2D 20 44 65 62 75 atan Band - Debu 01FFFF30 : 67 20 26 20 52 65 63 6F 6D 70 69 6C 65 2E 6D 70 g & Recompile.mp 01FFFF40 : 33 50 4B 01 02 17 0B 0A 00 00 00 00 00 F5 8A 50 3PK...........咳 01FFFF50 : 30 FE 8A 8C 32 9D D5 33 00 9D D5 33 00 27 00 00 0.褐2旌3.旌3.'.. 01FFFF60 : 00 00 00 00 00 00 00 00 00 00 00 EE 75 62 01 59 ............ub.Y 01FFFF70 : 61 6D 61 74 61 6E 20 42 61 6E 64 20 2D 20 41 62 amatan Band - Ab 01FFFF80 : 6E 6F 72 6D 61 6C 20 54 65 72 6D 69 6E 61 74 69 normal Terminati 01FFFF90 : 6F 6E 2E 6D 70 33 50 4B 01 02 17 0B 0A 00 00 00 on.mp3PK........ 01FFFFA0 : 00 00 F5 8A 50 30 30 B5 BE 11 4D A3 2F 00 4D A3 ...咳00...M./.M. 01FFFFB0 : 2F 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 /. ............. 01FFFFC0 : D0 4B 96 01 59 61 6D 61 74 61 6E 20 42 61 6E 64 .K..Yamatan Band 01FFFFD0 : 20 2D 20 53 79 73 74 65 6D 20 43 72 61 73 68 21 - System Crash! 01FFFFE0 : 2E 6D 70 33 50 4B 01 02 17 0B 0A 00 00 00 00 00 .mp3PK.......... 01FFFFF0 : F5 8A 50 30 B4 AA 43 7B 74 0D 3A 00 74 0D 3A 00 .咳0..C{t.:.t.:. 02000000 : 28 00 00 00 00 00 00 00 00 00 00 00 00 00 5B EF (.............[ナ 02000010 : C5 01 59 61 6D 61 74 61 6E 20 42 61 6E 64 20 2D ..Yamatan Band - 02000020 : 20 4E 75 6C 6C 20 50 6F 69 6E 74 65 72 28 52 65 Null Pointer(Re 02000030 : 70 72 69 73 65 29 2E 6D 70 33 50 4B 05 06 00 00 prise).mp3PK.... 02000040 : 00 00 0A 00 0A 00 25 03 00 00 15 FD FF 01 00 00 ......%.........
全ての格納ファイルの後には、そのファイル数分の Central Directory があります。(PK & 01 02)
更にその後の一番最後には End of Central Directory Record が付けられます。(PK & 05 06)
ID3v2タグ
(Cueシート含む)L
H
A
Level-2 Header 曲データ1 Level-2 Header 曲データ2 Level-2 Header : Level-2 Header 曲データn ID3v1タグ ・ID3v2タグ付きの場合 (→参照) ・各曲データの前には全てヘッダーが付いている ・通常のMP3ファイルを無圧縮データとして保持 (→参照) ・ID3v1タグ付きの場合 (→参照)
ID3タグ以外は通常のレベル2ヘッダのLHAファイルと同じ形式です。
Level-2 Header
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 00000000 : 3C 00 2D 6C 68 30 2D 4C A3 2A 00 4C A3 2A 00 0C <.-lh0-L.*.L.*.. 00000010 : 7E 30 40 20 02 66 54 4D 22 00 01 59 61 6D 61 74 ~0@ .fTM"..Yamat 00000020 : 61 6E 20 42 61 6E 64 20 2D 20 4E 75 6C 6C 20 50 an Band - Null P 00000030 : 6F 69 6E 74 65 72 2E 6D 70 33 00 00 49 44 33 03 ointer.mp3..ID3. 00000040 : 00 00 00 00 00 79 54 50 45 31 00 00 00 0D 00 00 .....yTPE1...... 00000050 : 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 54 49 54 .Yamatan BandTIT 00000060 : 32 00 00 00 0D 00 00 00 4E 75 6C 6C 20 50 6F 69 2.......Null Poi 00000070 : 6E 74 65 72 54 41 4C 42 00 00 00 0F 00 00 00 4D nterTALB.......M 00000080 : 75 73 69 63 50 61 63 6B 20 33 6F 6E 33 54 52 43 usicPack 3on3TRC 00000090 : 4B 00 00 00 06 00 00 00 30 31 2F 31 30 54 59 45 K.......01/10TYE 000000A0 : 52 00 00 00 05 00 00 00 32 30 30 34 54 43 4F 4E R.......2004TCON 000000B0 : 00 00 00 09 00 00 00 28 31 37 29 52 6F 63 6B FF .......(17)Rock. 000000C0 : FB 90 64 00 00 00 00 00 69 06 00 00 00 00 00 0D .薪.....i....... 000000D0 : 20 C0 00 00 00 00 01 A4 1C 00 00 00 00 00 34 83 .............4ム 〜 MP3データ 〜 002AA300 : 55 55 55 55 55 55 55 55 54 41 47 4E 75 6C 6C 20 UUUUUUUUTAGNull 002AA310 : 50 6F 69 6E 74 65 72 00 00 00 00 00 00 00 00 00 Pointer......... 002AA320 : 00 00 00 00 00 00 00 00 00 59 61 6D 61 74 61 6E .........Yamatan 002AA330 : 20 42 61 6E 64 00 00 00 00 00 00 00 00 00 00 00 Band........... 002AA340 : 00 00 00 00 00 00 00 4D 75 73 69 63 50 61 63 6B .......MusicPack 002AA350 : 20 33 6F 6E 33 00 00 00 00 00 00 00 00 00 00 00 3on3........... 002AA360 : 00 00 00 00 00 32 30 30 34 00 00 00 00 00 00 00 .....2004....... 002AA370 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 002AA380 : 00 00 00 00 00 00 01 11 3E 00 2D 6C 68 30 2D BB ........>.-lh0-. 〜
格納された各曲(ファイル)の前には Level-2 Header が付けられます。(上図の )
-lh0- という文字列が無圧縮LHAの識別子で、 その2バイト前が Level-2 Header の先頭になります。 ここに格納された各ファイルの情報(ファイル名、サイズ etc...)が保持されています。(詳細は省略)
その後に格納されたMP3ファイルの曲データが続きます。 無圧縮なのでデータはそのままの状態で保存されています。 上図でもID3タグの識別子(ID3 TAG)やフレームの同期ワード(FFF〜)が確認できます。
データが終わればまた Level-2 Header が現われます。 これが格納されたファイルの数だけ繰り返されます。
Pack ヘッダー (拡張領域) 曲データ : 曲データ (拡張領域) Pack フッター ・Packに関する情報を保持 ・各曲に関する情報を保持 ・Xingヘッダー ・無音フレーム×n ・無音フレーム×n ・合計128バイト以上のデータ
Packヘッダー
P a c k
サイズ
曲数
フラグ
アルバムタイトル \0
オフセット
ファイル名 \0
アーティスト名 \0
曲タイトル \0 :
( 繰り返し = 曲数 )
:
オフセット
ファイル名 \0
アーティスト名 \0
曲タイトル \0
オフセット
項 目 長 さ 解 説 "Pack" 4バイト Packヘッダーの起点を示す識別子(固定)
サイズ 4バイト 拡張領域を除いたPackヘッダーのサイズ(シンクセーフ整数)
曲数 2バイト パック化した曲数(シンクセーフ整数)
フラグ 2バイト 0000000 00111011 (ビット情報) ||| || ||| |+-- 0x01 … Not Synchsafe ||| +--- 0x02 … Entire (by Cue Sheet) ||| ||+----- 0x08 … Xing Header |+------ 0x10 … Silent Frame (Top) +------- 0x20 … Silent Frame (Last)アルバム
タイトル可変長 アルバムとしてパック化したMP3に付与したタイトル
(終端が \0 の文字列)
オフセット 4バイト 各曲データ先頭のPackヘッダー起点からの相対バイト数
(フラグの Not Synchsafe が OFF ならシンクセーフ整数)
最後の オフセット はPackフッターの先頭位置を示す
ファイル名 可変長 パック化した各MP3のファイル名
(終端が \0 の文字列)
アーティスト名 可変長 パック化した各MP3ファイルのアーティスト名
(終端が \0 の文字列)
曲タイトル 可変長 パック化した各MP3ファイルの曲タイトル
(終端が \0 の文字列)
Packヘッダー(拡張領域)
(※フラグの Xing Header または Silent Frame (Top) が ON の場合のみ存在)
*1 先頭無音フレーム数 *3 下記 *4 *5 領域の合計サイズ
*1
*2
予備
*3
予備
*2 末尾無音フレーム数
Xingヘッダー (*4)
先頭無音フレーム (*5)
項 目 長 さ 解 説 先頭無音
フレーム数2バイト パック化MP3の先頭に付けた無音フレームの数
末尾無音
フレーム数2バイト パック化MP3の末尾に付けた無音フレームの数
予備 4バイト 下記*4*5領域
の合計サイズ4バイト Xingヘッダーと先頭無音フレームの合計サイズ
(シンクセーフ整数)
予備 4バイト Xing (*4)
ヘッダー可変長 パック化MP3ファイル全体に対するXingヘッダー
フラグの Xing Header ON の場合のみ存在
先頭無音
フレーム (*5)可変長 パック化MP3ファイルの先頭に付加した無音フレーム
フラグの Silent Frame (Top) が ON の場合のみ存在
Packフッター(拡張領域も含む)
末尾無音フレーム
\r \n
サイズ
==================================================================
\r \n
End of Packed MP3 - Generated by "MusicPack 3on3" -
\r \n
項 目 長 さ 解 説 末尾無音
フレーム可変長 パック化MP3ファイルの末尾に付加した無音フレーム
フラグの Silent Frame (Last) が ON の場合のみ存在
\r\n 2バイト 改行
サイズ 4バイト 末尾無音フレームのサイズ(シンクセーフ整数)
末尾無音フレームが存在しない場合は文字列 "===="
文字列 122
バイト\r\n サイズ と合わせて 計128バイトの領域を確保
ADDRESS +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 00000440 : 43 55 45 49 4E 46 4F 0D 0A 50 61 63 6B 00 00 05 CUEINFO..Pack... 00000450 : 51 00 0A 00 38 4D 75 73 69 63 50 61 63 6B 20 33 Q...8MusicPack 3 00000460 : 6F 6E 33 00 00 00 12 65 59 61 6D 61 74 61 6E 20 on3....eYamatan 00000470 : 42 61 6E 64 20 2D 20 4E 75 6C 6C 20 50 6F 69 6E Band - Null Poin 00000480 : 74 65 72 2E 6D 70 33 00 59 61 6D 61 74 61 6E 20 ter.mp3.Yamatan 00000490 : 42 61 6E 64 00 4E 75 6C 6C 20 50 6F 69 6E 74 65 Band.Null Pointe 000004A0 : 72 00 01 2A 59 31 59 61 6D 61 74 61 6E 20 42 61 r..*Y1Yamatan Ba 000004B0 : 6E 64 20 2D 20 44 6F 6E 27 74 20 55 73 65 20 47 nd - Don't Use G 000004C0 : 4F 54 4F 2E 6D 70 33 00 59 61 6D 61 74 61 6E 20 OTO.mp3.Yamatan 000004D0 : 42 61 6E 64 00 44 6F 6E 27 74 20 55 73 65 20 47 Band.Don't Use G 000004E0 : 4F 54 4F 00 03 25 36 6C 59 61 6D 61 74 61 6E 20 OTO..%6lYamatan 000004F0 : 42 61 6E 64 20 2D 20 44 6F 20 57 68 69 6C 65 2C Band - Do While, 00000500 : 20 44 6F 20 55 6E 74 69 6C 2E 6D 70 33 00 59 61 Do Until.mp3.Ya 00000510 : 6D 61 74 61 6E 20 42 61 6E 64 00 44 6F 20 57 68 matan Band.Do Wh 00000520 : 69 6C 65 2C 20 44 6F 20 55 6E 74 69 6C 00 04 29 ile, Do Until..) 00000530 : 4E 3B 59 61 6D 61 74 61 6E 20 42 61 6E 64 20 2D N;Yamatan Band - 00000540 : 20 50 65 72 6D 61 6E 65 6E 74 20 4C 6F 6F 70 2E Permanent Loop. 00000550 : 6D 70 33 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 mp3.Yamatan Band 00000560 : 00 50 65 72 6D 61 6E 65 6E 74 20 4C 6F 6F 70 00 .Permanent Loop. 00000570 : 05 66 54 35 59 61 6D 61 74 61 6E 20 42 61 6E 64 .fT5Yamatan Band 00000580 : 20 2D 20 53 74 61 63 6B 20 4F 76 65 72 20 46 6C - Stack Over Fl 00000590 : 6F 77 2E 6D 70 33 00 59 61 6D 61 74 61 6E 20 42 ow.mp3.Yamatan B 000005A0 : 61 6E 64 00 53 74 61 63 6B 20 4F 76 65 72 20 46 and.Stack Over F 000005B0 : 6C 6F 77 00 07 3D 35 67 59 61 6D 61 74 61 6E 20 low..=5gYamatan 000005C0 : 42 61 6E 64 20 2D 20 4D 65 6D 6F 72 79 20 44 75 Band - Memory Du 000005D0 : 6D 70 2E 6D 70 33 00 59 61 6D 61 74 61 6E 20 42 mp.mp3.Yamatan B 000005E0 : 61 6E 64 00 4D 65 6D 6F 72 79 20 44 75 6D 70 00 and.Memory Dump. 000005F0 : 09 02 57 15 59 61 6D 61 74 61 6E 20 42 61 6E 64 ..W.Yamatan Band 00000600 : 20 2D 20 44 65 62 75 67 20 26 20 52 65 63 6F 6D - Debug & Recom 00000610 : 70 69 6C 65 2E 6D 70 33 00 59 61 6D 61 74 61 6E pile.mp3.Yamatan 00000620 : 20 42 61 6E 64 00 44 65 62 75 67 20 26 20 52 65 Band.Debug & Re 00000630 : 63 6F 6D 70 69 6C 65 00 0B 09 7B 17 59 61 6D 61 compile...{.Yama 00000640 : 74 61 6E 20 42 61 6E 64 20 2D 20 41 62 6E 6F 72 tan Band - Abnor 00000650 : 6D 61 6C 20 54 65 72 6D 69 6E 61 74 69 6F 6E 2E mal Termination. 00000660 : 6D 70 33 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 mp3.Yamatan Band 00000670 : 00 41 62 6E 6F 72 6D 61 6C 20 54 65 72 6D 69 6E .Abnormal Termin 00000680 : 61 74 69 6F 6E 00 0C 59 26 34 59 61 6D 61 74 61 ation..Y&4Yamata 00000690 : 6E 20 42 61 6E 64 20 2D 20 53 79 73 74 65 6D 20 n Band - System 000006A0 : 43 72 61 73 68 21 2E 6D 70 33 00 59 61 6D 61 74 Crash!.mp3.Yamat 000006B0 : 61 6E 20 42 61 6E 64 00 53 79 73 74 65 6D 20 43 an Band.System C 000006C0 : 72 61 73 68 21 00 0E 17 6D 01 59 61 6D 61 74 61 rash!...m.Yamata 000006D0 : 6E 20 42 61 6E 64 20 2D 20 4E 75 6C 6C 20 50 6F n Band - Null Po 000006E0 : 69 6E 74 65 72 28 52 65 70 72 69 73 65 29 2E 6D inter(Reprise).m 000006F0 : 70 33 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 00 p3.Yamatan Band. 00000700 : 4E 75 6C 6C 20 50 6F 69 6E 74 65 72 28 52 65 70 Null Pointer(Rep 00000710 : 72 69 73 65 29 00 10 00 07 75 00 03 00 05 00 00 rise)....u...... 00000720 : 00 00 00 00 0D 04 00 00 00 00 FF FB 90 40 00 00 ............拭.. 00000730 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000740 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 49 6E ..............In 00000750 : 66 6F 00 00 00 03 00 01 39 98 01 FF FE F8 00 00 fo......9....... 00000760 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000770 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 〜 Xingヘッダー 〜 000008A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000008B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000008C0 : 00 00 00 00 00 00 00 00 00 00 00 FF FB 90 40 00 .............拭. 000008D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000008E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 〜 先頭無音フレーム (1) 〜 00000A40 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000A50 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000A60 : 00 00 00 00 00 00 00 00 00 00 00 00 FF FB 90 40 ..............拭 00000A70 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000A80 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 〜 先頭無音フレーム (2) 〜 00000BE0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000BF0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000C00 : 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FB 90 ...............拭 00000C10 : 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... 00000C20 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 〜 先頭無音フレーム (3) 〜 00000D80 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000D90 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000DA0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 49 44 ..............ID 00000DB0 : 33 03 00 00 00 00 00 79 54 50 45 31 00 00 00 0D 3......yTPE1.... 00000DC0 : 00 00 00 59 61 6D 61 74 61 6E 20 42 61 6E 64 54 ...Yamatan BandT 00000DD0 : 49 54 32 00 00 00 0D 00 00 00 4E 75 6C 6C 20 50 IT2.......Null P 00000DE0 : 6F 69 6E 74 65 72 54 41 4C 42 00 00 00 0F 00 00 ointerTALB...... 00000DF0 : 00 4D 75 73 69 63 50 61 63 6B 20 33 6F 6E 33 54 .MusicPack 3on3T 00000E00 : 52 43 4B 00 00 00 06 00 00 00 30 31 2F 31 30 54 RCK.......01/10T 00000E10 : 59 45 52 00 00 00 05 00 00 00 32 30 30 34 54 43 YER.......2004TC 00000E20 : 4F 4E 00 00 00 09 00 00 00 28 31 37 29 52 6F 63 ON.......(17)Roc 00000E30 : 6B FF FB 90 64 00 00 00 00 00 69 06 00 00 00 00 k..薪.....i..... 00000E40 : 00 0D 20 C0 00 00 00 00 01 A4 1C 00 00 00 00 00 .. ............. 〜 MP3データ 〜 020007B0 : AA AA AA AA AA AA AA AA AA AA AA AA AA AA 54 41 ..............TA 020007C0 : 47 4E 75 6C 6C 20 50 6F 69 6E 74 65 72 28 52 65 GNull Pointer(Re 020007D0 : 70 72 69 73 65 29 00 00 00 00 00 00 00 00 00 59 prise).........Y 020007E0 : 61 6D 61 74 61 6E 20 42 61 6E 64 00 00 00 00 00 amatan Band..... 020007F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 4D 75 73 .............Mus 02000800 : 69 63 50 61 63 6B 20 33 6F 6E 33 00 00 00 00 00 icPack 3on3..... 02000810 : 00 00 00 00 00 00 00 00 00 00 00 32 30 30 34 00 ...........2004. 02000820 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000830 : 00 00 00 00 00 00 00 00 00 00 00 00 0A 11 FF FB ............... 02000840 : 90 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 拭.............. 02000850 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 〜 末尾無音フレーム (1) 〜 020009B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 020009C0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 020009D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF ................ 020009E0 : FB 90 40 00 00 00 00 00 00 00 00 00 00 00 00 00 .拭............. 020009F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000A00 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 〜 末尾無音フレーム (2) 〜 02000B60 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000B70 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000B80 : FF FB 90 40 00 00 00 00 00 00 00 00 00 00 00 00 ..拭............ 02000B90 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000BA0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 〜 末尾無音フレーム (3) 〜 02000D00 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000D10 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000D20 : 00 FF FB 90 40 00 00 00 00 00 00 00 00 00 00 00 ...拭........... 02000D30 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000D40 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 〜 末尾無音フレーム (4) 〜 02000EA0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000EB0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000EC0 : 00 00 FF FB 90 40 00 00 00 00 00 00 00 00 00 00 ....拭.......... 02000ED0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02000EE0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 〜 末尾無音フレーム (5) 〜 02001040 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02001050 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02001060 : 00 00 00 0D 0A 00 00 10 25 3D 3D 3D 3D 3D 3D 3D ........%======= 02001070 : 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ================ 02001080 : 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ================ 02001090 : 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ================ 020010A0 : 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 45 6E 64 ===========..End 020010B0 : 20 6F 66 20 50 61 63 6B 65 64 20 4D 50 33 20 20 of Packed MP3 020010C0 : 2D 20 47 65 6E 65 72 61 74 65 64 20 62 79 20 22 - Generated by " 020010D0 : 4D 75 73 69 63 50 61 63 6B 20 33 6F 6E 33 22 20 MusicPack 3on3" 020010E0 : 2D 0D 0A -..
※Winamp + Album Playlist Plugin for Winamp 2.x での再生を前提
パック形式比較(1)
Cue Pack ZIP LHA 解 説 汎用性 △ × ◎ ◎ ・Cue は mp3cue プラグインと互換
・Pack は MusicPack 3on3 独自形式
・ZIP/LHA は通常の無圧縮アーカイブ
処理効率 ◎ ○ △ △ ・Cue は時間算出済なので高速
・その他は時間の算出が必要なので非効率
・ZIP/LHA はアーカイブ内のデータ部分を
検出しているので更に効率は悪い
ファイル
情報表示× ○ ○ ○ ・Cue は各曲データ部分の認識はしていない
ので情報を取得できず表示は不可
・その他は各曲データ部分をファイルとして
認識しているので表示可能
ただしフレームをスキャンしているので
処理速度はやや遅い
ファイル
抽出保存× ○ ○ ○ ・理由は情報表示と同様
・展開で MusicPack 3on3 を起動して
抽出(Extract)することは可能
Entire - ◎ × × ・Cue はファイル形式に無関係なので除外
・Pack は各曲データ間が隙間なく繋がって
いるので最適(Pack+Cue が最良)
・ZIP/LHA では各曲としての認識ができない
のでアーカイブ化しても意味がない
VBR △ × × × ・Pack+Cueでパック化
・Xingヘッダーを付加
・ID3タグは除去
・in_mpg123.dll を使用
パック形式比較(2)
長 所 短 所 用 途 Cue ・処理が高速 ・Entire可 ・各曲データ把握不可 ・シャッフル(全ファイル) ・Entire(Pack+Cue) ・VBR可(Pack+Cue)Pack ・無駄のない形式 ・多様な用途の再生可 ・汎用性は低い ・再生用途は多い ・Entire(Pack+Cue) ・mpg123可 ・VBR可(Pack+Cue)ZIP ・汎用性が高い形式 ・ゴミデータが多い ・Entire不可 ・mpg123不可 ・VBR不可 ・単曲のパック化LHA