'===========================================================================
' Subject: PIANO NOTES                        Date: Unknown Date (00:00)   
'  Author: Charles Graham                     Code: QB, QBasic, PDS        
'  Origin: PIANO,NOTES                      Packet: SOUND.ABC
'===========================================================================
'> How can I calculate all the notes on
'> a piano (Notes 1-84)?
'
REM PITCH.BAS by Charles Graham
' There are 88 keys on a standard piano keyboard.
' This program lists the approximate Cycles-Per-Second
' for each piano key and plays the tone.
DIM keyno$(12)
FOR x = 1 TO 12
    READ keyno$(x)
NEXT x
keyno = 1
mult = 1.059463
pitch = 27.5
CLS
COLOR 15, 1
PRINT STRING$(17, "-");
PRINT " Piano Note Frequencies ";
PRINT STRING$(17, "-")
PRINT "Key #", "Note", "  CPS", "Comments        "
LOCATE 25, 1
PRINT SPACE$(18);
PRINT "Press a key to continue";
PRINT SPACE$(18);
COLOR 12, 0
LOCATE 3, 1
VIEW PRINT 3 TO 24
DO
    PRINT USING " ##"; keyno;
    PRINT ,
    note = note + 1
    IF note > 12 THEN
        note = 1
    END IF
    PRINT keyno$(note),
    IF keyno$(note) = "A" AND pitch >= 37 THEN
        pitch = INT(pitch + .5)
    END IF
    PRINT USING "####.##"; pitch;
    IF keyno = 40 THEN
        PRINT , "Middle C";
    END IF
    IF pitch >= 37 THEN
        SOUND pitch, 4
        PRINT
    ELSE
        PRINT , "Too low to sound"
    END IF
    keyno = keyno + 1
    pitch = pitch * mult
    DO
        a$ = INKEY$
    LOOP UNTIL LEN(a$)
LOOP UNTIL keyno > 88
VIEW PRINT 1 TO 25
LOCATE 25, 1
COLOR 15, 1
PRINT SPACE$(20);
PRINT "Press a key to end";
PRINT SPACE$(21);
DO
    a$ = INKEY$
LOOP UNTIL LEN(a$)
COLOR 7, 0
CLS
END
DATA "A", "A#/Bb", "B", "C", "C#/Db", "D"
DATA "D#/Eb", "E", "F", "F#/Gb", "G", "G#/Ab"
