[chuck-users] Creating a THX-like sound in ChucK

Ge Wang gewang at CS.Princeton.EDU
Tue Jan 9 02:52:47 EST 2007


Awesome!!

I've added this as an example to be included in the next release, all- 
too-fittingly in the 'deep' directory.  Already in CVS.  I hope we  
don't get sued.

Best,
Ge!

On Jan 8, 2007, at 3:56 PM, Perry R Cook wrote:

> Hi all, here's a little New Year's gift.  After
> reading a posting by an STK user to the stk list
> about reading Andy Moorer's account of how he
> created the THX sound, I decided to whip one up
> in ChucK.  As easy as one might expect.  Enjoy!!
>
> PRC
>
> http://musicthing.blogspot.com/2005/05/tiny-music-makers-pt-3-thx- 
> sound.html
>
> // THX emulator, Perry R. Cook, Jan. 8, 2007
> //
> // F-1,  B1b,   F1,  B2b,   F2,  B3b,   F3,  A5,   F4, A6
> [ 29.0, 87.5,116.0,175.0,233.0,350.0,524.0,880.0,1048,1760,
>   29.0, 87.5,116.0,175.0,233.0,350.0,524.0,880.0,1048,1760,
>   29.0, 87.5,116.0,175.0,233.0,350.0,524.0,880.0,1048,1760 ] @=>  
> float targets[];
> float initials[30];
> float deltas[30];
> sawosc s[30];
> gain gl[30];
> gain gr[30];
> JCRev rl => dac.left;
> JCRev rr => dac.right;
>
> 0 => int i => int j;
>
> for (0 => i; i<30;  i+1 => i)   {
>      std.rand2f(200.0,800.0) => initials[i] => s[i].freq; // random  
> freqs.
>      (targets[i] - initials[i]) / 10000.0 => deltas[i];  // 10 sample
> updates
>      0.1 => s[i].gain;
>      std.rand2f(0.0,1.0) => gl[i].gain;                  // random
>      1.0 - gl[i].gain() => gr[i].gain;                   // panning
>      s[i] => gl[i] => rl;                                // hook up
>      s[i] => gr[i] => rr;                                // all the  
> oscs
> }
>
> 10000 :: samp => now;                                   // steady  
> cluster
>
> while(j < 10000)        {
>      for (0 => i; i<30;  i+1 => i)       {
>          initials[i] + (deltas[i]*j) => s[i].freq;       // sweep  
> freqs.
>      }
>      j + 1 => j;
>      10 :: samp => now;}
> while (j < 30000)       {                               // hold chord
>      10 :: samp => now;
>      j + 1 => j;
> }
> while (j < 35000)       {
>      for (0 => i; i<30;  i+1 => i)       {
>          0.1 * (35000 - j) / 10000.0 => s[i].gain;       // decay  
> gains
>      }
>      10 :: samp => now;
>      j + 1 => j;
> }
> 60000 :: samp => now;                                   // reverb tail
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users



More information about the chuck-users mailing list