Page 2 of 2

PostPosted: Thu May 22, 2008 8:17 am
by Antonio Linares
Roger,

Thanks for your feedback,

Yes, that function uses the internal speaker

PostPosted: Thu May 22, 2008 1:53 pm
by Roger Seiler
Confirmed: this "PRAGMA" solution works here on both internal and external speakers, and on XP Pro and Vista Home Premium.

PostPosted: Thu May 22, 2008 4:25 pm
by Antonio Linares
Roger,

Thanks for the info,

Could you please post a sample with the parameters that you supply to the function ? Thanks,

PostPosted: Thu May 22, 2008 9:07 pm
by Roger Seiler
Code: Select all  Expand view
// The following procs provide various sounds which can be requested from
// anywhere in the app...


PROCEDURE Correct()
tunes({ {392,2}, {523,2}, {880,2}, {1046,8} } )
RETURN

PROCEDURE Wrong()
tunes( { {164,10} } )
RETURN

PROCEDURE TheFifth()
tunes( { {392,2}, {392,2}, {392,2}, {311,8} } )
RETURN

PROCEDURE NannyBoo()
tunes( { {196,4}, {196,4}, {164,4}, {220,4}, {196,8}, {164,8} } )
RETURN

PROCEDURE tunes(aSong)
aeval(aSong, { | a | MYTONE(a[1], a[2]) } )
RETURN

#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>

HB_FUNC( MYTONE )
{
   Beep( hb_parnl( 1 ), hb_parnl( 2 ) * 70 );
}

#pragma ENDDUMP


PostPosted: Thu May 22, 2008 9:15 pm
by Roger Seiler
Here it is again with a little explanation...

Code: Select all  Expand view
// The following procs provide various sounds which can be
// requested from anywhere in the app...

// Here are 4 "songs", each of which can be requested...

PROCEDURE Correct()
tunes({ {392,2}, {523,2}, {880,2}, {1046,8} } )
RETURN

PROCEDURE Wrong()
tunes( { {164,10} } )
RETURN

PROCEDURE TheFifth()
tunes( { {392,2}, {392,2}, {392,2}, {311,8} } )
RETURN

PROCEDURE NannyBoo()
tunes( { {196,4}, {196,4}, {164,4}, {220,4}, {196,8}, {164,8} } )
RETURN

// Now here is where a song gets initially processed...

PROCEDURE tunes(aSong)
aeval(aSong, { | a | MYTONE(a[1], a[2]) } )
RETURN

// And here is where the C code takes over to finish the job...

#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>

HB_FUNC( MYTONE )
{
   Beep( hb_parnl( 1 ), hb_parnl( 2 ) * 70 );
}

#pragma ENDDUMP