Look at this thing I coded years ago...
Code:
DECLARE SUB centra (y, t$)
actual = 1
ac = 1
DIM t(12)
DIM a$(12)
a$(1) = "C"
a$(2) = "C#"
a$(3) = "D"
a$(4) = "D#"
a$(5) = "E"
a$(6) = "F"
a$(7) = "F#"
a$(8) = "G"
a$(9) = "G#"
a$(10) = "A"
a$(11) = "A#"
a$(12) = "B"
DIM modo$(8)
modo$(1) = "Major"
modo$(2) = "Dorian"
modo$(3) = "Phrygian"
modo$(4) = "Lydian"
modo$(5) = "Major Pentat¢nic"
modo$(6) = "Minor Pentat¢nic"
modo$(7) = "Mixolydian"
modo$(8) = "Blues"
DIM m$(8)
RESTORE
FOR i = 1 TO 8
FOR j = 1 TO 12
READ m
m$(i) = m$(i) + LTRIM$(RTRIM$(STR$(m)))
NEXT j
NEXT i
DIM cuerdas(6, 16)
FOR i = 1 TO 6: FOR j = 1 TO 16
READ cuerdas(i, j)
NEXT j, i
REM C C#D D#E F F#G G#A A#B
DATA 1,0,1,0,1,1,0,1,0,1,0,1
DATA 1,0,1,1,0,1,0,1,0,1,1,0
DATA 1,1,0,1,0,1,0,1,1,0,1,0
DATA 1,0,1,0,1,0,1,1,0,1,0,1
DATA 1,0,1,0,1,0,0,1,0,1,0,0
DATA 1,0,0,1,0,1,0,1,0,0,1,0
DATA 1,0,1,0,1,1,0,1,0,1,1,0
DATA 1,0,1,0,1,1,1,0,0,1,0,0
DATA 5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8
DATA 12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3
DATA 8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11
DATA 3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6
DATA 10,11,12,1,2,3,4,5,6,7,8,9,10,1,2,3
DATA 5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8
SCREEN 0
COLOR 7, 5
CLS : LOCATE 1, 1
COLOR 14, 1
PRINT " Escalas Musicales V. 2.1, (C) 1998 por JLC, LS multimedia "
VIEW PRINT 18 TO 25
COLOR 0, 7
CLS 2
VIEW PRINT
LOCATE 18, 1: PRINT STRING$(80, "Ã")
VIEW PRINT 25 TO 25
COLOR , 1
CLS 2
VIEW PRINT
COLOR 12, 7
centra 18, "Intrucciones de Uso"
COLOR 9
VIEW PRINT 19 TO 25
PRINT " Use Q & A to change the root note and W & S to change the mode."
PRINT " ESC to exit"
VIEW PRINT
GOSUB pintar
'main loop, o como ze diga
DO
k$ = INKEY$
SELECT CASE k$
CASE "q", "Q"
actual = actual + 1
IF actual = 13 THEN actual = 1
GOSUB pintar
CASE "a", "A"
actual = actual - 1
IF actual = 0 THEN actual = 12
GOSUB pintar
CASE "w", "W"
ac = ac + 1
IF ac = 9 THEN ac = 1
GOSUB pintar
CASE "s", "S"
ac = ac - 1
IF ac = 0 THEN ac = 8
GOSUB pintar
CASE CHR$(27): CLS : SYSTEM
END SELECT
LOOP
END
pintar:
' Calcula las notas:
' girar: C no gira nada, C# gira 1...
IF actual > 1 THEN n$ = RIGHT$(m$(ac), (actual - 1)) + LEFT$(m$(ac), LEN(m$(ac)) - (actual - 1)) ELSE n$ = m$(ac)
COLOR 14, 0
LOCATE , 1
' Pintar en el teclado:
LOCATE 2, 1
COLOR 14, 4
PRINT SPACE$(80)
LOCATE 2, 1: PRINT " Escala actual de " + a$(actual) + " " + modo$(ac)
FOR i = 3 TO 10: LOCATE i, 1: COLOR 8, 7: PRINT STRING$(80, "°"): NEXT i
FOR i = 3 TO 9
FOR j = 1 TO 7
LOCATE i, j * 4 + 2
COLOR 15: PRINT STRING$(3, "Ã")
NEXT j, i
FOR i = 3 TO 6
FOR j = 1 TO 6
IF j <> 3 THEN
LOCATE i, j * 4 + 4
COLOR 0: PRINT STRING$(3, "Ã")
END IF
NEXT j, i
FOR i = 4 TO 9
LOCATE i, 41: PRINT SPACE$(36)
NEXT i
COLOR 0, 2
LOCATE 4, 41: PRINT SPACE$(36)
LOCATE 4, 42: PRINT "NOTAS DE LA ESCALA:"
' Marcar las teclas
notass$ = ""
FOR i = 1 TO 12
IF MID$(n$, i, 1) = "1" THEN
notass$ = notass$ + a$(i) + " "
IF i = 1 OR i = 3 OR i = 5 OR i = 6 OR i = 8 OR i = 10 OR i = 12 THEN
LOCATE 8, (i \ 2) * 4 + 7
COLOR 0, 7: PRINT "X"
ELSE
IF i < 5 THEN
LOCATE 5, (i \ 2) * 4 + 5
COLOR 7, 0: PRINT "X"
ELSE
LOCATE 5, (i \ 2) * 4 + 9
COLOR 7, 0: PRINT "X"
END IF
END IF
END IF
LOCATE 6, 43: COLOR 0, 7: PRINT notass$
NEXT i
' Rellenar la guitarra
PALETTE 5, 56
COLOR 7, 5
w1$ = "ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÿ"
w2$ = "ÃÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃÃÃ
ÃÃô"
w3$ = "ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ"
LOCATE 17, 1
COLOR 14
PRINT " "; : COLOR , 1: PRINT "3"; : COLOR , 5: PRINT " "; : COLOR , 1: PRINT "5"; : COLOR , 5: PRINT " "; : COLOR , 1: PRINT "7"; : COLOR , 5: PRINT " "; : COLOR , 1: PRINT "9"; : COLOR , 5: PRINT " "; : COLOR , 1: PRINT "12"; : COLOR , 5: PRINT " "; : COLOR , 1: PRINT "15": COLOR , 5
COLOR 7
FOR i = 11 TO 16
LOCATE i, 1: PRINT SPACE$(80)
IF i = 11 THEN LOCATE i, 2: PRINT "1. " + w1$
IF i > 11 AND i < 16 THEN LOCATE i, 2: PRINT LTRIM$(RTRIM$(STR$(i - 10))) + ". " + w2$
IF i = 16 THEN LOCATE i, 2: PRINT "6. " + w3$
NEXT i
FOR i = 1 TO 6
FOR j = 1 TO 16
IF MID$(n$, cuerdas(i, j), 1) = "1" THEN
LOCATE 10 + i, 4 * j - 1
IF cuerdas(i, j) <> actual THEN COLOR 15, 5 ELSE COLOR 12, 5
PRINT "þ"
END IF
NEXT j, i
RETURN
SUB centra (y, t$)
LOCATE y, 41 - LEN(t$) \ 2
PRINT t$
END SUB