2011年02月07日

WAVEファイルの再生 第1部



WAVEファイルはWindowsのマルチメディアアプリケーションを収めたRIFF形式Resource Interchange File Format)という形式をとっております。
WAVEファイルの読み込み手順は以下の通りです。

  1. マルチメディアファイル入出力関数を使って、WAVEファイルを開きます。
  2. RIFFチャンクに進入して、WAVEチャンクを探します。
  3. fmtチャンクに進入して、fmtチャンクを読み込み、その内容を元にしてWAVEFORMATEX構造体を作成します。
  4. fmtチャンクから退出して、dataチャンクに進入します。
  5. dataチャンクの先頭データ位置を音源データの先頭位置として保存し、ファイル末尾に移動して、実際のファイルサイズを取得します。
  6. 先に作成したWAVEFORMATEX構造体を元にWAVE出力デバイスを開きます。
  7. WAVE出力デバイスからのコールバックイベントをトリガにして、ダブルバッファに音源データを読み込みながら演奏していきます。
  8. ファイル末尾まで読み込むか、演奏停止イベントがあればWAVE出力デバイスを停止してから閉じます。
  9. RIFFチャンクから退出してファイルを閉じます。


続きを読む


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

2011年02月08日

WAVE再生時の音量調節



WAVE再生時の音量調節については、WAVE出力関数waveOutSetVolume関数がありますが、この関数を使うとシステム全体のボリューム調節をすることにもなり、ウィンドウズビスタ以降OSとも相性が良くないようです。そこで今回は読み込んだ音源データを直接加工して音量調節する方法を解説します。


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

2011年02月11日

モノラル音源の擬似ステレオ再生



モノラル音源を一定時間遅延させ、元の音源と合わせて再生する擬似ステレオ再生について解説します。手順は以下の通りです。


  1. 音源データWAVEファイルから読み込みます。
  2. 前回の残りの音源データがあれば、遅延バッファの先頭に遅延時間分書き込みます。
  3. 元の音源データを一定時間分ずらしてバッファに書き込みます。
  4. ずらして書いたために書ききれずに残った音源データを、次回分として保存します。
  5. 元の音源データ右チャンネル遅延バッファの音源データ左チャンネルに書き込んで再生します。


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

2011年02月16日

WAVEファイルの書き込み



WAVEファイルはWindowsのマルチメディアアプリケーションを収めたRIFF形式Resource Interchange File Format)という形式をとっております。

WAVEファイルの書き込み手順は以下の通りです。

  1. マルチメディアファイル入出力関数を使って、WAVEファイルを開きます。
  2. RIFF/WAVEチャンクを作成して、その中に進入します。
  3. fmtチャンクを作成してその中に進入し、WAVEFORMATEX構造体を書き込んだ後、fmtチャンクから退出します。
  4. factチャンクを作成してその中に進入し、音源データサンプル数を書き込んだ後、factチャンクから退出します。
  5. dataチャンクを作成してその中に進入します。
  6. 音源データを格納するバッファを作成します。
  7. 現在の演奏条件での音源データをバッファに読み込み、ファイルに書き込みます。この作業を音源データが読み込めなくなるまで繰り返します。
  8. RIFFチャンクから退出します。
  9. 実際に書き込んだサンプル数factチャンクに書き込んだサンプル数が違う場合は、factチャンクのサンプル数書き込み位置に戻って書き直します。
  10. メタデータがあれば、ファイル末尾にINFOチャンクを作成し、メタデータを書き込みます。
  11. ファイルを閉じます。



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

2012年11月22日

WAVEファイルに曲名、歌手名などの曲情報を書き込む



CDからリッピングした場合、MP3ファイルなどにエンコードせず、WAVEファイルで生の音を楽しみたいものです。一般のWAVEファイルには、メタデータは含まれていないようですが、CDリッピング時に得られたCDテキストFreeDBから得られた曲情報もWAVEファイルに書き込めば、より便利になります。
そこで、RIFF INFOチャンクを使ってWAVEファイルに曲名、歌手名などの曲情報の書き込むプログラムを作成してみました。


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

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