100 REMark MUSIC PLAYER - v1.03
110 REMark Mark J Swift - 26 Feb 94
120 REMark Simple graphics added SNG
130 :
140 REMark BEEP <pitch> gives frequency
150 REMark approx to 11447/(10.6+<pitch>)
160 :
170 PLAY_MUSIC(6E-2)
180 STOP
190 :
9000 REMark This program is FREEWARE, do
9010 REMark with it as you will.
9020 REMark To remove graphics, delete the
9030 REMark lines marked: "-gfx-".
9040 :
9050 DEFine PROCedure PLAY_MUSIC(tempo)
9060  LOCal Note$(3),dur,pitch,getdata,loop,poll
9070  OPEN#3;"Con_272x134a120x60":WINDOW#3;272,134,120,60:PAPER#3;0:INK#3;7:CLS#3:BORDER#3;3,2:BORDER#3;2,0:BORDER#3;1,2:WINDOW#3;256,120,128,68:CSIZE#3;3,1:PRINT#3;"PLAY_MUSIC v1.03":CSIZE#3;2,0:AT#3;11,0:INK#3;4:PRINT#3;"Press <ENTER> to quit";:WINDOW#3;256,86,128,90:PAPER#3;2:CLS#3:REMark -gfx-
9080  REPeat loop
9090   RESTORE 9300
9100   REPeat getdata
9110    READ Note$,dur
9120    IF Note$=="QIT" THEN EXIT loop
9130    IF Note$=="LUP" THEN EXIT getdata
9140    IF (KEYROW(1)&&1) THEN EXIT loop
9150    pitch=INT(11447/((55*2^(Note$(3)-1))*(EXP(LN(2)*((Note$(1 TO 2)INSTR"C C#D D#E F F#G G#A A#B "-19)/2)/12)))-10.6+.5)
9160    REPeat poll : IF NOT BEEPING THEN EXIT poll
9170    BEEP dur*tempo*1000000/72,pitch
9180    SCROLL#3;dur+1:BLOCK#3;8,dur,pitch-9,0,7:REMark -gfx-
9190   END REPeat getdata
9200  END REPeat loop
9210  CLOSE#3: REMark -gfx-
9220 END DEFine 
9230 :
9240 REMark Store music in DATA statements
9250 REMark ie DATA note,dur,note,dur,etc.
9260 REMark Lowest note F 1, highest B 4.
9270 REMark Use # symbol for sharp notes,
9280 REMark i.e. "F#1", "A#2" etc.
9290 :
9300 DATA "G 3",2,"A 3",2
9310 DATA "B 3",4,"B 3",4,"B 3",4,"B 3",4
9320 DATA "A 3",4,"B 3",4,"G 3",4,"G 2",2,"A 2",2
9330 DATA "B 2",4,"B 2",4,"B 2",4,"A 2",2,"G 2",2
9340 DATA "B 2",4,"B 2",4,"B 2",4,"G 3",2,"A 3",2
9350 DATA "B 3",4,"B 3",4,"B 3",4,"B 3",4
9360 DATA "A 3",4,"B 3",4,"G 3",4,"G 2",2,"A 2",2
9370 DATA "B 2",4,"B 2",4,"B 2",4,"A 2",2,"G 2",2
9380 DATA "B 2",12,"B 3",4
9390 DATA "B 3",6,"C 4",2,"D 4",4,"B 3",4
9400 DATA "E 4",4,"E 4",4,"D 4",4,"B 3",4
9410 DATA "B 3",6,"C 4",2,"D 4",4,"B 3",4
9420 DATA "A 3",4,"G 3",4,"F#3",4,"G 3",2,"A 3",2
9430 DATA "B 3",4,"B 3",4,"B 3",4,"B 3",4
9440 DATA "A 3",4,"B 3",4,"D 3",4,"G 3",2,"A 3",2
9450 DATA "B 3",4,"B 3",4,"B 3",4,"A 3",2,"G 3",2
9460 DATA "A 3",2,"G 3",2,"A 3",2,"B 3",2,"C 4",4,"G 3",2,"A 3",2
9470 DATA "B 3",4,"B 3",4,"B 3",4,"A 3",2,"G 3",2
9480 DATA "A#3",8,"G 3",4,"A 3",2,"G 3",2
9490 DATA "B 3",4,"B 3",4,"B 3",4,"A 3",2,"F#3",2
9500 DATA "G 3",12
9510 DATA "LUP",0
