C# でサウンドを再生する
-
System.Media.SoundPlayer
を使用してC#
でサウンドを再生する -
SystemSounds.Play
メソッドを使用してC#
でサウンドを再生する - Windows Media Player コントロールを C# ソリューションに埋め込んでサウンドを再生する
-
Microsoft.VisualBasic
参照を C# プロジェクトに追加してサウンドを再生する
このチュートリアルでは、C# を使用して Windows フォームでオーディオ ファイルまたはサウンドを再生する方法について説明します。 視聴者をゲーム開発や技術アプリケーションに没頭させる上で、サウンドの重要性を否定することはできません。
C# プログラミングでは、オーディオ ファイルまたはサウンドを Windows アプリケーションに実装するための 4つの主な方法が提供されます。それぞれが独自の方法で便利で実用的です。 マルチプレイヤー用の .NET
などの豊富なプラットフォームを使用すると、WAV
またはその他のフォーマット ファイル用のカスタム サウンド ジェネレーターを簡単に作成できます。
さらに、WPF コーンとして C# を使用し、優れた組み込みのマルチプレイヤー (オーディオ) サポートを使用して、Wave ファイル (サウンド ファイル) のバイトベースのバッファーをメモリ内に直接構築することができます。
ここで理解しておくべき重要なことは、SoundPlayer
クラスは WAV
または Wave 形式に基づいてサウンドを再生するため、代わりにあまり役に立ちません。MediaPlayer
クラスと MediaElement
クラスは MP3 ファイルの再生を可能にします。
System.Media.SoundPlayer
を使用して C#
でサウンドを再生する
SoundPlayer
クラスは、ファイル パス、名前、および System.Media
名前空間への参照を必要とするため、実行時に特定のパスでサウンドを再生するのに役立ちます。
System.Media
名前空間への参照を宣言し、SoundPlayer _exp = new SoundPlayer(@"path.wav");
を使用できます。 オブジェクトの宣言で名前空間に言及せずに。
その後、_exp.Play();
のように Play()
メソッドを使用して実行します。 最も重要なことは、サウンドの再生などのファイル操作は、適切または適切な構造化された例外処理ブロック内に含めて、効率を高め、何か問題が発生した場合に理解できるようにする必要があることです。 パス名の形式が正しくない、読み取り専用のサウンド ファイル パス、null
パス、および無効なオーディオ ファイル パス名は、エラーを引き起こし、別の例外クラスが必要になる可能性があります。
using System;
using System.Media; // essential namespace for using `SoundPlayer`
using System.Windows.Forms;
namespace play_sound {
public partial class Form1 : Form {
// Initialize form components
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {}
private void button1_Click(object sender, EventArgs e) {
// object creation and path selection
SoundPlayer player = new SoundPlayer(@"C:\Users\DELL\dark_souls_theme.wav");
// apply the method to play sound
player.Play();
}
}
}
出力:
SystemSounds.Play
メソッドを使用して C#
でサウンドを再生する
この機能 (SystemSounds
クラスが提供する) は、1 行のコードでさまざまなシステム サウンドを提供する機能に加えて、C# アプリケーションにサウンドを実装する最も簡単な方法の 1つです。 SystemSounds.Beep.Play();
.
ただし、SystemSounds
クラスの使用にはいくつかの制限があります。次の 5つの異なるシステム サウンドにしかアクセスできないためです。 アスタリスク
、ビープ
、エクスクラメーション
、ハンド
、およびクエスチョン
、および場合によっては、Windowsでシステムサウンドを無効にすると、この方法は機能せず、すべてのサウンドが無音に置き換えられます.
一方で、Windows と同じように非常に簡単にサウンドを再生できるため、C# アプリケーションがユーザーの無音の選択を尊重することは常に適切な選択です。
C# プロジェクトで System.Media
への参照を宣言するか、System.Media.SystemSounds.Asterisk.Play();
のようなものを使用します。 音を鳴らすこと。
using System;
using System.Media; // essential namespace for `SystemSounds`
using System.Windows.Forms;
namespace play_sound {
public partial class Form1 : Form {
// initialize components
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {}
private void button1_Click(object sender, EventArgs e) {
SystemSounds.Asterisk.Play(); // you can use other sounds in the place of `Asterisk`
}
}
}
出力:
Play()
メソッドは、一連の Windows OS サウンド イベント タイプに関連付けられたサウンドを非同期的に再生します。 システム サウンドにアクセスするための静的メソッドを提供する SystemSounds
クラスを継承することはできません。
これは、一般的なシナリオで C# アプリケーションがさまざまなシステム サウンドを使用できるようにする高レベルのアプローチであり、これらのアプリケーションが Windows 環境にシームレスに適合するのに役立ちます。 Sound
コントロール パネルでサウンドをカスタマイズして、各ユーザー プロファイルがこれらのサウンドをオーバーライドできるようにすることができます。
Windows Media Player コントロールを C# ソリューションに埋め込んでサウンドを再生する
Microsoft Visual Studio を使用して Windows Media Player コントロールを追加し、C# でサウンドを再生することができます。 Windows Media Player は VS ツールボックスにあり、C# アプリケーションでその機能を使用するには、まずそのコンポーネントを Windows フォームに追加します。
Windows Media Player SDK の最新バージョンをシステムにインストールし、VS ツールボックスを使用してアクセスし、COM
コンポーネントからカスタマイズして Windows Media Player
オプションを追加します。 Visual Studio での Windows Media Player の既定の名前は axWindowsMediaPlayer1
ですが、覚えやすい名前に変更できます。
Windows Media Player ActiveX
コントロールを C# プロジェクトに追加し、ボタン クリック イベントに実装します。 さらに、2つのモードを選択できます。Open
メソッドで開かれたメディアに類似した Independent
モードと、再生を制御するタイミング ツリーのタイムラインとクロック エントリに対応するメディア ターゲットである Clock
モードです。 .
using System;
using System.Windows.Media; // essential namespace
using System.Windows.Forms;
namespace play_sound {
public partial class Form1 : Form {
private MediaPlayer audio_player = new MediaPlayer();
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {}
private void button1_Click(object sender, EventArgs e) {
OpenFileDialog dialog_audio = new OpenFileDialog();
dialog_audio.Filter = "MP3 files (*.mp3)|*.mp3|All files (*.*)|*.*";
if (dialog_audio.ShowDialog() == DialogResult.OK) {
audio_player.Open(new Uri(dialog_audio.FileName));
audio_player.Play();
}
}
private void button2_Click(object sender, EventArgs e) {
// to pause audio
audio_player.Pause();
}
private void button3_Click(object sender, EventArgs e) {
// to resume the paused audio
audio_player.Play();
}
}
}
出力:
最も重要なことは、MediaPlayer
クラスが Windows Media Player テクノロジを継承して、オーディオ ファイルとシステム サウンドをいくつかの最新の形式で再生することです。 その助けを借りて、MediaPlayer
インスタンスで言及または実行されるサウンド ファイルの再生プロセスを制御できます。
Microsoft.VisualBasic
参照を C# プロジェクトに追加してサウンドを再生する
Audio
クラスは、Visual Basic でサウンドを再生することで非常に有名です。アプリケーションに Visual Basic バインディングを含めることにより、C# でこのクラスを使用することで、このクラスの恩恵を受けることができます。 ただし、SoundPlayer
クラスと呼ばれる Audio
クラスの C# 固有のバージョンがありますが、メモリ内にウェーブを直接バイトベースで簡単に構築することはできません。
Microsoft.VisualBasic
参照を最初のステップとして C# プロジェクトに追加し、Audio
クラスから static Audio my_obj = new Audio();
のようなオブジェクトを作成します。 my_exp.Play("m:\\path.wav", AudioPlayMode.WaitToComplete);
のようにサウンド ファイルのアドレスを追加します。
AudioPlayMode
を自分でカスタマイズまたは設定できます。これにより、サウンドの再生時間をカスタマイズできます。
using System;
using System.Windows.Forms;
using Microsoft.VisualBasic; // essential namespace
using Microsoft.VisualBasic.Devices; // essential namespace
namespace play_sound {
public partial class Form1 : Form {
static Audio audio_player = new Audio();
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {}
private void button1_Click(object sender, EventArgs e) {
audio_player.Play(@"C:\Users\DELL\dark_souls_theme.wav", AudioPlayMode.WaitToComplete);
}
}
}
出力:
Background
または BackgroundLoop
ツールを使用して、オーディオがバックグラウンドで再生されている間に他のタスクを再開することをお勧めします。
オプションです。 ただし、圧縮されていない WAV ファイルを学習することにより、C# コードだけを使用してカスタム サウンドを作成し、システムのメモリに直接サウンドを作成することができます。
このチュートリアルでは、C# で効果的にサウンド ファイルを再生する方法を説明しました。
Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.
GitHub