スリー3の適当な記事たち

趣味のゲームやアニメ、及びプログラム関係を中心に気楽に書いていきます。

Windows C++でwav音声ファイル再生

久しぶりにプログラミング関係の記事です!
といっても大した内容ではないのですけどね。

C++のプログラムを書いていて、音を鳴らしたい時にどうすればいいのかを調べてみました!

基本的にはOSのシステムコールを使うしかないようなので今回はWindowsにおいてwavファイルを再生する方法を調べました。
Microsoftの記事がありますので引数の詳細等はそちらを参考にしてみてください!

https://msdn.microsoft.com/ja-jp/library/cc428768.aspx


ちなみに今回はWindows10のPCでVS2013を用いた場合で動作を確認しています。

大雑把な手順

  1. Winmm.libを依存ファイルに追加
  2. mmsystem.hをインクルード
  3. コード上の音を鳴らしたいところにPlaySound関数を入れる

この三つで音を鳴らせます。
例えば再生したい音声データの名前が「sound01.wav」で実行ファイルと同じディレクトリにある場合は以下のようになります。

#pragma comment(lib,"Winmm.lib")//この行の代わりに「追加の依存ファイル」に追加しても良い
#include <mmsystem.h>

//(中略)コード上の音を鳴らしたい処理のところに挿入
 PlaySound("sound01.wav",NULL,SND_FILENAME | SND_ASYNC);

という感じになります。
ここまでPlaySoundの引数について何も書いてませんでした
PlaySoundの第一引数の用途は第三引数によって変わるようです。
今回の例では第三引数にSND_FILENAMEを入れているので第一引数は再生したい音声ファイルのファイル名となります。
またSND_ASYNCを指定しているので再生が終わるのを待たず(非同期)に処理を続けることができます。
ほかにも引数次第ではループ再生や、途中で停止などの操作ができるようです。
詳しくは先ほどもリンクを示しましたがMicrosoftの記事をご覧ください。


では!