Zbuduj skrypt, aby wygenerować notatkę

11

THX głęboka uwaga jest jednym z najbardziej rozpoznawalnych brzmień w technologii produkcji audio / wideo. Według twórcy wygenerowanie ostatecznego wyniku wymagało około 20 000 linii kodu C. Możemy to zrobić lepiej.

Twoim zadaniem jest napisanie skryptu w dowolnym języku, który wygeneruje dźwięk (do pliku lub bezpośrednio na sprzęt), który pasuje do opisu znaku towarowego dźwięku THX, dostarczonego przez amerykański Urząd Patentowy i Znaków Towarowych :

Motyw logo THX składa się z 30 głosów na siedem taktów, zaczynając od wąskiego zakresu, od 200 do 400 Hz i powoli przechodząc do wstępnie wybranych tonów obejmujących trzy oktawy. 30 głosów zaczyna się w tonach od 200 Hz do 400 Hz i dochodzi do wstępnie wybranych tonów obejmujących trzy oktawy w czwartej takcie. Najwyższy ton jest lekko przestrojony, a liczba głosów w najniższych dwóch tonach jest podwójna.

Zauważ, że „wstępnie wybrane tony” muszą być mniej więcej takie same jak tony w głębokiej nucie THX, które są w tonacji Es.

Wygrywa najkrótszy kod w dowolnym języku.

Joe Z.
źródło
Unikaj Import[youtube]odpowiedzi
dr belizariusz
„Generowanie” dźwięku zasadniczo wykluczałoby importowanie wstępnie wygenerowanego dźwięku z innego miejsca.
Joe Z.
3
Specyfikacja jest zbyt luźna. Wierzę, że mógłbym napisać program, który ma 30 przebiegów (dowolnych), które zaczynają się przy 250 Hz, grają to przez sekundę, dzielą się na trzy grupy, 250, 500 i 1000 Hz (trzy oktawy), grają to przez sekundę i kończą z przestrajaniem grupy 1000 Hz. Określenie, że powinna być „rozpoznawalna”, sprawiłoby, że obiektywność zwycięzcy byłaby problemem. Myślę, że lepiej by to działało jako konkurs popularności.
shiona
Też tak myślę, co oznacza, że ​​opublikuję drugą wersję tego problemu, która jest konkursem popularności. (Luźna specyfikacja powinna przynajmniej zawierać kilka interesujących krótkich rozwiązań.)
Joe Z.
2
Jest już rozwiązanie 140 znaków .
MSalters

Odpowiedzi:

2

C, 323 bajty

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

(między innymi nie można wkleić znaków NUL w polu tekstowym; możesz wyświetlić lub pobrać oryginalny plik tutaj )

Stosowanie:

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

Kliknij tutaj, aby odsłuchać podgląd wygenerowanego dźwięku!

Mathieu Rodic
źródło
dobra próba, ale ostatecznie brzmi to bardzo uproszczone z oryginału
qwr
2
Ja rzeczywiście; oryginał wykorzystuje 30 oscylatorów kontrolowanych przez 20000 wierszy kodu pytania zadanego w pytaniu. Ten minimalistyczny kod źródłowy zawiera mniej niż 400 bajtów ... Co oferujesz?
Mathieu Rodic
1
Brzmi to tak, jakby Deep Note przeszedł przez kodowanie MP3 200 bps próbkowane z częstotliwością 1 kHz.
Joe Z.
Mimo to +1 za próbę odpowiedzi na to pytanie.
Joe Z.