MP3 player/encoder for VC++/C++

平成 24 年度
卒業研究発表会
MP3 player/encoder for VC++/C++
著者
服部翔真
指導教員
川上由紀
前川公男
1. は じ め に
MP3 と い う フ ォ ー マ ッ ト は 、 現 在 多 く 普 及 し て
いる。理由として、インターネット上での音楽の
や り と り が 出 来 る ほ ど の 圧 縮 率 が あ る 。 MP3 プ レ
イヤーの登場も大きく関係している。
本 研 究 で は 、 MP3 の 特 徴 、 背 景 に 関 し て 知 識 を
深 め る 。 ま た 、 得 た 知 識 を 用 い て 、 MP3 エ ン コ ー
ダ の 作 成 、 並 び に MP3 プ レ イ ヤ ー を 作 成 す る 。
2. MPEG Audio layer-3 (MP3)の 概 要
MPEG と い う の は 、「 Moving Picture Expert
Group」 の 略 で あ る 。 こ れ は 国 際 標 準 化 機 構 (ISO)
に設けられた動画像の圧縮の規格をつくる団体名
のことを指す。映像や音声のファイルは、非常に
大 き く 、取 り 扱 い が と て も 大 変 で あ る 。そ の た め 、
デ ー タ を 圧 縮 し 、 デ ィ ス ク や メ モ リ 、 ま た は CPU
が 取 り 扱 い や す い 大 き さ に す る こ と を MPEG は 目
的 と し て い る 。 そ し て 、こ の グ ル ー プ の 出 し て い
る 圧 縮 の 規 格 を MPEG と も 呼 ん で い る 。
この規格の中で、インターネット上での音楽の
やりとりなどでも扱えるようにした圧縮の規格が
MP3 と 呼 ば れ て い る 。
MP3 の 特 徴 は 、 以 下 の よ う に 大 き く 二 つ に 分 け
られる。図に示すように、人が聞こえない範囲の
音をカットすることにより、上記の特徴が生まれ
る。
① 音 質 は CD と ほ ぼ 同 等
② デ ー タ サ イ ズ が WAV フ ァ イ ル の 1/10 程 度
これら2つの特徴は、人間の音響心理特性を利用
して実現される。
3. MP3 エ ン コ ー ダ の 作 成
エンコードとは、情報を一定の規則に従ってデ
ータに置き換えて記録することをいう。また、デ
ータ圧縮や暗号化などにも用いられる。本研究で
は 、 WAV フ ァ イ ル を MP3 フ ァ イ ル に 変 換 す る こ と
を示すものとする。
3.1 MDCT に お け る 周 波 数 変 換
MPEG に は い く つ か 規 格 が あ る 。 MP3 エ ン コ ー ド
の 特 徴 に は 、 周 波 数 変 換 と し て MDCT(Modified
Discrete Cosine Transform:変 形 離 散 コ サ イ ン 変
換 ) が あ る 。 MDCT は 、 DCT(Discrete Cosine
Transform:離 散 コ サ イ ン 変 換 )を 修 正 し 、変 形 さ せ
た も の で あ る 。 MDCT と DCT の 大 き な 違 い は 、 DCT
の処理の直前に窓関数乗算をしている点である。
こうすることによって周波数分解能が高くなり、
音響心理特性を適用しやすくなる。
3.2 エ ン コ ー ダ の 概 要
作 成 し た エ ン コ ー ダ に は 、 LAME(Lame Ain’t
MP3 Encoder)と い う ラ イ ブ ラ リ を 使 用 し て い る 。
エ ン コ ー ド 処 理 に お い て 、 WAV フ ァ イ ル の MP3 フ
ァ イ ル へ の エ ン コ ー ド 部 を Lame-Enc DLL が 行 い 、
そ の 他 フ ァ イ ル 操 作 を C++で 実 装 し た 。
以下に作成したエンコーダのファイル構成図と
実行結果示す。
図 2 ファイル構成図
図 3 エンコード実行結果
図 1 音響心理特性による音声圧縮
平成 24 年度
卒業研究発表会
4. VC++を 用 い た MP3 プ レ イ ヤ ー の 作 成
プ レ イ ヤ ー は 、 VisualC++ 2010 を 用 い て 、 ダ イ
アログベースで作成した。
4.1 作 成 し た プ レ イ ヤ ー の 機 能
現 在 、 作 成 し た MP3 プ レ イ ヤ ー に は 以 下 の よ う
な機能がある。図 4 にプレイヤーのインタフェー
スを示す。
①再生中の曲のファイル名表示
②再生中のファイルの再生時間の表示
③再生中のファイル数の表示
④ ID3Tag 情 報 の 表 示
⑤飛ばして次・前の曲から再生
⑥ファイルの再生
⑦再生中の曲の一時停止
⑧曲の再生の停止
⑨再生中の曲の波形の表示
4.4 波 形 表 示
波 形 の 表 示 は 0.25 秒 に 一 度 行 い 、 約 0.01 秒 分
の波形を表示している。
図 5 波形表示のタイミング
一時停止の際には波形を留めたまま演奏を停止
する。また、停止の際には無音状態の波形を表示
する。
(a) 一 時 停 止
(b) 停 止
図 6 一時停止中と停止中の波形
図 4 プレイヤーのユーザインタフェース
4.2 使 用 し た ラ イ ブ ラ リ 「 VBMP3」 に つ い て
自 作 MP3 プ レ イ ヤ ー を 制 作 す る に あ た っ て 、ミ
ケ 氏 作 「 Visual C++用 MP3 操 作 DLL [ 3 ] 」 を 使 用
し た 。 デ コ ー ド 部 分 に は 、 Xing Technology 社
がフリーで公開しているデコードライブラリを
使用している。以下にその特徴を記述する。
① す べ て の MP3 形 式 に 対 応 。
② スレッドの利用により、リアルタイムな操
作が可能。
③ コールバック関数により、再生時間及びス
テ ー タ ス を DLL か ら 自 動 的 に 通 知 。
④タグの編集機能。
4.3 プ レ イ ヤ ー へ の フ ァ イ ル 登 録
ファイルの登録はドラッグ&ドロップにて行う。
ま た 、 対 応 し て い る 拡 張 子 は “ mp3” の み で あ る 。
現 時 点 で は 、 MP3 フ ァ イ ル か ど う か は 拡 張 子 で 判
別 し て い る た め 、実 際 に は MP3 フ ァ イ ル で も 拡 張
子 が 違 う と 弾 か れ る 。 逆 に 、 MP3 フ ァ イ ル で な く
て も 拡 張 子 が “ mp3” な ら ば 、 登 録 さ れ て し ま う 。
そのときは再生時にエラーが出る。
5. ま と め
MP3 に 関 す る 情 報 圧 縮 技 術 を 学 ん で 、 技 術 者 が
い か に し て CD 音 源 の 音 質 を 保 っ た ま ま 高 い 圧 縮
率を実現するかという、一見矛盾した目的を実現
してきたかを知ることができた。
エンコーダと、プレイヤーを作成するうえで
MP3 フ ァ イ ル を 操 作 し た が 、 タ グ の 編 集 、 ビ ッ ト
レートなどの変更がとても容易に行えた。こうい
っ た こ と を 実 感 し て 、 MP3 は ほ と ん ど 完 成 さ れ た
フォーマットだということがわかった。しかし、
不正コピーなどによる著作権問題やライセンス問
題 が 起 こ っ た こ と か ら 、 MP3 は 世 に 普 及 さ せ る に
は問題があるのではないかと思った。
[参 考 文 献 ]
[1]富 永 丈 博 の ホ ー ム ペ ー ジ :
http://www.initialt.org/index.html
[2]開 発 者 向 け 技 術 情 報 サ イ ト MSDN:
http://msdn.microsoft.com/ja-jp/default.aspx
[3]Mi-Ke’ s HomePage:
http://hp.vector.co.jp/authors/VA011457/