Orquesta con Scratch

19 de noviembre de 2022

¿Sabíais que se puede hacer una orquesta con Scratch? ¡Pues sí! ¡Con Scratch las posibilidades son casi infinitas! Más o menos, hasta donde llegue la imaginación. Así que, aprovechando que en clase, además de much@s buen@s programadores/as, tenemos un maestro musical, nos lanzamos a por ello. A continuación os vamos a contar lo que hemos hecho las últimas semanas.

Un poco de teoría musical (básica)

Un sonido viene definido por 4 parámetros: altura, intensidad, duración y timbre. Cada uno de ellos se puede modificar en Scratch:

  • Altura: notas

  • Intensidad: volumen

  • Duración: figuras musicales

  • Timbre: ¡puedes elegir el instrumento que quieras!

¿Qué es una partitura?

Una partitura es un documento que representa e indica cómo debe interpretarse una composición musical, mediante un lenguaje propio formado por signos musicales. La partitura consta de un pentagrama, formado por cinco líneas y cuatro espacios, sobre el cual se ubican los símbolos que representan los componentes musicales de la obra escrita en ella.

¿Qué son las notas?

Una nota representa un sonido con una determinada altura. Las notas, representadas en el pentagrama, son las siguientes.

Duración de las notas

En una canción, cada nota se puede tocar con una duración determinada. Para representar la duración de las notas en una partitura se utilizan una serie de figuras. A continuación se muestra una tabla en la que se representan todas las figuras que vamos a utilizar, con su nombre, dibujo, duración y la representación equivalente en el que queramos representar un silencio de la misma duración.

¿Qué es el tempo de una canción?

El tempo de una canción marca la velocidad a la que se va a interpretar. Podemos modificar la velocidad del pulso de la pieza. Se mide por el número de pulsos (unidad de tiempo) por minuto. Así tendríamos que una velocidad de pulso=60 sería velocidad de un segundo.

Si queréis que la interpretación sea más rápida aumentaremos el tiempo o viceversa.

Ejercicio propuesto

Pues bien, una vez que hemos dado una pequeña introducción musical, os proponemos componer una orquesta con Scratch a partir de una melodía. La melodía está compuesta de un instrumento principal, una serie de instrumentos secundarios a modo de coro, un ritmo de percusión y, en algunos, un ritmo adicional a modo de "campanilla". Lo que se pretende hacer es que, cuando se pulse la bandera verde, la orquesta comience a tocar, pero lo debe hacer de forma progresiva, repitiendo la melodía de la forma siguiente:

  1. En una primera repetición, únicamente tocará el instrumento principal.

  2. En la segunda repetición, tocará el instrmento principal y entrarán los coros.

  3. En la tercere repetición, además del intrumento principal y los coros, entrará el ritmo de percusión.

  4. A la cuarta repetición, en el caso de que la melodía elegida tenga la campanilla, ésta entrará, a la vez que los demás (instrumento principal, coros y ritmo de percusión).

Podéis elegir una de las siguientes partituras:

Solución por pasos

A continuación, os describimos cómo desarrollar el programa correspondiente a la partitura 1.

Lo primero, será seleccionar nuestro fondo favorito y nuestros personajes. En nuestro caso, hemos elegido a Gato, como no podía ser de otra forma, para la melodía principal, que será interpretada con un piano, a Pica, Giga y Nano, para los coros, haciendo uso del violonchelo, a Tara, que se encargará del ritmo de percusión, y a Campana (el personaje en Scrach se encuentra como Bell, aunque luego lo podemos renombrar a Campana), que se encargará del ritmo de la campanilla, interpretado con un triángulo. Una vez elegidos, habrá que disponerlos en el escenario como a cada uno le guste. Un ejemplo es el siguiente:

A continuación, empezamos con la parte musical. Tendremos que programar cada uno de los personajes con la parte de la melodía que van a interpretar. Puesto que el que va a dirigir la orquesta va a ser Gato, comenzaremos con él. Lo primero de todo, será que en nuestro programa activemos la extensión de música, que nos permitirá tocar cualquier nota de distintos instrumentos. Para hacerlo, pulsando en el botón que aparece en la esquina inferior izquierda, añadiremos la siguiente extensión:

