Author Topic: Sound Magic  (Read 1773 times)

0 Members and 1 Guest are viewing this topic.

Peter

  • Full Member
  • ***
  • Posts: 161
Sound Magic
« on: March 14, 2011, 11:07:07 AM »
Deleted
« Last Edit: May 05, 2015, 12:39:48 PM by Peter »

Charles Pegge

  • Admin Support Member
  • *****
  • Posts: 4205
    • Oxygen Basic
Re: Sound Magic
« Reply #1 on: March 17, 2011, 01:22:56 AM »

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

Code: [Select]



'==========
'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