120 DIM ESCALA$(25),NOTA(20),I(25)
150 GOSUB 240
160 GOSUB 580
170 GOSUB 780
180 GOSUB 1180
190 GOSUB 1340
240 CLS:KEY OFF
250 PRINT TAB(20) "Demostraci¢n de Escala"
260 PRINT
270 PRINT
280 PRINT TAB(10) "Elegir la escala que desea oir"
290 PRINT:PRINT "1. Tono Mayor"
300 PRINT "2. Tono Menor Armonico"
310 PRINT "3. Tono Diminuto"
320 PRINT "4. Tono Semidiminuto"
330 PRINT "5. Tono Completo"
340 PRINT "6. Blues"
350 PRINT
360 PRINT
370 INPUT;"INTRODUCIR ELECCIN DE ESCALA (1-6) 7 PARA SALIR ",S
380 ON S GOTO 420,430,440,450,460,470,540
390 PRINT:PRINT "Elecci¢n incorrecta, probar de nuevo"
400 FOR X=0 TO 1000:NEXT
410 GOTO 240
420 RESTORE 1400:NOTAS=7:GOTO 480
430 RESTORE 1410:NOTAS=7:GOTO 480
440 RESTORE 1420:NOTAS=8:GOTO 480
450 RESTORE 1430:NOTAS=7:GOTO 480
460 RESTORE 1440:NOTAS=6:GOTO 480
470 RESTORE 1450:NOTAS=6
480 FOR I=1 TO NOTAS
490 READ INTERVALO(I)
500 NEXT I
510 RETURN
540 SOUND 20000,0:END
580 CLS
590 PRINT "Introducir clave de la escala "
600 PRINT "(C,C+,D,E-,E,F,F+,G,G+,A,B-,B) - "
610 INPUT ;K$
620 VALIDO=0
630 RESTORE 730
640 FOR I=25 TO 36
650 READ TEST$
660 IF K$=TEST$ THEN VALIDO=1:RAIZ=1
670 NEXT I
680 IF VALIDO=0 THEN 700
690 RETURN
700 PRINT:PRINT "Elecci¢n incorrecta, probar de nuevo"
710 FOR X=0 TO 1000:NEXT X
720 GOTO 580
730 DATA "C","C+","D","E-","E","F","F+","G","G+","A","B-","B"
780 LOCATE 20,1
790 CLS:PRINT "CLAVE 1 = RETARDO "
800 PRINT "CLAVE 2 = ACELERANDO "
810 PRINT "CLAVE 3 = MODULAR UN SEMITONO ARRIBA "
820 PRINT "CLAVE 4 = INTRODUCIR NUEVA ESCALA"
830 PRINT "CLAVE 5 = FIN"
840 KEY(1) ON
850 KEY(2) ON
860 KEY(3) ON
870 KEY(4) ON
880 KEY(5) ON
890 ON KEY(1) GOSUB 980
900 ON KEY(2) GOSUB 1030
910 ON KEY(3) GOSUB 1080
920 ON KEY(4) GOSUB 1130
930 ON KEY(5) GOSUB 540
940 RETURN
980 SOUND 20000,0:TEMPO=TEMPO-20:IF TEMPO<32 THEN TEMPO=32
990 RETURN
1030 SOUND 20000,0:TEMPO=TEMPO+20:IF TEMPO>255 THEN TEMPO=255:RETURN
1040 RETURN
1080 SOUND 20000,0:RAIZ=RAIZ+1:GOSUB 1180
1090 RETURN
1130 SOUND 20000,0:GOSUB 240:GOSUB 580:GOSUB 1180:GOSUB 780
1140 RETURN
1180 ESCALA$=""
1190 TEMPO=80
1200 NOTA(0)=RAIZ
1210    ESCALA$="n" + STR$(NOTA(0))
1220 FOR Z=1 TO NOTAS
1230    NOTA(Z)=NOTA(Z-1) + INTERVALO(Z)
1240    ESCALA$=ESCALA$+"n"+STR$(NOTA(Z))
1250 NEXT Z
1260 FOR Z=NOTAS-1 TO 1 STEP -1
1270    NOTA((2*NOTAS)-Z)=NOTA((2*NOTAS)-Z-1) - INTERVALO(Z)
1280    ESCALA$=ESCALA$+"n"+STR$(NOTA(Z))
1290 NEXT Z
1300 RETURN
1340 PLAY "mbmnl8t"+STR$(TEMPO)+ESCALA$
1350 GOTO 1340
1400 DATA 10,10,5,10,10,10,5
1410 DATA 2,2,1,2,2,2,1
1420 DATA 2,1,2,2,1,3,1
1430 DATA 1,2,2,1,2,2,2
1440 DATA 2,2,2,2,2,2
1450 DATA 3,2,1,1,3,2

    Source: geocities.com/v.iniestra/basic

               ( geocities.com/v.iniestra)