Derin Notu oluşturmak için bir komut dosyası oluşturun


11

THX derin notu ses / video üretim teknolojisinin en tanınan sesler biridir. Yaratıcısına göre , nihai sonucu elde etmek için yaklaşık 20.000 satır C kodu aldı . Biz daha iyisini yapabiliriz.

Göreviniz, ABD Patent ve Ticari Marka ofisi tarafından sağlanan şekilde, THX sesinin ticari marka açıklamasına uyan bir ses (bir dosyaya veya doğrudan donanıma) üretecek herhangi bir dilde bir komut dosyası yazmaktır :

THX logo teması, dar bir aralıkta 200 ila 400 Hz arasında başlayan ve üç oktavı kapsayan önceden seçilmiş sahalara yavaşça yönlendirilen yedi ölçü üzerinde 30 sesten oluşur. 30 ses 200 Hz ile 400 Hz arasındaki aralıklarda başlar ve dördüncü ölçüme göre üç oktav alan önceden seçilmiş aralıklara gelir. En düşük ses perdesi, en düşük ses perdesinin iki katı ses sayısının iki katı varken biraz algılanır.

"Önceden seçilen adımların" kabaca E düz anahtarında bulunan gerçek THX derin notadaki adımlarla aynı olması gerektiğini unutmayın.

Herhangi bir dilde yapılacak en kısa kod kazanır.


Lütfen Import[youtube]cevaplardan kaçının
Dr. belisarius

Bir sesin "üretilmesi" genellikle önceden oluşturulmuş bir sesin başka bir yerden içe aktarılmasını engeller.
Joe Z.

3
Spesifikasyon çok gevşek. 250 Hz'de başlayan 30 dalga formuna (herhangi bir) sahip bir program yazabileceğime inanıyorum, bir saniye oynatın, üç gruba bölün, 250, 500 ve 1000 Hz (üç oktav), bir saniye oynatın ve sonlandırın 1000 Hz grubu saptanarak. Bunun "tanınabilir" olması gerektiğini belirtmek, kazananın tarafsızlığını bir problem haline getirir. Bunun popülerlik yarışması olarak daha iyi çalışacağını düşünüyorum.
shiona

Ben de şimdi düşünüyorum, bu onun yerine popülerlik yarışması olan bu sorunun ikinci bir sürümünü yayınlayacağım anlamına gelir. (Gevşek özellik en azından bazı ilginç kısa çözümler
üretmelidir

2
Zaten 140 karakterlik bir çözüm var.
MSalters

Yanıtlar:


2

C, 323 bayt

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

(diğerleri arasında NUL karakterleri metin kutusuna yapıştırılamadı; orijinal dosyayı buradan görüntüleyebilir veya indirebilirsiniz )

Kullanımı:

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

Oluşturulan sesin bir önizlemesini dinlemek için buraya tıklayın!


iyi deneyin, ama orijinalinden
ağırlaştırılmış

2
Gerçekten; orijinal, soruda bahsedilen sorunun 20000 kod satırı tarafından kontrol edilen 30 osilatör kullanır. Bu minimalist kaynak kodu 400 bayttan az içeriyor ... Ne sunuyorsunuz?
Mathieu Rodic

1
Bu, Deep Note'un 1 kHz'de örneklenmiş 200 bps MP3 kodlamasından geçtiği gibi geliyor.
Joe Z.

Yine de, bu soruyu yanıtlamaya çalıştığınız için +1.
Joe Z.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.