Cree un script para generar la nota profunda

11

La nota profunda THX es uno de los sonidos más reconocibles en la tecnología de producción de audio / video. Según su creador, se necesitaron alrededor de 20,000 líneas de código C para generar el resultado final. Podemos hacerlo mejor que eso.

Su tarea es escribir un script en cualquier idioma que genere un sonido (en un archivo o directamente en el hardware) que se ajuste a la descripción de la marca registrada del sonido THX, según lo dispuesto por la oficina de Patentes y Marcas de los Estados Unidos :

El tema del logotipo THX consta de 30 voces en siete medidas, comenzando en un rango estrecho, de 200 a 400 Hz, y desviándose lentamente a tonos preseleccionados que abarcan tres octavas. Las 30 voces comienzan en tonos entre 200 Hz y 400 Hz y llegan a tonos preseleccionados que abarcan tres octavas en la cuarta medida. El tono más alto está ligeramente desafinado mientras que hay el doble de voces que los dos tonos más bajos.

Tenga en cuenta que los "tonos preseleccionados" deben ser aproximadamente los mismos que los tonos en la nota profunda THX real, que están en la clave de mi bemol.

El código más corto para hacerlo en cualquier idioma gana.

Joe Z.
fuente
Por favor, evite las Import[youtube]respuestas
Dr. belisarius
"Generar" un sonido generalmente impediría importar un sonido pregenerado de otro lugar.
Joe Z.
3
La especificación es demasiado floja. Creo que podría escribir un programa que tenga 30 formas de onda (cualquiera) que comiencen a 250 Hz, reproducirlo por un segundo, dividirlo en tres grupos, 250, 500 y 1000 Hz (tres octavas), reproducirlo por un segundo y terminar con desafinación del grupo de 1000 Hz. Especificar que debe ser "reconocible" haría que la objetividad del ganador sea un problema. Creo que esto funcionaría mejor como un concurso de popularidad.
shiona
Ahora también lo estoy pensando, lo que significa que publicaré una segunda versión de este problema, que es un concurso de popularidad. (La especificación suelta debería dar lugar a algunas soluciones cortas interesantes, al menos.)
Joe Z.
2
Ya hay una solución de 140 caracteres .
MSalters

Respuestas:

2

C, 323 bytes

#include<math.h>
#define A y=-2*y*y*y+3*y*y
main(i,j,o,e){e=44100;write(1,"RIFF´9WAVEfmt      D¬  ±    data9",44);float r[30],x,y,k,v;for(i=0;i++<30;r[i]=.5-(9*i%7)/7.);for(i=0;i++<9*e;){x=2.*M_PI*i/(0.+e),k=y=1-i/(8.*e),v=0,A,A,A,y=y>1?1:y;for(j=0;j++<30;o=j%6,v+=(7-o)*.1*sin(x*(20<<o)*(1+y*r[j])));write(1,&v,4);}}

(entre otros, los caracteres NUL no se pudieron pegar en el cuadro de texto; puede ver o descargar el archivo original aquí )

Uso:

gcc deep-note.c -o deep-note
./deep-note > deep-note.wav

Haga clic aquí para escuchar una vista previa del sonido generado.

Mathieu Rodic
fuente
buen intento, pero termina sonando muy simplificado del original
qwr
2
Yo de hecho; el original usa 30 osciladores controlados por las 20000 líneas de código a las que se hace referencia en la pregunta. Este código fuente minimalista contiene menos de 400 bytes ... ¿Qué ofrecen?
Mathieu Rodic
1
Este suena como si la Deep Note se pasara a través de una codificación MP3 de 200 bps muestreada a 1 kHz.
Joe Z.
Aún así, +1 por incluso intentar responder a esta pregunta.
Joe Z.