Lo siguiente, será que cuando se pulse la bandera verde, se fije el tempo con el que se va a tocar, que será el número de notas negras (de duración 1) que se tocarán en un minuto.En nuestra partitura, el tempo aparece arriba, junto a una nota negra, de la siguiente forma:

Pues bien, en nuestro caso, el tempo será de 90 y lo marcaremos con el bloque "dar al tempo el valor 90" (dentro de los bloques de la sección música). Es importante señalar que el tempo será común a todos los personajes. Es decir, no podremos tener un personaje tocando a una velocidad y otro a otra, pues ambos deben ir acompasados. Lo que sí que podemos es dar a cada personaje un volumen determinado. En el caso del Gato, que como hemos dicho será el que toque la melodía principal, podemos darle el volumen al máximo, mediante el bloque "fijar volumen al 100%" dentro de la sección de Sonido. ¿Y qué más? Pues tendremos que fijar el instrumento que va a tocar Gato, mediante el bloque "fijar instrumento a Piano", de la sección Música. De momento, nos va quedando así:

Ahora viene la parte de traducir notas de la melodía a bloques de Scratch. Pero, en Scratch no tenemos bloques para tocar un Do, Re, Mi, ..., ¿cómo lo hacemos? Correcto, en Scratch los bloques que tenemos para tocar notas utilizan una representación numérica de las notas (sistema inglés). Por tanto, necesitamos una tabla para traducir las notas que aparecen dibujadas en la melodía a bloques de Scratch con el número de nota en el sistema inglés. La tabla que nos permite esta conversión es la siguiente:

Como podéis ver, para cada nota se ofrecen dos valores, cada uno se corresponde con el valor de la nota en el sistema inglés. El primero, cuyo número es más bajo, se corresponde con el sonido más grave. El segundo, cuyo número es más alto, se corresponde con el sonido más agudo. Dependiendo de cómo queramos que suene nuestra canción, podremos usar uno u otro número.

Haciendo uso de la tabla anterior, tendremos que programar nuestra melodía. Puesto que intuimos que va a ser algo larga, lo mejor es crear un bloque de Mis bloques, llamado "melodía piano", donde meteremos todas las notas. Con mucho cuidado, el bloque definido nos quedará así:

Si en este momento pulsamos sobre el bloque definido, escucharemos la fantástica canción que nuestro maestro musical nos ha preparado. ¿La vais reconociendo? ¡Seguro que sí!

Lo siguiente será comenzar a tocar la melodía cuando se pulse la bandera verde, por lo que tendremos que llamar al bloque "melodia piano" en la secuencia de programación que habíamos creado. Pero no la queremos tocar sólo una vez, sino que queremos que se repita varias veces para que los coros, el ritmo y la campanilla vayan entrando poco a poco. Por tanto, eso nos suma cuatro repeticiones (una correspondiente a un solo de piano y tres del resto - coros, ritmo y campanilla). ¿Y para repetir cuatro veces? Pues un bucle:

El programa nos empieza a funcionar. Si os fijáis, hemos introducido un bloque para darle efecto a Gato y que brille cuando comience a tocar. ¿A qué queda chulo?

Ahora nos toca la parte más complicada, que será sincronizar al resto de personajes para que vayan entrando a su debido tiempo. ¿Y cómo los sincronizamos? Pues lo mejor es hacerlo mediante el envío de mensajes. Cuando Gato envíe un mensaje de "comenzar coros", los coros (interpretados por Pico, Giga y Nano) empezarán al unísono. Cuando Gato envíe un mensaje de "comenzar ritmo", Tera empezará con la percusión. Y, por último, cuando Gato envíe el mensaje de "comenzar campana", la campana sonará. Vayamos por partes. De momento, vamos a ver cómo programaríamos a cada uno de los coros (ponemos el ejemplo con Pico, aunque el resto serán análogos, con la única diferencia de que las notas serán las que aparezcan en la partitura):

La programación es parecida a la de Gato, pero la principal diferencia es que Pico no empezará cuando se pulse la bandera verde, sino cuando se reciba el mensaje de comenzar coros (bloque "al recibir comenzar coros"). Además, en este caso, Pico tocará el violonchelo y el volumen se lo fijaremos al 30%, para que no suene demasiado alto. Y también le daremos un efecto cuando comience.

