Crea uno script per generare la nota profonda


11

La nota profonda THX è uno dei suoni più riconoscibili nella tecnologia di produzione audio / video. Secondo il suo creatore, ci sono volute circa 20.000 righe di codice C per generare il risultato finale. Possiamo fare meglio di così.

Il tuo compito è di scrivere uno script in qualsiasi lingua che generi un suono (su un file o direttamente sull'hardware) che si adatti alla descrizione del marchio del suono THX, come fornita dall'ufficio brevetti e marchi degli Stati Uniti :

Il tema del logo THX è composto da 30 voci su sette misure, che iniziano in un intervallo ristretto, da 200 a 400 Hz, e si spostano lentamente verso tonalità preselezionate che comprendono tre ottave. Le 30 voci iniziano con tonalità tra 200 Hz e 400 Hz e arrivano a tonalità preselezionate che coprono tre ottave dalla quarta misura. Il tono più alto è leggermente stonato mentre ci sono il doppio del numero di voci dei due toni più bassi.

Si noti che le "altezze preselezionate" devono essere approssimativamente uguali alle altezze nella nota profonda THX effettiva, che sono nella chiave di E flat.

Vince il codice più breve per farlo in qualsiasi lingua.


Per favore, evita le Import[youtube]risposte
Dr. belisarius,

Per "generare" un suono generalmente impedirebbe di importare un suono pre-generato da altrove.
Joe Z.

3
Le specifiche sono troppo lente. Credo di poter scrivere un programma che ha 30 forme d'onda (qualsiasi) che iniziano a 250 Hz, che suona per un secondo, si divide in tre gruppi, 250, 500 e 1000 Hz (tre ottave), che suona per un secondo e finisce con la messa a punto del gruppo 1000 Hz. Specificare che dovrebbe essere "riconoscibile" renderebbe un problema l'obiettività del vincitore. Penso che funzionerebbe meglio come concorso di popolarità.
shiona,

Lo sto pensando anche adesso, il che significa che posterò una seconda versione di questo problema, che è invece un concorso di popolarità. (Le specifiche libere dovrebbero costituire almeno alcune interessanti soluzioni brevi.)
Joe Z.

2
C'è già una soluzione di 140 caratteri .
MSalter

Risposte:


2

C, 323 byte

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

(tra gli altri, caratteri NUL could't essere incollati nella casella di testo, è possibile visualizzare o scaricare il file originale qui )

Uso:

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

Fai clic qui per ascoltare un'anteprima del suono generato!


buona prova, ma finisce per sembrare pesantemente semplificato dall'originale
qwr

2
Lo faccio davvero; l'originale utilizza 30 oscillatori controllati dalle 20000 righe di codice della domanda posta nella domanda. Questo codice sorgente minimalista contiene meno di 400 byte ... Cosa offri?
Mathieu Rodic,

1
Sembra che il Deep Note sia passato attraverso una codifica MP3 da 200 bps campionata a 1 kHz.
Joe Z.

Tuttavia, +1 per aver persino tentato di rispondere a questa domanda.
Joe Z.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.