Challenge: 
Winner?: 
Yes
Code Snippet: 
sync on
sync rate 100
set display mode 800,600,32
autocam off
hide mouse
position camera 0,0,-10
set text font "arial"
set text size 30
 
createsound("sound1",1,500,50,8000,0,0,0.00,0.0,0,0)
make object cube 1,1
delete object 1
 
practice=1
level=1
restart:
changepitch=1
score=0
miss#=0
do
colour=colour-mousemovey()*100
if colour>80000 then colour=80000
if colour<5000 then colour=5000
color backdrop colour/350.0
if changepitch=1
speed=rnd(75000)+5000
set sound speed 1,speed
changepitch=0
endif
if sound playing(1)=0 then play sound 1
if mouseclick()=1
if colour>speed and colour<speed+10000
changepitch=1
inc score
else
inc miss#
endif
endif
if practice=1 and inkey$()="s" then practice=0:goto restart
if practice=1
if colour>speed and colour<speed+10000
text 350,200,"Just right! ="
else
if colour>speed then text 350,200,"Go Down! v"
if colour<speed+10000 then text 350,200,"Go Up! ^"
endif
text 0,0,"TRAINING MODE !! (Press 's' to skip training.)"
text 0,30,"Match the brightness to the sound."
text 0,60,"Mouse up/down to change brightness"
text 0,90,"Left mouse click to make an attempt."
text 0,120,"Each attempt will increase my score. First to 10 wins."
endif
text 350,300,"Your Score: "+str$(score)
text 350,350,"My Score: "+left$(str$(miss#/(100.0-level*15)),4)
`text 0,0,str$(screen fps())
if score>=10
if practice=1
text 0,500,"You win. Now let's play for real - no help this time! Press any key":sync:wait key
practice=0
goto restart
else
inc level
if level<6 then text 0,500,"You win. Moving to level "+str$(level)+" out of 5. Press any key":sync:wait key
goto restart
endif
endif
if miss#/(100.0-level*20)>=10 then text 0,500,"I win. Game Over! You got to level "+str$(level)+" out of 5":sync:wait key:end
if level>5 then text 0,500,"Congratulations - you have won!":sync:wait key:end
sync
loop
 
function createsound(name$,soundnumber,frequency#,length#,loudness#,bend#,decay#,vibratospeed#,vibratodepth#,tremelospeed#,tremelodepth#)
if file exist(name$+".wav")=1 then delete file name$+".wav"
open to write 1,name$+".wav"
chunk=int(((length#/1000)*44100*16)/8) `sample size (no of samples * bitrate * channels / 8)
samples=int((length#/1000)*44100) `length *44100
restore
for x=1 to 40
read byte2
write byte 1, byte2
next x
write long 1,chunk
rem generate and write wave
for x=1 to samples
output#=int(sin((x/122.5)*(frequency#+vibratodepth#*sin(theta#)))*(loudness#+tremelodepth#*sin(phi#)))*3.0
inc theta#,vibratospeed#
inc phi#,tremelospeed#
dec frequency#,bend#
if loudness#>0 then dec loudness#,decay#
write word 1,output#
next x
close file 1
load sound name$+".wav",soundnumber
data 82:data 73:data 70:data 70:data 208:data 59:data 1:data 0:data 87
data 65:data 86:data 69:data 102:data 109:data 116:data 32:data 16
data 0:data 0:data 0:data 1:data 0:data 2:data 0:data 34:data 86:data 0
data 0:data 136:data 88:data 1:data 0:data 4:data 0:data 16:data 0
data 100:data 97:data 116:data 97
endfunction