'written by Koen Noens ' Standard Subs DECLARE SUB Waiting (SecondsToWait!) DECLARE SUB KeyInput () DECLARE SUB BlankLines (NumberOfLines) ' Subs DECLARE SUB introscrn () 'General Variables DIM cr AS STRING * 1 ' cariage return cr = CHR$(13) 'ASCII voor Enter, carriage return DIM Reply$ ' returns key from KeyInput SUB DIM ToneLength, TL DIM TypeChoice!, Nr! ' Type Record Snaar TYPE SnaarRecord Naam AS STRING * 10 Freq AS INTEGER END TYPE ' De 6 snaren DIM Snaar(6) AS SnaarRecord Snaar(1).Naam = "E (bass)" Snaar(1).Freq = 370 Snaar(2).Naam = "A" Snaar(2).Freq = 440 Snaar(3).Naam = "D" Snaar(3).Freq = 587 Snaar(4).Naam = "G" Snaar(4).Freq = 784 Snaar(5).Naam = "B" Snaar(5).Freq = 988 Snaar(6).Naam = "E (high)" Snaar(6).Freq = 1480 REM ________________________________________ CLS introscrn ' Snaaren overzicht op scherm PRINT cr; "Guitar strings are indicated as follows :"; cr FOR Teller = 1 TO 6 PRINT "Snaar "; Teller; " = "; Snaar(Teller).Naam NEXT ' setting lenght of tone to tune to DefaultTL = 8 RealTL = DefaultTL * 18.2 ' 18.2 clock tics for 1 second BlankLines 1 PRINT "You will hear the tone to tune to during "; DefaultTL; " seconds" PRINT "Change by typing desired lenght in seconds - [Enter] to continue" INPUT InputTL IF InputTL <> 0 THEN RealTL = InputTL * 18.2 PRINT "Tone to tune to will sound during "; InputTL; " seconds" END IF ToneLenght = RealTL / 18.2 BlankLines 2 PRINT "geef het nummer van de snaar die je wilt horen (1 tot 6)" PRINT "of toets [Enter] voor alle snaren, ‚‚n voor ‚‚n"; cr CHOICE: INPUT TypeChoice! Nr! = TypeChoice! SELECT CASE TypeChoice! CASE IS > 6 PRINT "Invalid choice - try again - a number from 1 to 6" GOTO CHOICE CASE IsEmpty, 0 First = 1 Last = 6 CASE 1 TO 6 First = Nr! Last = First END SELECT CLS introscrn PRINT cr, , , "N for Next string" PRINT , , , "any other key to Repeat a string" PRINT , , , "Q to Quit" PRINT "Tune ..."; cr FOR Tune = First TO Last PRINT "Tune string nr. "; Tune, "= "; Snaar(Tune).Naam SLEEP 1 DO SOUND Snaar(Tune).Freq, RealTL SLEEP ToneLenght KeyInput IF Reply$ = "q" THEN END LOOP UNTIL Reply$ = "n" NEXT ' Tune next string PRINT cr; "Finished" END SUB BlankLines (NumberOfLines) ' print (a number of) blank lines, for better screen layaut FOR Counter = NumberOfLines TO 1 STEP -1 PRINT NEXT END SUB SUB introscrn BlankLines 4 PRINT " Silly Software Productions"; cr PRINT " G U I T A R T U N E R"; cr PRINT " -=oOo=-"; cr PRINT "________________________________________________________________________________" END SUB SUB KeyInput ' Waits for a key and returns this key as a Reply$ DO Reply$ = LCASE$(INKEY$) LOOP UNTIL Reply$ <> "" END SUB SUB Waiting (SecondsToWait!) REM Waits during a given number of seconds (Aantal Seconden!) ' TIMER wordt (in LOOP) gecontroleerd tot TIMER is toegenomen met SecondsToWait ThisMoment = TIMER DO UNTIL TIMER > ThisMoment! + SecondsToWait! IF TIMER < ThisMoment! THEN ThisMomemnt! = ThisMoment! - 86400 REM this takes care of Waiting 'till past midnight LOOP END SUB