Proyecto musical

This page needs KEEP SUCH THAT updated. --MF, 6/22/20

PG: I'd very much want to have a map-onto-scale one. (I have an example somewhere.) Kids who care about music will find the switches interesting, and even kids who claim not to be able to hear the differences will.

BH: This is fine as far as it goes, but it calls out for more, starting with a note-name-to-midi-number reporter, and then making a round.

MF: BH has reviewing to do (see TG)

This page has been renumbered; need to check if this throws off the numbering in the solutions or TG. --MF, 4/26/19

See also:

En este proyecto, utilizarás el bloque tocar nota de Snap! para crear música mientras revisas los tipos de datos abstractos (TDA) y las funciones de orden superior.

  1. "U3-ProyectoMusical"Crea un proyecto nuevo llamado U3L2-TocarCanción
  2. Conecta tus auriculares o altavoces

Revisión de funciones de orden superior con sonido

  1. Construye y compara estos programas con el bloque tocar nota. Ejecuta cada programa varias veces.
      Los valores de entrada dados al bloque tocar nota son tonos musicales. Los valores más altos crean notas más altas. Puedes introducir cualquier entero entre 0 y 127. El número 60 representa la nota do central (C central en notación anglosajona).
    1. tocar nota (elemento(cualquiera) de (lista (60) (64) (67) (72) (60))) por (1) pulsos
    2. para cada (nota) de (lista (60) (64) (67) (72) (60)) (tocar nota (nota) por (1) pulsos)
    3. para cada (nota) de (mapear (_ + 5) sobre (lista (60) (64) (67) (72) (60))) (tocar nota (nota) por (1) pulsos)
    4. para cada (nota) de (mantener elementos donde (() < 65) de (lista (60) (64) (67) (72) (60))) (tocar nota (nota) por (1) pulsos)
¿Necesitas revisar?

Creación de un tipo de datos abstracto para organizar datos musicales

  1. El tono es la cualidad que determina la altura de una nota musical; el valor del tono se coloca en el primer espacio de entrada del bloque tocar nota.

    La longitud de una nota es la cantidad de tiempo que la nota se reproduce (el número de pulsos); el valor de la duración se coloca en la segunda ranura del bloque tocar nota.

    Crea una nota TDA (tipo de dato abstracto) para administrar el tono y la longitud de cada nota en una canción.
    1. Crear el constructor:
      nota, tono: () longitud: ()
    2. Crear dos selectores:
      tono de nota: () longitud de nota: ()
Guarda tu trabajo

Creación de bloques para reproducir música

  1. Usa para cada junto con sus selectores para crear un bloquetocar canción {} que tome una lista de notas como entrada y reproduzca cada un tono para el número especificado en longitud.
    Definición del tipo de dato de Tocar canción
  2. Crea un bloque reportero para reportar las notas de una canción de tu elección. Aquí hay un ejemplo:
    definición de bloque reportero para la canción “rema, rema, rema tu barca” Guarda tu trabajo
  3. Prueba tu canción con tu bloque tocar canción y depura cualquier problema.
    tocar canción (rema, rema, rema tu barca)
  4. Guarda tu trabajo
    BPM significa "pulsaciones por minuto", en inglés "Beats per minute".
  1. Utiliza el bloque fijar tempo a () bpm para cambiar el ritmo al que se tocan las notas. Un número más alto hará que tu canción se reproduzca más rápido; un número más bajo hará que lo haga más lento.

Transposición de música

  1. Habla con tu compañero Compara el resultado de estos dos programas que creaste anteriormente. Reflexiona sobre lo que hace mapear + 5 a los sonidos que escuchas:
    para cada (nota) de (lista (60) (64) (67) (72) (60)) (tocar nota (nota) por (1) pulsos)
    para cada (nota) de (mapear (_ + 5) sobre (lista (60) (64) (67) (72) (60))) (tocar nota (nota) por (1) pulsos)
  2. Usa mapear junto con sus bloques de TDA para crear un reportero que transponga (desplace) una lista de notas. Debe tomar una lista de notas y un número que indique cuánto transponer (cambiar) la canción como entrada, y debe reportar la canción ajustada. Por ejemplo:
    tocar canción (transponer (rema, rema, rema tu barca) en (19))
  3. Intenta reproducir tu canción usando tu bloque transponer con varios números de turno diferentes para que puedas oír el impacto de mapear.
No funciona en Snap! pero habría sido una buena manera de unir la página... :/

Creación de una ronda

Si se mantiene, incluya una explicación de cómo son las rondas en esta página de borrador.
launch(play song(row row row your boat)); wait (3) secs; launch(play song(row row row your boat)); GitHub Issue #1807
¿Aburrido? Tal vez no para niños A/V...

Uso de un límite de frecuencia

  1. Habla con tu compañero Compara el resultado de estos dos programas que creaste anteriormente. Conversen acerca de lo que hace mantener < 65 a los sonidos que escuchas:
    para cada (nota) de (lista (60) (64) (67) (72) (60)) (tocar nota (nota) por (1) pulsos)
    for each (note) of (keep items such that (() < 65) from (list (60) (64) (67) (72) (60))) (play note (note) for (1) beats)
  2. ...