how To Play sound

O

org

I'm trying to play a .wav file in .NET CF 2.0
So I included the File I wished in Properties.Resources.myWaveFile .
I added the following Sound-class. This class is from MSDN, but I added an
additional Constructor for byte[]:

public Sound(byte[] data)

{

m_soundBytes = data;

}



and in my main-program i did an:
Sound sound = new Sound(Properties.Resources.miss);

sound.Play();

But this didn't do anything. Wenn I do an new Sound("myFile.wav") with
myFile.wav on the pocketPC,I can hear the sound. So what is wrong?!?Best
regardsJohannespublic class Sound{private byte[] m_soundBytes;private string
m_fileName;private enum Flags {SND_SYNC = 0x0000, /* play synchronously
(default) */SND_ASYNC = 0x0001, /* play asynchronously */SND_NODEFAULT =
0x0002, /* silence (!default) if sound not found */SND_MEMORY = 0x0004, /*
pszSound points to a memory file */SND_LOOP = 0x0008, /* loop the sound
until next sndPlaySound */SND_NOSTOP = 0x0010, /* don't stop any currently
playing sound */SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy
*/SND_ALIAS = 0x00010000, /* name is a registry alias */SND_ALIAS_ID =
0x00110000, /* alias is a predefined ID */SND_FILENAME = 0x00020000, /* name
is file name */SND_RESOURCE = 0x00040004 /* name is resource name or atom
*/}[DllImport("CoreDll.DLL", EntryPoint="PlaySound",
SetLastError=true)]private extern static int WCE_PlaySound(string szSound,
IntPtr hMod, int flags);[DllImport("CoreDll.DLL", EntryPoint="PlaySound",
SetLastError=true)]private extern static int WCE_PlaySoundBytes (byte[]
szSound, IntPtr hMod, int flags);/// <summary>/// Construct the Sound object
to play sound data from the specified file./// </summary>public Sound
(string fileName) {m_fileName = fileName;}/// <summary>/// Construct the
Sound object to play sound data from the specified stream.///
</summary>public Sound(Stream stream) {// read the data from the
streamm_soundBytes = new byte [stream.Length];stream.Read(m_soundBytes,
0,(int)stream.Length);}public Sound(byte[] data){m_soundBytes = data;}///
<summary>/// Play the sound/// </summary>public void Play () {// if a file
name has been registered, call WCE_PlaySound,// otherwise call
WCE_PlaySoundBytesif (m_fileName != null)WCE_PlaySound(m_fileName,
IntPtr.Zero, (int) (Flags.SND_ASYNC |
Flags.SND_FILENAME));elseWCE_PlaySoundBytes (m_soundBytes, IntPtr.Zero,
(int) (Flags.SND_ASYNC | Flags.SND_MEMORY));}}
 
G

Guest

You can get the stream from the resource:

Stream soundStream = Assembly.GetManifestResourceStream(yourResourceName);

Sound sound = new Sound(soundStream );
 
O

org

Hi,
thanks but this gives me an Error: An object reference is required for the
nonstatic field, method, or property
'System.Reflection.Assembly.GetManifestResourceStream(string)'

best regards
johannes

Alex Yakhnin said:
You can get the stream from the resource:

Stream soundStream = Assembly.GetManifestResourceStream(yourResourceName);

Sound sound = new Sound(soundStream );

--
Alex Yakhnin, .NET CF MVP
www.intelliprog.com | www.opennetcf.org


org said:
I'm trying to play a .wav file in .NET CF 2.0
So I included the File I wished in Properties.Resources.myWaveFile .
I added the following Sound-class. This class is from MSDN, but I added
an
additional Constructor for byte[]:

public Sound(byte[] data)

{

m_soundBytes = data;

}



and in my main-program i did an:
Sound sound = new Sound(Properties.Resources.miss);

sound.Play();

But this didn't do anything. Wenn I do an new Sound("myFile.wav") with
myFile.wav on the pocketPC,I can hear the sound. So what is wrong?!?Best
regardsJohannespublic class Sound{private byte[] m_soundBytes;private
string
m_fileName;private enum Flags {SND_SYNC = 0x0000, /* play synchronously
(default) */SND_ASYNC = 0x0001, /* play asynchronously */SND_NODEFAULT =
0x0002, /* silence (!default) if sound not found */SND_MEMORY = 0x0004,
/*
pszSound points to a memory file */SND_LOOP = 0x0008, /* loop the sound
until next sndPlaySound */SND_NOSTOP = 0x0010, /* don't stop any
currently
playing sound */SND_NOWAIT = 0x00002000, /* don't wait if the driver is
busy
*/SND_ALIAS = 0x00010000, /* name is a registry alias */SND_ALIAS_ID =
0x00110000, /* alias is a predefined ID */SND_FILENAME = 0x00020000, /*
name
is file name */SND_RESOURCE = 0x00040004 /* name is resource name or atom
*/}[DllImport("CoreDll.DLL", EntryPoint="PlaySound",
SetLastError=true)]private extern static int WCE_PlaySound(string
szSound,
IntPtr hMod, int flags);[DllImport("CoreDll.DLL", EntryPoint="PlaySound",
SetLastError=true)]private extern static int WCE_PlaySoundBytes (byte[]
szSound, IntPtr hMod, int flags);/// <summary>/// Construct the Sound
object
to play sound data from the specified file./// </summary>public Sound
(string fileName) {m_fileName = fileName;}/// <summary>/// Construct the
Sound object to play sound data from the specified stream.///
</summary>public Sound(Stream stream) {// read the data from the
streamm_soundBytes = new byte [stream.Length];stream.Read(m_soundBytes,
0,(int)stream.Length);}public Sound(byte[] data){m_soundBytes = data;}///
<summary>/// Play the sound/// </summary>public void Play () {// if a
file
name has been registered, call WCE_PlaySound,// otherwise call
WCE_PlaySoundBytesif (m_fileName != null)WCE_PlaySound(m_fileName,
IntPtr.Zero, (int) (Flags.SND_ASYNC |
Flags.SND_FILENAME));elseWCE_PlaySoundBytes (m_soundBytes, IntPtr.Zero,
(int) (Flags.SND_ASYNC | Flags.SND_MEMORY));}}
 
