


'==========
'PLAY SOUND
'==========

'--------
'C FORMAT
'========

'from MMsystem.h

#define SND_SYNC            0x0000  /* play synchronously (default) */
#define SND_ASYNC           0x0001  /* play asynchronously */
#define SND_NODEFAULT       0x0002  /* silence (!default) if sound not found */
#define SND_MEMORY          0x0004  /* pszSound points to a memory file */
#define SND_LOOP            0x0008  /* loop the sound until next sndPlaySound */
#define SND_NOSTOP          0x0010  /* don't stop any currently playing sound */

#define SND_NOWAIT      0x00002000L /* don't wait if the driver is busy */
#define SND_ALIAS       0x00010000L /* name is a registry alias */
#define SND_ALIAS_ID    0x00110000L /* alias is a predefined ID */
#define SND_FILENAME    0x00020000L /* name is file name */
#define SND_RESOURCE    0x00040004L /* name is resource name or atom */


'http://msdn.microsoft.com/en-us/library/aa909766.aspx

'AD HOC DEFINITIONS
typedef sys hmodule
typedef zstring * lpcstr
#define winapi

extern library "winmm.dll"

BOOL WINAPI PlaySoundA (
  LPCSTR pszSound,
  HMODULE hmod,
  DWORD fdwSound );

end extern

PlaySoundA "c:/windows/media/tada.wav",0,SND_ASYNC

print "wait for async sound"


'--------------------
'O2 LOW LEVEL BINDING
'====================

Dim winmm as long
winmm = LoadLibrary "winmm.dll"

Bind winmm
(
  PlaySound  PlaySoundA
)

PlaySound "c:/windows/media/tada.wav",0,0


'------------
'IN ASSEMBLER
'============
'
Dim wav as any 
wav = "c:/windows/media/tada.wav" 

push 0            /* regular must this two parameter onto the stack */
push 0            /* what happens here? that is an amazing thing !*/
push wav         /*  do you hear the sound too ?   Whatever, it is fantastic great !  */ 
call PlaySound  

FreeLibrary winmm


