2011年03月05日

CD-DAの再生 第1部



コンパクトディスク(CD)音源データは、音楽等の音声を収めるCD-DA (Compact Disc Digital Audio)という規格で書かれています。
CD-DAのデータ構造は、開始トラックから終了トラックまで、音源データセクタ単位で連続して書かれており、実際に曲と曲との区切りというものは存在しません。
そのため曲単位毎に再生する場合には、その曲に相当するトラックの開始時間(MSF単位)からセクタ番号を割り出し、そこに書かれた音源データDeviceIoControl関数を使って直読みしながら、WAVEデータとして再生します。

続きを読む


posted by ひろし at 20:52| Comment(0) | CDDAファイルフォーマット | このブログの読者になる | 更新情報をチェックする

2011年03月09日

CD-DAの再生 第2部



CD-DAの読み込み/再生手順は以下の通りです。

  1. CreateFile関数を使ってCDROMのドライブを開いて、CDROMのデバイスハンドルを取得します。
  2. CDROMのトラック数や各トラックの情報を格納したCDROM_TOC構造体を取得し、目的の曲の開始セクタ終了セクタを算出します。
  3. WAVE出力デバイスを開きます。
  4. WAVE出力デバイスからのコールバックイベントトリガにして、CD-DAの各セクタから音源データDeviceIoControl関数を使って読み出します。
  5. 終了セクタまで読み込むか、演奏停止イベントがあればWAVE出力デバイスを停止してから閉じます。



続きを読む
posted by ひろし at 13:37| Comment(0) | CDDAファイルフォーマット | このブログの読者になる | 更新情報をチェックする

2011年03月22日

CDDBの読み込み



CDDB(Compact Disc DataBase)とは、音楽CDの演奏者やアルバム名、曲名などの情報が格納されたデータベースのことで、本章では数あるCDDBサイトのなかでもフリーCDDBであるfreeDBに接続して、その情報を取得する方法を解説します。

読み込み手順は以下の通りです。

  1. CDDAの各トラックの開始位置時間(秒)と総演奏時間、総トラック数からdiscidを算出します。

  2. 算出したdiscidと各トラックの開始セクタ位置、CDDAの終了時間(秒)をパラメータにして「QueryコマンドURL」を作成し、freeDBに問い合わせて目的のCDに該当するジャンルとdiscidを取得します。

  3. 取得したdiscidとジャンルを元に「ReadコマンドURL」を作成し、freeDBに接続して目的のCDの演奏者やアルバム名、曲名などの情報を取得します。




続きを読む
posted by ひろし at 20:46| Comment(0) | CDDAファイルフォーマット | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。