Jag försöker att återskapa ett project som jag förlorade i vintras(hd-crach) i alla fall i koden du visar sätter du bara applicationBuffer till något annat än null inuti en if som kollar om applicationBuffer är olika null. Hej Simon,jag tror inte att jag förstår, vill du visa hur du menar, sen är detta all koden (än så länge). Eftersom applicationBuffer initialiseras till null och du inte rör den i Initialize och koden ser berörande applicationBuffer i playNote ser ut som följande kan det inte funka...Problem med directmusic
<code>
using Microsoft.DirectX.DirectSound;
using Buffer = Microsoft.DirectX.DirectSound.Buffer;
public string strFileName = "";
private Buffer applicationBuffer = null;
private Device applicationDevice = null;
private void initDirectSound()
{
try
{
applicationDevice = new Device();
applicationDevice.SetCooperativeLevel(this.Handle, CooperativeLevel.Priority);
}
catch (SoundException fel)
{
MessageBox.Show(fel.Message + fel.Source, "initDirectSound", MessageBoxButtons.OK,
MessageBoxIcon.Error);
Close();
return;
}
}
private void PlayNote(int freq)
{
if (null != applicationBuffer)
{
applicationBuffer.Dispose();
applicationBuffer = null;
BufferDescription desc = new BufferDescription();
desc.ControlFrequency = true;
desc.ControlPan = true;
desc.ControlVolume = true;
try
{
strFileName = Application.StartupPath + "\\Ljud\\ding.wav";
applicationBuffer = new SecondaryBuffer(strFileName, desc, applicationDevice);
applicationBuffer.Frequency = freq;
BufferPlayFlags PlayFlags = 0;
applicationBuffer.Play(0, PlayFlags);
catch (Exception fel)
{
MessageBox.Show(fel.Message + fel.Source, "PlayNote");
}
}
else if (null == applicationBuffer)
{
MessageBox.Show("applicationBuffer är tomma", "PlayNote");
}
}
</code>
Jag får hela tiden upp <b>MessageBox.Show("applicationBuffer är tomma", "PlayNote");</b>
Någon som kan se vad jag har missat?Sv: Problem med directmusic
Sv:Problem med directmusic
Fattas det något?Sv: Problem med directmusic
<code>
private Buffer applicationBuffer = null;
private void PlayNote(int freq)
{
if (null != applicationBuffer)
{
// ...
applicationBuffer = new SecondaryBuffer(strFileName, desc, applicationDevice);
// ...
}
else if (null == applicationBuffer)
{
MessageBox.Show("applicationBuffer är tomma", "PlayNote");
}
}
</code>