El resto de coros será prácticamente igual, teniendo cuidado de seleccionar las notas y duración correcta de las mismas según nuestra partitura.

En cuanto al ritmo, será muy similar, pero en este caso utilizaremos bloques del tipo "tocar tambor ... durante ... tiempos". Podremos elegir la parte del tambor que más nos guste, pero tendremos que ser muy cuidadosos con los tiempos, tal y como aparecen en la partitura. Una vez desarrollado, nos quedará similar a lo siguiente:

Como se puede ver, en el caso del ritmo, puesto que la partitura mostraba que los elementos se repetían todo el rato, hasta 17 veces, en grupos de tres, hemos utilizado un bucle de repetir.

Pues ya casi lo tenemos todo, aunque falta la parte más complicada, como ya dijimos antes, la sincronización. Volvamos al Gato. Gato tiene que ir sabiendo cuándo introducir al resto de los integrantes de la orquesta. Por tanto, para saber en qué repetición se encuentra, necesitamos una variable. ¿Cómo llamamos a nuestra variable? Pues, para no complicarnos la vida, le podemos llamar repeticion. Como hemos dicho innumerables veces, siempre que se utilice una variable habrá que inicializarla. En este caso, habrá que inicializarla antes de empezar el bucle de repeticiones. ¿Y cómo vamos contando repeticiones? Pues mediante un bloque de "sumar a repeticion 1" dentro del bucle, al final del todo.

Perfecto, pero sigue sonando 4 veces la melodía del piano, sin entrar los diferentes ritmos. Lo que tenemos que hacer para introducir al resto de instrumentos es enviar los mensajes correspondientes, dependiendo de en qué repetición estemos. Esto lo podemos hacer mediante nuestras amigas las condicionales, con bloques que digan cosas como "si la repetición es mayor que 1, mandar mensaje de comenzar coros". ¿Por qué utilizamos el operador mayor que 1? Porque queremos que la primera repetición sea sólo de la melodía, por tanto, cuando melodía valga 1, los coros no comenzarán, justo como queríamos. ¿Y cómo empieza el ritmo? Fácil, "si la repetición es mayor que 2, mandar mensaje de comenzar ritmos". Y el equivalente con la campana: "si la repetición es mayor que 3, mandar mensaje de comenzar campana" ¿Y dónde ponemos todos estos bloques condicionales? Lo más sencillo es ponerlo justo antes de llamar a la melodía del piano. De esta forma, se lanzarán los mensajes y, a la vez, se enviarán los mensjaes cuando correspondan (según la repetición por la que vayamos). Por tanto, el bloque nos queda así:

¿Y si llamáramos a la melodía del piano antes de mandar los mensajes, ¿qué pasaría? Lo mejor es experimentar y probarlo. Por si hay miedo de romper algo y que luego no se sepa recuperar, lo mejor es crear una copia del proyecto y hacer todas las pruebas que a cada uno se le ocurran. ¡Probando se aprende un montón!

¿Y el último bloque de "detener todos"? Este es un pequeño truco porque Scratch es muy peculiar y, a veces, los instrumentos se "desincronizan" un poco, sobre todo dependiendo de cómo esté nuestro ordenador de trabajo. Si un ordenador está trabajando mucho, a veces unas tareas tardan un poco más de la cuenta en realizarse. Por tanto, para solucionar ese problema, una vez que el en la última repetición el piano acabe, detenemos todos los programas.

¡Con esto ya estaría todo! ¡A escuchar las canciones y bailar!

Solución completa

A continuación se muestran todos los scripts del programa completo, para que no haya confusión al haberlo hecho antes paso a paso:

Personaje Gato (piano)

Personaje Pico (coro 1)

Personaje Giga (coro 2)

Personaje Nano (coro 3)

Personaje Tara (ritmo de percusión)

Personaje Tara (ritmo de percusión)

Programa funcionando

A continuación os dejamos el programa completo anterior funcionando, ¡a ver si descubrís de qué canción se trata!

También os dejamos el enlace a todas las orquestas desarrolladas (incluida la anterior), para que podáis ver cómo están realizadas y las podáis escuchar.

Y para finalizar, algo más cañero ;-)

Créditos