Hi Peter,
I've been on a coding marathon for the past few days. Alpha 30 will be ready soon
Here are a few variations of your code and a mini API for playsound extracted directly from the header file
MMsystem.h
'==========
'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
Charles