C

Chance Hopkins

org said:
Hi,
thanks but this gives me an Error: An object reference is required for the
nonstatic field, method, or property
'System.Reflection.Assembly.GetManifestResourceStream(string)'

Check that 'string' is the correct name.

You can check with (off the top of my head):

string[] values = System.Reflection.Assembly.GetManifestResourceNames();

The names will start with the Assembly Name (I think) and then has folder
structure also.
 
P

Peter Foot [MVP]

You need the Assembly instance for your exe -
Assembly.GetExecutingAssembly().GetManifestResourceStream(youResourceName);

Peter

--
Peter Foot
Windows Embedded MVP
http://www.inthehand.com | http://www.peterfoot.net

org said:
Hi,
thanks but this gives me an Error: An object reference is required for the
nonstatic field, method, or property
'System.Reflection.Assembly.GetManifestResourceStream(string)'

best regards
johannes

Alex Yakhnin said:
You can get the stream from the resource:

Stream soundStream =
Assembly.GetManifestResourceStream(yourResourceName);

Sound sound = new Sound(soundStream );

--
Alex Yakhnin, .NET CF MVP
www.intelliprog.com | www.opennetcf.org


org said:
I'm trying to play a .wav file in .NET CF 2.0
So I included the File I wished in Properties.Resources.myWaveFile .
I added the following Sound-class. This class is from MSDN, but I added
an
additional Constructor for byte[]:

public Sound(byte[] data)

{

m_soundBytes = data;

}



and in my main-program i did an:
Sound sound = new Sound(Properties.Resources.miss);

sound.Play();

But this didn't do anything. Wenn I do an new Sound("myFile.wav") with
myFile.wav on the pocketPC,I can hear the sound. So what is wrong?!?Best
regardsJohannespublic class Sound{private byte[] m_soundBytes;private
string
m_fileName;private enum Flags {SND_SYNC = 0x0000, /* play synchronously
(default) */SND_ASYNC = 0x0001, /* play asynchronously */SND_NODEFAULT =
0x0002, /* silence (!default) if sound not found */SND_MEMORY = 0x0004,
/*
pszSound points to a memory file */SND_LOOP = 0x0008, /* loop the sound
until next sndPlaySound */SND_NOSTOP = 0x0010, /* don't stop any
currently
playing sound */SND_NOWAIT = 0x00002000, /* don't wait if the driver is
busy
*/SND_ALIAS = 0x00010000, /* name is a registry alias */SND_ALIAS_ID =
0x00110000, /* alias is a predefined ID */SND_FILENAME = 0x00020000, /*
name
is file name */SND_RESOURCE = 0x00040004 /* name is resource name or
atom
*/}[DllImport("CoreDll.DLL", EntryPoint="PlaySound",
SetLastError=true)]private extern static int WCE_PlaySound(string
szSound,
IntPtr hMod, int flags);[DllImport("CoreDll.DLL",
EntryPoint="PlaySound",
SetLastError=true)]private extern static int WCE_PlaySoundBytes (byte[]
szSound, IntPtr hMod, int flags);/// <summary>/// Construct the Sound
object
to play sound data from the specified file./// </summary>public Sound
(string fileName) {m_fileName = fileName;}/// <summary>/// Construct the
Sound object to play sound data from the specified stream.///
</summary>public Sound(Stream stream) {// read the data from the
streamm_soundBytes = new byte [stream.Length];stream.Read(m_soundBytes,
0,(int)stream.Length);}public Sound(byte[] data){m_soundBytes =
data;}///
<summary>/// Play the sound/// </summary>public void Play () {// if a
file
name has been registered, call WCE_PlaySound,// otherwise call
WCE_PlaySoundBytesif (m_fileName != null)WCE_PlaySound(m_fileName,
IntPtr.Zero, (int) (Flags.SND_ASYNC |
Flags.SND_FILENAME));elseWCE_PlaySoundBytes (m_soundBytes, IntPtr.Zero,
(int) (Flags.SND_ASYNC | Flags.SND_MEMORY));}}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top