Obtenga su copia del repositorio de la práctica accediendo a Práctica 5
y pulsando sobre el botón Fork
situado en la esquina superior derecha. A continuación, siga las
instrucciones de la Práctica 2 para crear una rama con el apellido de
los integrantes del grupo de prácticas, dar de alta al resto de integrantes como colaboradores del proyecto
y crear la copias locales del repositorio.
Como entrega deberá realizar un pull request con el contenido de su copia del repositorio. Recuerde que los ficheros entregados deberán estar en condiciones de ser ejecutados con sólo ejecutar:
make release
A modo de memoria de la práctica, complete, en este mismo documento y usando el formato markdown, los ejercicios indicados.
Tomando como modelo un instrumento sencillo (puede usar el InstrumentDumb), genere cuatro instrumentos que permitan visualizar el funcionamiento de la curva ADSR.
- Un instrumento con una envolvente ADSR genérica, para el que se aprecie con claridad cada uno de sus parámetros: ataque (A), caída (D), mantenimiento (S) y liberación (R).
- Un instrumento percusivo, como una guitarra o un piano, en el que el sonido tenga un ataque rápido, no
haya mantenimiemto y el sonido se apague lentamente.
- Para un instrumento de este tipo, tenemos dos situaciones posibles:
- El intérprete mantiene la nota pulsada hasta su completa extinción.
- El intérprete da por finalizada la nota antes de su completa extinción, iniciándose una disminución abrupta del sonido hasta su finalización.
- Debera representar en esta memoria ambos posibles finales de la nota.
- Para un instrumento de este tipo, tenemos dos situaciones posibles:
- Un instrumento plano, como los de cuerdas frotadas (violines y semejantes) o algunos de viento. En ellos, el ataque es relativamente rápido hasta alcanzar el nivel de mantenimiento (sin sobrecarga), y la liberación también es bastante rápida.
Para los cuatro casos, deberá incluir una gráfica en la que se visualice claramente la curva ADSR. Deberá añadir la información necesaria para su correcta interpretación, aunque esa información puede reducirse a colocar etiquetas y títulos adecuados en la propia gráfica (se valorará positivamente esta alternativa).
Implemente el instrumento Seno
tomando como modelo el InstrumentDumb
. La señal deberá formarse
mediante búsqueda de los valores en una tabla.
- Incluya, a continuación, el código del fichero
seno.cpp
con los métodos de la clase Seno. - Explique qué método se ha seguido para asignar un valor a la señal a partir de los contenidos en la tabla, e incluya una gráfica en la que se vean claramente (use pelotitas en lugar de líneas) los valores de la tabla y los de la señal generada.
- Si ha implementado la síntesis por tabla almacenada en fichero externo, incluya a continuación el código
del método
command()
.
- Incluya dos gráficas en las que se vean, claramente, el efecto del trémolo y el vibrato sobre una señal sinusoidal. Deberá explicar detalladamente cómo se manifiestan los parámetros del efecto (frecuencia e índice de modulación) en la señal generada (se valorará que la explicación esté contenida en las propias gráficas, sin necesidad de literatura).
- Si ha generado algún efecto por su cuenta, explique en qué consiste, cómo lo ha implementado y qué
resultado ha producido. Incluya, en el directorio
work/ejemplos
, los ficheros necesarios para apreciar el efecto, e indique, a continuación, la orden necesaria para generar los ficheros de audio usando el programasynth
.
Construya un instrumento de síntesis FM, según las explicaciones contenidas en el enunciado y el artículo
de John M. Chowning. El
instrumento usará como parámetros básicos los números N1
y N2
, y el índice de modulación I
, que
deberá venir expresado en semitonos.
- Use el instrumento para generar un vibrato de parámetros razonables e incluya una gráfica en la que se
vea, claramente, la correspondencia entre los valores
N1
,N2
eI
con la señal obtenida. - Use el instrumento para generar un sonido tipo clarinete y otro tipo campana. Tome los parámetros del
sonido (N1, N2 e I) y de la envolvente ADSR del citado artículo. Con estos sonidos, genere sendas escalas
diatónicas (fichero
doremi.sco
) y ponga el resultado en los ficheroswork/doremi/clarinete.wav
ywork/doremi/campana.work
.- También puede colgar en el directorio work/doremi otras escalas usando sonidos interesantes. Por ejemplo, violines, pianos, percusiones, espadas láser de la Guerra de las Galaxias, etc.
Use el programa synth
para generar canciones a partir de su partitura MIDI. Como mínimo, deberá incluir la
orquestación de la canción You've got a friend in me (fichero ToyStory_A_Friend_in_me.sco
) del genial
Randy Newman.
- En este triste arreglo, la pista 1 corresponde al instrumento solista (puede ser un piano, flautas, violines, etc.), y la 2 al bajo (bajo eléctrico, contrabajo, tuba, etc.).
- Coloque el resultado, junto con los ficheros necesarios para generarlo, en el directorio
work/music
. - Indique, a continuación, la orden necesaria para generar la señal (suponiendo que todos los archivos necesarios están en directorio indicado).
También puede orquestar otros temas más complejos, como la banda sonora de Hawaii5-0 o el villacinco de
John Lennon Happy Xmas (War Is Over) (fichero The_Christmas_Song_Lennon.sco
), o cualquier otra canción
de su agrado o composición. Se valorará la riqueza instrumental, su modelado y el resultado final.
- Coloque los ficheros generados, junto a sus ficheros
score
,instruments
yefffects
, en el directoriowork/music
. - Indique, a continuación, la orden necesaria para generar cada una de las señales usando los distintos ficheros.