Создайте скрипт для генерации Deep Note

11

THX глубокая нота является одним из самых узнаваемых звуков в аудио технологии производства / видео. По словам его создателя, для получения окончательного результата потребовалось около 20 000 строк кода на языке Си . Мы можем сделать лучше, чем это.

Ваша задача - написать скрипт на любом языке, который будет генерировать звук (в файл или непосредственно на аппаратное обеспечение), который соответствует описанию товарного знака звука THX, как это предусмотрено Управлением по патентам и товарным знакам США :

Тема логотипа THX состоит из 30 голосов по семи тактам, начиная с узкого диапазона, от 200 до 400 Гц, и постепенно переходя к предварительно выбранным высотам, охватывающим три октавы. 30 голосов начинаются на высотах от 200 до 400 Гц и достигают предварительно выбранных высот, охватывающих три октавы по четвертому такту. Высшая высота слегка расстроена, в то время как число голосов двух самых низких высот удваивается.

Обратите внимание, что «предварительно выбранные тона» должны быть примерно такими же, как и тона в фактической глубокой ноте THX, которые находятся в тональности клавиши E flat.

Самый короткий код для этого на любом языке выигрывает.

Джо З.
источник
Пожалуйста, избегайте Import[youtube]ответов
д-р belisarius
«Генерирование» звука обычно исключает импорт предварительно сгенерированного звука из другого места.
Джо З.
3
Спецификация слишком свободна. Я считаю, что я мог бы написать программу, которая имеет 30 сигналов (любой), которые начинаются с 250 Гц, воспроизвести ее на секунду, разделить на три группы, 250, 500 и 1000 Гц (три октавы), воспроизвести на секунду и в итоге с отстройкой группы 1000 Гц. Указание на то, что оно должно быть «узнаваемым», сделало бы проблему объективности победителя. Я думаю, что это будет работать лучше как конкурс популярности.
Шион
Сейчас я тоже так думаю, а это значит, что я опубликую вторую версию этой проблемы, а не конкурс популярности. (По крайней мере, свободная спецификация должна привести к некоторым интересным кратким решениям.)
Джо З.
2
Там уже 140 символов решения.
MSalters

Ответы:

2

C, 323 байта

#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);}}

(среди прочего, символы NUL не могут быть вставлены в текстовое поле; вы можете просмотреть или скачать оригинальный файл здесь )

Использование:

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

Нажмите здесь, чтобы прослушать превью сгенерированного звука!

Матье Родик
источник
хорошая попытка, но в итоге звучит сильно упрощенно по
сравнению
2
Я действительно; в оригинале используются 30 генераторов, управляемых 20000 строками кода, о которых идет речь в вопросе. Этот минималистский исходный код содержит менее 400 байт ... Что вы предлагаете?
Матье Родик
1
Это звучит так, как будто Deep Note был пропущен через MP3-кодировку 200 бит / с с частотой дискретизации 1 кГц.
Джо З.
Тем не менее, +1 даже за попытку ответить на этот вопрос.
Джо З.