Musicogramas con flash

En este minitutorial voy a intentar explicar la forma de hacer musicogramas con Flash. Si bien este no es un programa de software libre, es hoy por hoy uno de los más potentes para realizar actividades interactivas, y corre aceptablemente bien bajo Wine.
Le dedico este tutorial especialmente a Nani, activa maestra de música en Galicia a la que se lo prometí hace meses. Más vale tarde que nunca.
El resultado que se trata de conseguir es algo así:
Pincha aquí para pantalla completa



Generalmente los alumnos siguen los musicogramas  sobre el papel señalando rítmicamente sobre los  dibujos de corazones o los simbolos que representan el pulso musical. Así que esta actividad ejemplifica lo que han de hacer, y pueden además intentar seguirla en la PDI. Una variante, que podemos ver más adelante, es hacerla aún más interactiva, de forma que si el alumno no la sigue 'a tempo', ésta pueda pararse y dar un mensaje de error, o bien de felicitación en caso contrario.
Se trata de un musicograma muy simple, pero la dinámica es válida para cualquiera otra que queramos realizar, cambiando solamente los elementos gráficos y decorativos, o aumentando el número de acciones (letra que aparezca tipo karaoke, etc)
Esquema general
En esencia, lo que queremos conseguir es  reproducir una canción y que, en determinados instantes de esta reproducción, aparezcan elementos gráficos en la escena. Por tanto, tendremos que introducir en la escena un archivo de sonido con sus correspondientes botones de reproducción, y definir unas funciones que se ejecuten cuando el archivo de sonido pase por determinados tiempos.
Paso 1 Preparando elementos de la escena.
Como se puede ver, ésta consta simplemente del título, la letra de la canción y 16 dibujos de corazones que representan el pulso musical y que deben ir apareciendo a tiempo conforme la música va sonando. Estos son instancias de un símbolo y les hemos puesto nombres de instancia c1, c2....c16

Paso 2 Vinculando la música y diseñando el reproductor
Este paso ya está explicado aquí. Los pasos, rápidamente, son los siguientes:
1) Importamos el sonido wav de la canción a la biblioteca
2) Sobre el sonido importado en la biblioteca, con el botón derecho del ratón seleccionamos 'vinculación' y rellenamos las opciones de vinculación.
3) Añadimos una capa, la llamamos 'acciones' y escribimos el código siguiente 
//VINCULANDO  WAV
musica1 = "XimoBoticari.wav"; //asignamos una variable al wav vinculado
sonidoCancion = new Sound(); //creamos un objeto de sonido
sonidoCancion.attachSound(musica1);// relacionamos ese objeto con la variable del wav
Ahora tenemos un objeto de sonido, 'sonidoCancion' que podemos manejar con ActionScript

4) Botones Play/Pause y Stop
Vamos a crear ahora tres nuevas capas, que llamaremos play, pause y stop. En cada una de ellas vamos a arrastrar desde Ventana/Biblioteca/Bibliotecas comunes los botones prefabricados que nos proporciona el propio programa. Aquí se han utilizado los disponibles en la carpeta 'Playback'

Como el botón 'play' debe alternarse con el 'pause', colocaremos ambos superpuestos (pero en capas distintas). El botón 'stop' quedará a la izquierda de ambos. En la siguiente imagen, el botón 'pause' no se ve ya que queda oculto por el 'play', situado en una capa superior.


Por último daremos a los botones los nombres de instancia btn_play, btn_pause y btn_stop respectivamente.

