Erstellen Sie ein Skript, um die Deep Note zu generieren

11

Die THX Deep Note ist einer der bekanntesten Sounds in der Audio- / Videoproduktionstechnologie. Laut dem Ersteller wurden etwa 20.000 Zeilen C-Code benötigt , um das Endergebnis zu erzielen. Wir können es besser machen.

Ihre Aufgabe ist es, ein Skript in einer beliebigen Sprache zu schreiben, das einen Sound (in eine Datei oder direkt in die Hardware) erzeugt, der der Markenbeschreibung des THX-Sounds entspricht, wie sie vom US-Patent- und Markenamt bereitgestellt wird :

Das THX-Logo-Thema besteht aus 30 Stimmen in sieben Takten, beginnend in einem engen Bereich von 200 bis 400 Hz und langsam umgeleitet zu vorgewählten Tonhöhen mit drei Oktaven. Die 30 Stimmen beginnen bei Tonhöhen zwischen 200 Hz und 400 Hz und erreichen im vierten Takt vorgewählte Tonhöhen, die drei Oktaven umfassen. Die höchste Tonhöhe ist leicht verstimmt, während die Anzahl der Stimmen der beiden niedrigsten Tonhöhen doppelt so hoch ist.

Beachten Sie, dass die "vorausgewählten Tonhöhen" ungefähr den Tonhöhen in der tatsächlichen tiefen THX-Note entsprechen müssen, die sich in der Tonart Es befinden.

Der kürzeste Code in einer Sprache gewinnt.

Joe Z.
quelle
Bitte vermeiden Sie Import[youtube]Antworten
Dr. Belisarius
Das "Erzeugen" eines Sounds würde im Allgemeinen das Importieren eines vorgenerierten Sounds von einer anderen Stelle ausschließen.
Joe Z.
3
Die Spezifikation ist zu locker. Ich glaube, ich könnte ein Programm mit 30 Wellenformen (beliebig) schreiben, die bei 250 Hz beginnen, das für eine Sekunde spielen, in drei Gruppen aufteilen, 250, 500 und 1000 Hz (drei Oktaven), das für eine Sekunde spielen und enden mit Verstimmung der 1000-Hz-Gruppe. Die Angabe, dass es "erkennbar" sein sollte, würde die Objektivität des Gewinners zu einem Problem machen. Ich denke, das würde als Beliebtheitswettbewerb besser funktionieren.
Shiona
Das denke ich jetzt auch, was bedeutet, dass ich eine zweite Version dieses Problems veröffentlichen werde, bei der es sich stattdessen um einen Beliebtheitswettbewerb handelt. (Die lose Spezifikation sollte zumindest für einige interessante kurze Lösungen sorgen.)
Joe Z.
2
Es gibt bereits eine 140-Zeichen- Lösung.
MSalters

Antworten:

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

(Unter anderem konnten NUL-Zeichen nicht in das Textfeld eingefügt werden. Sie können die Originaldatei hier anzeigen oder herunterladen. )

Verwendung:

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

Klicken Sie hier, um eine Vorschau des erzeugten Sounds anzuhören!

Mathieu Rodic
quelle
Guter Versuch, aber es klingt stark vereinfacht vom Original
qwr
2
Ich tue es tatsächlich; Das Original verwendet 30 Oszillatoren, die von den 20000 Codezeilen der in der Frage genannten Frage gesteuert werden. Dieser minimalistische Quellcode enthält weniger als 400 Bytes ... Was bieten Sie an?
Mathieu Rodic
1
Dies klingt so, als ob die Deep Note eine MP3-Codierung mit 200 Bit / s durchlaufen hat, die mit 1 kHz abgetastet wurde.
Joe Z.
Trotzdem +1 für den Versuch, diese Frage zu beantworten.
Joe Z.