Inicio / Desafíos PPT / Tócala otra vez Sam / Instrucciones
Desafío -Tócala otra vez Sam
Instrucciones
Este desafío trata de diseñar un piano, generando las notas al vuelo mediante PHP. Para simular los sonidos, generaremos tonos puros.
Un tono puro es una sinusoide de una determinada frecuencia; a mayor frecuencia más agudo será el sonido:
donde A es la amplitud (volumen o intensidad sonora) y t es el tiempo.
Presentaremos un teclado con las notas correspondientes a una escala.
Do(4)=261Hz, Re(4)=293Hz, Mi(4)=329Hz, Fa(4)=349Hz, Sol(4)=391Hz,
La(4)=440Hz, Si(4)=493Hz, Do(5)=523Hz
Cuando se pulse una de ellas generaremos el tono puro de la frecuencia especificada, escribiremos(*1) y haremos sonar un fichero .wav de las siguientes características:
Para ello necesitaremos tomar muestras de la sinusoide calculada, una muestra cada 1/11025 segundos. La longitud de la nota podrá ser variada desde 0.4 segundos hasta 2 segundos. (Más tiempo afectaría considerable mente al rendimiento del script).
(*1) no es necesario guardar el fichero .wav resultante
Foro asociado al desafío... http://www.php-hispano.net/foros/Desafios/2791
Un tono puro es una sinusoide de una determinada frecuencia; a mayor frecuencia más agudo será el sonido:
tono_puro=A*sen(2*PI*frecuencia*t)
donde A es la amplitud (volumen o intensidad sonora) y t es el tiempo.
Presentaremos un teclado con las notas correspondientes a una escala.
Do(4)=261Hz, Re(4)=293Hz, Mi(4)=329Hz, Fa(4)=349Hz, Sol(4)=391Hz,
La(4)=440Hz, Si(4)=493Hz, Do(5)=523Hz
Cuando se pulse una de ellas generaremos el tono puro de la frecuencia especificada, escribiremos(*1) y haremos sonar un fichero .wav de las siguientes características:
- PCM (cuantificación lineal, sin compresión)
- Mono
- 8 bits por muestra
- 11025 Hz frecuencia de muestreo
Para ello necesitaremos tomar muestras de la sinusoide calculada, una muestra cada 1/11025 segundos. La longitud de la nota podrá ser variada desde 0.4 segundos hasta 2 segundos. (Más tiempo afectaría considerable mente al rendimiento del script).
(*1) no es necesario guardar el fichero .wav resultante
Foro asociado al desafío... http://www.php-hispano.net/foros/Desafios/2791