5) Código de acciones de los botones play, pause y stop
Volvemos a la capa acciones y escribimos el código siguiente
//Definimos una variable que almacenará el punto de la canción (en milisegundos)en que nos encontramos. //Su valor inicial será 0 (inicio de la canción);
var pausa:Number = 0;
//+++++++++++++++++++++++++++
//ACCIONES DEL BOTON 'PLAY' al soltar el boton del ratón
btn_play.onRelease =function(){
//la canción comienza a sonar desde el principio la primera vez o desde el segundo en que se ha hecho pause,
sonidoCancion.start(pausa / 1000);
// La canción está sonando así que hacemos que el botón play se vuelva invisible y el pause visible.
this._visible = 0; 
btn_pause._visible = 1;
};
//++++++++++++++++++++++++++++
//ACCIONES DEL BOTON PAUSE al soltar el boton del ratón
btn_pause.onRelease =function(){ 
//almacena la posición de la canción en el momento de hacer pause 
pausa = sonidoCancion.position; 
//detiene la reproducción 
sonidoCancion.stop(); 
//A la inversa que con play. El botón pause se hace invisible y el play visible 
this._visible = 0; 
btn_play._visible = 1;
};
//++++++++++++++++++
//ACCIONES DEL BOTON 'STOP'
btn_stop.onRelease = function(){ 
//detiene la reproducción 
sonidoCancion.stop(); 
//pone la variable 'pausa' a 0; 
pausa = 0; 
//hace visible el boton play e invisible el pause 
btn_play._visible = 1; 
btn_pause._visible = 0;
};
Paso 3 Determinando los tiempos relevantes de la canción
Esta es la fase más engorrosa de todo el proceso, ya que hay que hacer una lista con los tiempos en  milisegundos en que se producen los eventos que nos interesan.
Abrimos el archivo de sonido con Audacity

Una manera rápida de proceder es averiguar el tiempo en que se inicia el primer compás de la melodía y el tiempo correspondiente al inicio del noveno compás. Si la música está interpretada con un tempo exacto, dividiendo por 16 (ya que estamos en un compás de 2/4) tendremos la duración de cada pulso. De ahí podemos sacar las cifras qe nos interesan.
Por ejemplo, en este caso, la melodia se inicia en t1= 5.960 milisegundos (ms). y el compás noveno se inicia en t17= 17.240 ms. Por tanto la duración de cada pulso será 705 ms.
Podemos hacer más rápido el proceso utilizando una tabla de hoja de cálculo. Así, obtendremos los tiempos en que los dibujos deben aparecer, de acuerdo con el pulso de la canción:
Con esos datos vamos a pegar, en la capa 'acciones', un array que contendrá los tiempos en que se inicia cada pulsación y debe aparecer cada simbolo:
Pegamos en la capa 'acciones':
//Array que contiene los tiempos de cada pulso musical de la melodía
tiempoCancion = new Array(0, 5960, 6665, 7370, 8075, 8780, 9485, 10190, 10895, 11600, 12305, 13010, 13715, 14420, 15125, 15830, 16535, 17240);
Paso 4 El momento del código
El código con el que vamos a conseguir que la reproducción active los símbolos es el siguiente:
Empezamos haciendo todos los corazones invisibles: Introducimos este código en la capa 'acciones'
//++++++++++++++++++++++++++++++
corazones = new Array(0, "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "c11", "c12", "c13", "c14", "c15", "c16", "c17");
for (a = 0; a < 20; a++)
{
_root[corazones[a]]._visible = 0;
}
//+++++++++++++++++++++++++++++++
Ahora vamos a definir una función, 'mostrarPulsación', que irá haciendo visibles los corazones cuando la canción pase por los tiempos definidos en el array 'tiempoCanción'
//++++++++++++++++++++++++++++++++
function mostrarPulsacion()
{
if ((sonidoCancion.position > tiempoCancion[n]) && (sonidoCancion.position < tiempoCancion[n + 1]))
{
_root[corazones[n]]._visible = 1;
}
//cuando la canción rebasa l           
if ((sonidoCancion.position > tiempoCancion[n + 1]) && (sonidoCancion.position < tiempoCancion[n + 2]))
{
n++;
}
}
//++++++++++++++++++++++++++++++++++
Veamos el código con detenimiento:
sonidoCancion.position devuelve el tiempo en milisegundos conforme la canción se va reproduciendo. La primera condición if detecta si la canción se encuentra entre los valores n y n+1. En ese caso hace visible el corazón 'n' .
La segunda condición if aumenta el valor de 'n', con lo que el proceso vuelve a repetirse nuevamente, y así sucesivamente.
Solo falta ahora introducir, en el boton 'play', dos cosas. Una es que se ejecute esta función,  mostrarPulsacion.
La otra es introducir una funcion setInterval, que llamaremos 'refresco' para que se compruebe continuamente el paso del tiempo. Así, el boton 'play' quedará así:
//++++++++++++++++++++++++++++++++++++++++++
btn_play.onRelease = function()
{
//la canción comienza a sonar desde el principio la primera vez o desde el segundo en que se ha hecho pause,
sonidoCancion.start(pausa / 1000);
mostrarPulsacion();
refresco = setInterval(mostrarPulsacion, 20);
// La canción está sonando así que hacemos que el botón play se vuelva invisible y el pause visible.
this._visible = 0;
btn_pause._visible = 1;
};
//+++++++++++++++++++++++++++++++++++++++++



2ºB-partitura " EL INVIERNO"

Como os dije os enlazo el WIX de la partitura que llevamos pendiente aunque el título de la obra ya se haya quedado un poco atrasado y nos provoque calor...
Recordad que no se tocará en esta versión sino en la que estamos ensayando con los instrumentos de láminas.Pero la dejo para que practiquéis.

Pincha aqui o en la imagen para acceder

 Se lo agradecemos al blog EL RINCÓN DE SUSANA.

#spanishrevolution

Manifestación de Democracia Real Ya en Madrid el 15 de mayo de 2011La normativa vigente en materia educativa, la Ley Orgánica de Educación (LOE), es, después de la Constitución, la norma de rango superior que los docentes de la escuela pública española tenemos que aplicar en el ejercicio de nuestras funciones a la hora de establecer los puntos fundamentales de nuestra práctica docente. El artículo 2 de esta norma enumera los fines que pretende conseguir el sistema educativo español. Uno de ellos, el que está señalado con la letra k) es:

