如何使用 SlimDX.DirectSound 播放 wave 文件?
How to play a wave file using SlimDX.DirectSound?
public partial class Form1 : Form
{
SecondarySoundBuffer m_DSoundBuffer;
DirectSound m_DirectSound;
string fileName = @"F:\guitar-classical-E-octave0.wav";
public void setting()
{
WaveStream waveFile = new WaveStream(fileName);
SoundBufferDescription desc = new SoundBufferDescription();
desc.SizeInBytes = (int)waveFile.Length;
desc.Flags = BufferFlags.None;
desc.Format = waveFile.Format;
m_DirectSound = new DirectSound();
m_DirectSound.SetCooperativeLevel(this.Handle, CooperativeLevel.Priority);
m_DSoundBuffer = new SecondarySoundBuffer(m_DirectSound, desc);
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
setting();
m_DSoundBuffer.Play(0, 0);
}
}
我是 SlimDX 的第一人。
我正在尝试播放波形文件。但它不起作用!
也许有什么问题??
使用 WinForms,SlimDX.DirectSound,SlimDX.Mutimedia
我做到了
必须写入缓冲区!!
public void setting()
{
m_DirectSound = new DirectSound();
m_DirectSound.SetCooperativeLevel(this.Handle, CooperativeLevel.Priority);
m_DirectSound.IsDefaultPool = false;
using (WaveStream waveFile = new WaveStream(fileName))
{
SoundBufferDescription desc = new SoundBufferDescription();
desc.SizeInBytes = (int)waveFile.Length;
desc.Flags = BufferFlags.None;
desc.Format = waveFile.Format;
m_DSoundBuffer = new SecondarySoundBuffer(m_DirectSound, desc);
byte[] data = new byte[desc.SizeInBytes];
waveFile.Read(data, 0, (int)waveFile.Length);
m_DSoundBuffer.Write(data, 0, LockFlags.None);
}
public partial class Form1 : Form
{
SecondarySoundBuffer m_DSoundBuffer;
DirectSound m_DirectSound;
string fileName = @"F:\guitar-classical-E-octave0.wav";
public void setting()
{
WaveStream waveFile = new WaveStream(fileName);
SoundBufferDescription desc = new SoundBufferDescription();
desc.SizeInBytes = (int)waveFile.Length;
desc.Flags = BufferFlags.None;
desc.Format = waveFile.Format;
m_DirectSound = new DirectSound();
m_DirectSound.SetCooperativeLevel(this.Handle, CooperativeLevel.Priority);
m_DSoundBuffer = new SecondarySoundBuffer(m_DirectSound, desc);
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
setting();
m_DSoundBuffer.Play(0, 0);
}
}
我是 SlimDX 的第一人。
我正在尝试播放波形文件。但它不起作用!
也许有什么问题??
使用 WinForms,SlimDX.DirectSound,SlimDX.Mutimedia
我做到了
必须写入缓冲区!!
public void setting()
{
m_DirectSound = new DirectSound();
m_DirectSound.SetCooperativeLevel(this.Handle, CooperativeLevel.Priority);
m_DirectSound.IsDefaultPool = false;
using (WaveStream waveFile = new WaveStream(fileName))
{
SoundBufferDescription desc = new SoundBufferDescription();
desc.SizeInBytes = (int)waveFile.Length;
desc.Flags = BufferFlags.None;
desc.Format = waveFile.Format;
m_DSoundBuffer = new SecondarySoundBuffer(m_DirectSound, desc);
byte[] data = new byte[desc.SizeInBytes];
waveFile.Read(data, 0, (int)waveFile.Length);
m_DSoundBuffer.Write(data, 0, LockFlags.None);
}