14.1. EXPERIMENTA
1) Introduce en la unidad
de discos A el Disco de Utilidades, carga el siguiente
fichero e imprime en papel su contenido:
?carga "música
?eco "lpt1
?im "común
?noeco
2) Define el
siguiente procedimiento y ejecútalo
para frere :k
haz "f [do4 re4 mi4
do4 do4 re4 mi4 do4 mi4 fa4 sol14 mi4 fa4 sol14 sol4
la4 sol4 fa4 mi4 do4 sol14 la4 sol14 fa4 mi4 do4 re4 si3 do4]
haz"d[2 2 2 2 2 2 2 2 2 2 4
2 2 4 1 1 1 1 2 2
1 1 1 1
2 2 2 2
4]
común :f :d :k
fin
Ejecución:
?notas
?frere 2
?frere 4
?frere 8
?frere 1
?frere.5
3) Define los siguientes
procedimientos y ejecútalos:
para tocar
bp bt ot
poncursor [10 10]
es[q = do\ \ \ \ \ \w=re]
poncursor [16 22] es
[f =fin]
órgano
fin
para órgano
local "c
haz "c lc
si "q = :c [tono :do4 4]
si "w = :c [tono :re4 4]
si "f = x
[pt bt alto]
órgano
fin
Ejecución:
?tocar
Pulsa las teclas q w f
y repite tocar
4) Añadimos nuevos
elementos al procedimiento órgano
para órgano
local "c
haz "c lc
poncursor [15 23] es
"\ \ \ \ \
poncursor [15 23]
si "q = :c [tono :do4 4 es "DO]
si "w = :c [tono :reo 4 es "RE]
si "f =
:c [pt bt alto]
órgano
fin
Ejecución:
?tocar
5) Carga del Disco de
Utilidades el archivo MUSIMEMO y teclea luego las siguientes órdenes:
?imts
?imtodo
?notas
?bp
órganom
Pulsa repetidas veces las
letras q w e r
Después de un tiempo
pulsa la m
Dale el nombre que
quieras y continua tocando.
Repite esta secuencia
varias veces.
Pulsa ahora la c
Trata de entender lo que
hace el ordenador.
14.2. OBSERVA
SOLFEANDO UNA CANCION
Notas musicales:
A cada nota
le damos un nombre según su colocación en el pentagrama
do Corresponde a la nota atravesada por una
línea auxiliar debajo de I
primera
línea del pentagrama.
re Es la
nota que está situada justo debajo de la primera línea del pentagrama.
mi Está
atravesada por la primera línea.
fa Está
entre la primera y segunda línea.
sol Está
atravesada por la segunda línea.
la Está
entre la segunda y tercera línea.
si Está
atravesada por la tercera línea.
DURACIONES DE LAS NOTAS:
Depende de la figura de
las notas, sólo utilizaremos las siguientes:
Redonda =8 blanca = 4 negra = 2 blanca=1
A la corchea le asignamos
la duración 1, las demás tienen doble duración que la anterior.
ENSEÑANDO UNA CANCION AL
ORDENADOR
Para enseñar una canción
al ordenador basta con introducirle en un procedi
miento dos listas en las que estarán las notas y las duraciones.
para
frere :k
haz
"f [do4 reo mi4 do4 do4 reo mi4 do4 mi4 fa4 so14
mi4 fa4 solo so14 la, solo fa4 mi4 do4 solo lao solo
fa4 mi4 do4 reo si3 do4] haz"d[2 2 2 2 2 2 2 2 2 2 4
2 2 4 1 1 1 1 2 2
1 1 1 1
2 2 2 2
4 ]
común :f
:d :k
fin
El procedimiento común nos ayuda a interpretar canciones
leyendo su parti tura.
para
común :f :d :k
si
y [ ] - :f [ ] = :d [alto]
tono
valor pr :f :k * pr :d
común
mp :f mp
:d :k
fin
Es un procedimiento
recursivo que va tomando los elementos de dos listas, un de frecuencias y otro
de duraciones y se los presenta como entradas a la primitiv
tono.
MEMORIZANDO
CANCIONES EN EL ORDENADOR
Mediante el procedimiento
ejecución conseguimos
que a la vez que se emite un sonido y se escribe el nombre de la nota, ésta se
vaya incluyendo en una lista a la que se pone nombre en memoriza y se convierte en procedimiento.
Con el procedimiento Interpreta podemos oir
de nuevo lo que antes hemos tocado.
14,3. RESOLUCION DE
PROBLEMAS
PROBLEMA 1:
1) Define un
procedimiento que permita tocar la siguiente canción.
2) ¿Qué canción es?
PROBLEMA 2:
Amplía los procedimientos
tocar y órganos del EXPERIMENTA para tener octava 41 completa y poder usar el
ordenador como un órgano.
PROBLEMA 3:
Define un
procedimiento que se combine con órgano para que dibuje las noti
en un pentagrama.
PROBLEMA
4:
Define un procedimiento
interactivo que permita memorizar una canción a
vez que se va
interpretando con el procedimiento órgano.
PROBLEMA
5:
Define un
menú con una variable global arranque para los
contenidos de e: tema.
14.4. SOLUCIONES
PROBLEMA 1:
1)
para
cumpleaños :k
recicla
haz
"f [do4 do4 reo do4 fa4 mi4 do4 do4 reo do4 so14 fa4 do4 do4
do51a4 fa4 mi4 reo la#4 la#4
lao fa4 so14 fa4 s]
haz"d
[1 1 2 2 2 4 1 1 2 2
2 4 1 1 2 2 2 2 2 1 1 2 2
2 4 2 ]
común :f
:d :k
fin
Ejecución:
?cumpleaños 2
2) La canción era el
"cumpleaños feliz"
PROBLEMA 2:
Añadimos las letras que
hacen sonar las diversas notas en los procedimientos
tocar y órgano.
para
tocar
bp bt ot
poncursor [0 21]
es
[Q\=\do W\=\re E\=\mi R\=\fa T\=\sol
Y\=\la U\=\si
I\=\do]
poncursor [4 22]
es
[2\=\do# 3\=\re# 5\=\fa# 6\=\sol# 7\=\la#]
poncursor [16 23]
es
[F = Fin]
órgano
fin
para órgano
local
"c
haz
"c Ic
poncurcor [17 15] es "\ \ \ \ \
poncursor [17 15]
si "q = :c [tono :do4 4 es
"DO]
si "w = :c [tono :reo 4 es
"RE]
si "e = :c [tono :mi4 4 es
"MI]
si
"r = :c [tono :fa4 4 es "FA]
si
"t = :c [tono :sol4 4 es" SOL]
si
"y = :c [tono :la4 4 es "LA]
si
"u= :c [tono :si4 4 es
"SI]
si
"1 = :c [tono :dos 4 es "DO]
si
2 = :c [tono :do#4 4 es
"DO#]
si
3 = :c [tono :re#4 4 es
"RE#]
si 5 = :c [tono :fa#4 4 es "FA#]
si 6 = :c [tono :sol#4 4 es "SOL#]
si 7 = :c [tono :la#4 4 es "LA#]
si "f = :c [pt bt alto]
órgano
fin
Ejecución:
?tocar
PROBLEMA 3:
Necesitamos los procedimientos
del tema anterior con los que dibujábamos pentagramas y luego modificar tocar y
órgano.
para
tocar1
bp
bt ot
pentagrama
60
clave
si poncursor [0 21]
es
[Q\=\do W\=\re E\=\mi R\=\fa T\=\sol
Y\=\la U\=\si
I\=\do]
poncursor
[4 22] es [2\=\do# 3\=\re#
5\=\fa# 6\=\sol# 7\=\la#]
poncursor
[16 23]
es
[F = Fin]
órgano1
fin
para
órgano1
local
"c
haz
"c lc
poncursor
[15 15] ponforma
"negra mt
si
"q = :c [ponforma
"negrad ponpos [-100
30] tono :do4 4 es "\ \ DO]
si "w = :c [ponpos [-80 34] tono :reo 4 es "\ \ RE]
si
"e = :c [ponpos [-60
37.5] tono: mi4 4 es "\ \ MI]
si
"r = :c [ponpos [-40
39.5] tono :fa4 4 es"\\ FA]
si
"t = :c [ponpos [-20
43] tono :sol4 4 es "\ SOL]
si
"y = :c [ponpos [0
44.5] tono :la4 4 es "\ \ LA]
si
"u = :c [ponpos [20
48.5] tono :si4 4 es "\ \ SI]
si
"i = :c [ponpos [40
50.6] tono :dos 4 es "\ \ DO]
si
2 = :c [ponforma "negrads ponpos [-100 30]
tono :do#4 4 es "\ DO#]
si
3 = :c [ponforma "negrads ponpos [-80 35]
tono :re#4 4 es "\ RE#]
si
5 = :c [ponforma
"negras ponpos [-40 40]
tono :fa#4 4 es "\ FA#]
si
6 = :c [ponforma
"negras ponpos [-20 42.5] tono :sol#4 4 es "SOL#]
si
7 = :c [ponforma
"negras ponpos [0 45] tono :la#4
4 es "\ LA#]
si
"f = :c [pt bt alto]
órgano1
fin
Ejecución:
?tocar1
PROBLEMA 4:
Modificamos el
procedimiento órgano1, introduciendo
ejecución. Definimos los
procedimientos memoriza, Interpreta,
ejecución y ampliamos el menú de letras.
para
tocarm
bp
bt ot pentagrama 60 clave
sl
poncursor [0 21]
menúm
órganom
fin
para
menúm
bt
es
[Q\=\do W\=\re E\=\mi R\=\fa T\=\sol
Y\=Va U\=\si
I\=\do]
poncursor
[1 21 es [M\=\Memoriza]
poncursor
[23 22] es [C\=\Interpreta]
poncursor
[123] es [2\=\do# 3\=\re# 5\=\fa# 6\=\sol# 7\=\la# F\=\fin]
fin
para órganom
local "c
haz "c lc poncursor [1515] ponforma "negra mt
si "q = :c [ejecución [ponforma "negrad ponpos [-100 30] tono :do4 4 es "\ \ DO]]
si "w = :c [ejecución [ponpos [-80 34] tono :reo 4 es "\ \ RE]]
si "e = :c [ejecución [ponpos [-60 37.5] tono :mi4 4 es "\ \ MI]]
si "r = :c [ejecución [ponpos [-40 39.5] tono :fa4 4 es "\ \ FA]]
si "t = :c [ejecución [ponpos [-20 43] tono :sol4 4 es "\ SOL]]
si "y = :c [ejecución [ponpos
[0 44.5] tono la4 4 es "\ \ LA]]
si "u = :c [ejecución [ponpos [20 48.5] tono :si4 4 es "\ \ SI]]
si "1 = :c [ejecución [ponpos [40 50.6] tono :dos 4 es "\ \ DO]]
si 2 = :c [ejecución [ponforma "negrads ponpos [-100 30] tono :do#4
4 es "\ DO#]]
si 3 = :e [ejecución [ponforma "negras ponpos [-80
34] tono :re#4 4 es "\ RE#]]
si 5 = :c [ejecución [ponforma "negras ponpos [-40
39.5] tono :fa#4 4 es "\ FA#]]
si 6 = :c [ejecución [ponforma "negras ponpos [-20
43] tono :sol#4 4 es "SOL#]]
si 7 = :c [ejecución [ponforma "negras ponpos [0
44.5] tono :la#4 4 es "\ LA#]]
si "m = :c [memoriza menúm
órganom]
si "c = :c [interpreta menúm
órganom]
si "f = :c [pt bt alto]
órganom
fin
para
ejecución :acción
ejecuta
:acción
haz
"órdenes (pu :acción :órdenes)
fin
para
memoriza
bt
es
[¿Cómo quieres llamar a esta canción?]
es
[Pulsa INTRO después del nombre]
haz
"nombre pr ll
si
no miembro? :nombre :nombres [haz "nombres pu :nombre :nombres]
define :nombre
(pp [ ] :órdenes)
bt
haz "órdenes [ ]
fin
para
interpreta
bt
si:
nombres = [ ] [es [Aún no sé ninguna canción] espera
50 alto] es [Sé las canciones siguientes:]
es
:nombres
es
[¿Qué canción quieres que interprete?]
haz
"canción ll
si
no miembro? pr :canción :nombres [interpreta alto]
ejecuta
:canción
bt
fin
Ejecución:
?tocarm
PROBLEMA 5:
Los apartados del menú
pueden ser:
1.‑ Cumpleaños
2.‑ Frere
3.‑ Tocar el órgano
4.‑ Tocar el órgano y
memorizar
5.‑ FIN
para
menú
ponfondo
1 ponpaleta 0
cargadib
"menú
ot
ponct
[1 0]
poncursor
[6 11] es [OPCIONES \ \ \ \ \ EJECUCION]
ponct
[3 0]
poncursor
[10 13] es [1 \ \ \ \ \ Cumpleaños]
poncursor
[10 14] es [2 \ \ \ \ \ Frere]
poncursor
[10 15] es [3 \ \ \ \ \ Tocar el órgano]
poncursor
[10 16] es [4 \ \ \ \ \ Tocar el órgano]
poncursor
[17 17] es [y memorizar]
poncursor
[10 18] es [5 \ \ \ \ \ FIN]
ponct
[2 0]
poncursor [8 20] es [Pulsa la opción deseada]
opciones
fin
para
opciones
haz
"a lc
si
no miembro? :a [1 2 3 4 5] [menú]
si
1= :a [cumpleaños 5 opciones alto]
si
2 = :a [frere 5 opciones alto]
si
3 = :a [bp tocar1 continuar alto]
si
4 = :a [bp tocarm continuar
alto]
si
5 = :a [pt bt alto] fin
para
continuar
local
"v
poncursor
[3 24]
teclea
[¿Quieres volver al menú? \(S\/N\)\ ]
haz "v lc
si "s = :v [menú]
pt bt
fin
Arbol de los procedimientos:
menú --.opciones (*)------------ cumpleaños
Frere
tocarl
tocarm
Ejecución:
?menú
Definimos una variable arranque y lo
guardamos en el disco.
?haz "arranque [menú]
?guarda "tema14
14.5. PROYECTO
PROYECTO 1. Música
Dibujar partituras
de canciones con el ordenador.
Sebástián
Timón
Ramón
Castro
Colegio
Ntra. Sra. del Pilar
Madrid
PROYECTO 2.
Música
Enseñarle al ordenador
canciones infantiles o populares y presentarlas en u rnenú
para poder oir la que queremos.
Jesús Hernández
José A. Morán
José A. Casmartiño
Colegio Los Sauces
Madrid