La preparación para el ejercicio de la ciudadanía y para la participación activa en la vida económica, social y cultural, con actitud crítica y responsable y con capacidad de adaptación a las situaciones cambiantes de la sociedad del conocimiento.

Hace varios días que estoy reflexionando sobre las posibles interpretaciones de este texto para intentar entender las intenciones del legislador y, a la vista de la situación política y social que está viviendo nuestro país, me parece interesante analizar sobre todo estas dos cuestiones:

  • cuando habla de ejercicio de la ciudadanía ¿se refiere a ser escuchado un día cada cuatros años e ignorado los otros 1460?
  • cuando habla de la participación activa en la vida económica, social y cultural ¿se refiere a la participación como simples consumidores/as?

La frase siguiente para mi es suficiente para resolver estas dudas con un contundente ¡no!, pues lo que yo entiendo de esta Ley es que si queremos que nuestros alumnos/as, llegados a la mayoría de edad, ejerzan esa ciudadanía y participen activamente en la vida económica, social y cultural con actitud crítica y responsable, implícitamente estamos diciendo que les debemos proporcionar la capacidad de detectar las injusticias y de reaccionar adecuadamente frente a ellas, pacífica pero contundentemente. De no tolerar que se destruyan las conquistas sociales que sus antepasados han conseguido con sangre, sudor y lágrimas. De no permitir que se les roben sus sueños y su futuro. De que esta sociedad no los excluya.

La riqueza no está supeditada a las leyes de la termodinámica: se puede crear y se puede destruir, en eso estamos de acuerdo. Un cataclismo, una epidemia, una guerra… hay muchas causas que pueden mermar o incluso acabar con los recursos económicos de un país y dejarlo en la pobreza.

Pero éste no es el caso de España, ni de Portugal, ni de Grecia, ni del resto de Europa. Aquí los recursos económicos no se han destruido, sino que se han trasladado y se siguen trasladando a los bolsillos -léase a las cuentas de los paraísos fiscales- de los causantes de la crisis, con la connivencia de los políticos de gobierno y oposición, unos que dan la espalda a su ideología y a su programa electoral, traicionando así a los/as que han confiado en ellos, y otros que aplauden en la intimidad y rugen en público, esperando la muerte del adversario para devorar su cadáver.

Es por eso que este edublog y su autor -convencidos de que esta entrada responde a una de las responsabilidades más importantes de la educación, que es proporcionar elementos de reflexión sobre qué mundo queremos para nuestros jóvenes- apoyamos las movilizaciones ciudadanas que se están produciendo en toda España y en muchas ciudades europeas para reclamar una democracia verdadera.

ACTUALIZACIÓN (21/5/2011): Hoy, jornada de reflexión (o de inflexión), aconsejo leer Llevan razón, un artículo que Concha Caballero, profesora de Lengua y Literatura en un IES andaluz, publica en su blog y en su columna semanal del periódico El País.
Propuesta para la reflexión/inflexión: ¿Quiénes son los peligrosos antisistema?

La entrada #spanishrevolution ha sido publicada primero en educacionmusical.es.