*vfp ²©ö¸Á»ï¾¹µ¼ÖµoÁn, garfield
DECLARE Sleep IN kernel32 INTEGER dwMilliseconds
DECLARE INTEGER Beep IN kernel32 INTEGER dwFreq, INTEGER dwDur
*!* // Octave0 Octave1 Octave2 Octave3 Octave4 Octave5
*!* // A 55.000 110.000 220.000 440.000 880.000 1760.000
*!* // A#/Bb 58.270 116.541 233.082 466.164 932.328 1864.655
*!* // B 61.735 123.471 246.942 493.883 987.767 1975.533
*!* // C 65.406 130.813 261.626 523.251 1046.502 2093.005
*!* // C#/Db 69.296 138.591 277.183 554.365 1108.731 2217.461
*!* // D 73.416 146.832 293.665 587.330 1174.659 2349.318
*!* // D#/Eb 77.782 155.563 311.127 622.254 1244.508 2489.016
*!* // E 82.407 164.814 329.628 659.255 1318.510 2637.020
*!* // F 87.307 174.614 349.228 698.456 1396.913 2793.826
*!* // F#/Gb 92.499 184.997 369.994 739.989 1479.978 2959.955
*!* // G 97.999 195.998 391.995 783.991 1567.982 3135.963
*!* // G#/Ab 103.826 207.652 415.305 830.609 1661.219 3322.438
LOCAL mstr, mfreq[12*6], mpos
mstr ='55,110,220,440,880,1760'
mstr=mstr+',58,117,233,466,932,1865'
mstr=mstr+',62,123,247,494,988,1976'
mstr=mstr+',65,131,262,523,1047,2093'
mstr=mstr+',69,139,277,554,1109,2217'
mstr=mstr+',73,147,294,587,1175,2349'
mstr=mstr+',78,156,311,622,1245,2489'
mstr=mstr+',82,165,330,659,1319,2637'
mstr=mstr+',87,1745,349,698,1397,2794'
mstr=mstr+',92,185,370,740,1480,2960'
mstr=mstr+',98,196,392,784,1568,3136'
mstr=mstr+',104,208,415,831,1661,3322'
ALINES(mfreq,mstr,',')
FOR mpos = 1 TO ALEN(mfreq,1)
mfreq[mpos]=VAL(mfreq[mpos])
NEXT
DIMENSION mfreq[12,6]
LOCAL music , am[1]
music='5,3,3,0,4,2,2,0,1,2,3,4,5,5,5'
ALINES( am , music,',')
FOR mpos = 1 TO ALEN(am,1)
am[mpos]=VAL(am[mpos])
NEXT
private moctave , mlen , mskip
moctave = 3
mlen=160
mskip = 20
FOR mpos = 1 TO ALEN(am,1)
DO case
CASE am[mpos]=0
sleep( mlen*3 + mskip )
CASE am[mpos]=1
BeepFreq( mfreq[ 4, moctave ] , mlen )
CASE am[mpos]=2
BeepFreq( mfreq[ 6, moctave ] , mlen )
CASE am[mpos]=3
BeepFreq( mfreq[ 8, moctave ] , mlen )
CASE am[mpos]=4
BeepFreq( mfreq[ 9, moctave ] , mlen )
CASE am[mpos]=5
BeepFreq( mfreq[11, moctave ] , mlen )
CASE am[mpos]=6
BeepFreq( mfreq[ 1, moctave+1 ] , mlen )
other &&--CASE am[mpos]=7
BeepFreq( mfreq[ 3, moctave+1 ] , mlen )
endcase
next
PROCEDURE BeepFreq (lnFreq , mlen)
= Beep(lnFreq, mlen)
= Sleep (mskip)
RETURN
|