クリエイターの教科書

ChatGPT, Stable Diffusion, Visual Studio, Excelなど教科書

【Visual Studioの教科書】C#でサウンドを鳴らす

ゲームにはサウンドは欠かせません。いいゲームは音楽やSEもよかったりします。

ここではサウンドを鳴らすやり方の基本を紹介します。

音を鳴らす

Speaker

 

サウンドを鳴らす

wavを鳴らすだけであれば、追加コンポーネントは特に不要です。

まず「using System.Media;」を宣言しておきます。

あとは「SoundPlayer」をファイル名を指定して作成し、プレイを実行すればOKです。

 

 private void button1_Click(object sender, EventArgs e)
{
SoundPlayer player = new SoundPlayer(@"C:/_work/test.wav");
player.Play();
}

 

サウンドをループ再生する

ゲームのBGMではサウンドをループして鳴らしておきたいものです。

簡単にループ再生を実装するには、メディアプレイヤーを埋め込んでそちらでループ再生をさせるという方法です。

 

まず「ツールボックス」で「アイテムの選択」を実施。

「COM」で「Windows Media Player」を選んで追加します。

f:id:apicode:20200709090526p:plain

 

すると、ツールボックスには「media player」が表示されるようになります。

f:id:apicode:20200709090528p:plain



プログラムでは「using WMPLib;」を先に宣言。

後は、以下のようにループ属性をオンにして、ファイル名を指定してプレイするとループ再生が行われます。

 

private void button1_Click(object sender, EventArgs e)
{
WindowsMediaPlayer player = new WindowsMediaPlayer();
player.settings.setMode("loop", true);
player.URL = @"C:/_work/test.wav";
player.controls.play(); // 再生
}

 

 

 

サウンドの不具合

サウンドが鳴らない?

 当たり前ですが、パソコン自体からサウンドが鳴ることをユーチューブ動画を再生するなどして確認ください。

 

音量が0になっている、サウンドの出力先が現在使うスピーカーになっていない、スピーカーの電源がオフ、ヘッドフォンのスイッチがオフ、などの原因が考えられます。

 

次にサウンドファイルを確認しましょう。

SoundPlayerを使う場合、MP3のサウンドファイルはならないようです。WAV形式のファイルを使ったほうが確実と思います。

 

WindowsMediaPlayerがloaderExceptionエラー

WindowsMediaPlayerをツールボックスで選び、フォームに貼り付けようとすると以下のように「AxHostが作成できません。System.Reflection.ReflectionTypeLoadException」というエラーになりました。

f:id:apicode:20191022103729p:plain

 

ぐぐってみると参照から「AxWMPLib」「WMPLib」を削除してからやると大丈夫だったという人がいます。

 

うちで試したところ、削除後も同じエラーでした。

 

しかしVisualStudioを閉じて、次回このプロジェクトを開き試したところロードできました。

 

ひょっとすると参照の削除だけではキャッシュにファイルは残っていてそれがエラーになっていた可能性はあるかもしれません。

 

コンポーネントが読み込めない?

エラーがでる場合、コンポーネントが32ビット対応で64ビット対応していない可能性があります。

 

プロジェクトのプロパティで「ビルド」のところの「対象プラットフォーム」を「AnyCPU」もしくは「32ビット」に変えて試してみるのも1案だと思います。

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

プライバシーポリシー |〇利用規約 |〇問い合わせ