Advertisement
ianduclos

Tarea - Ian Duclos

Dec 8th, 2020
2,176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (
  2.  
  3. ////////////////////////////////////////////////////////////////////////////// KICK
  4.  
  5. SynthDef(\randKick, {
  6.  
  7.     arg baseFreq = 75, vel = 100, envAmount = 4;
  8.     var kik, env, penv, vol;                     //penv = pitch envelope, env = vca envelope
  9.  
  10.     vol = vel / 127.0;
  11.  
  12.     env = Env.linen(0.005, 0.1, 1, curve: -4);
  13.     env = EnvGen.ar(env, doneAction: 2);
  14.  
  15.     penv = Env.perc(0, 0.15, curve: -4);
  16.     penv = EnvGen.ar(penv) * envAmount;
  17.  
  18.     kik = HPF.ar(SinOsc.ar(baseFreq * penv,  mul: env * vol), 50);
  19.     kik = kik.dup;
  20.  
  21.     Out.ar(0, kik);
  22.  
  23. }).add;
  24.  
  25. ////////////////////////////////////////////////////////////////////////////// HI HAT
  26.  
  27. SynthDef(\hiHat, {
  28.     var hh, env, lfo1, lfo2;
  29.  
  30.     lfo1 = SinOsc.kr(0.876).range(0.005, 0.01);
  31.     lfo2 = SinOsc.kr(0.765).range(0.01, 0.1);
  32.  
  33.     env = Env.perc(lfo1, lfo2, curve: -4);
  34.     env = EnvGen.ar(env, doneAction: 2);
  35.  
  36.     hh = HPF.ar(PinkNoise.ar(mul: env * 0.5),  1000).dup;
  37.  
  38.     Out.ar(0, hh);
  39.  
  40. }).add;
  41.  
  42. ////////////////////////////////////////////////////////////////////////////// PERC
  43.  
  44. SynthDef(\perc, {
  45.     var percu, env;
  46.  
  47.     env = Env.perc(0.001, 0.05);
  48.     env = EnvGen.ar(env, doneAction: 2);
  49.  
  50.     percu = HPF.ar(SinOsc.ar(300, mul: env * 0.3), 200).dup;
  51.  
  52.     Out.ar(0, percu);
  53.  
  54. }).add;
  55.  
  56. ////////////////////////////////////////////////////////////////////////////// SWEEP SYNTH
  57.  
  58. SynthDef(\sweep, {
  59.  
  60.     arg freq = 200, glide = 3, spread = 100, gate = 1, cutoff = 20000;
  61.     var sig, env, output, g1, g2, g3, g4, g5, g6, g7, g8;
  62.  
  63.     g1 = Env.new([rand2(spread) + freq, freq], [glide], 1.5);
  64.     g1 = EnvGen.ar(g1);
  65.  
  66.     g2 = Env.new([rand2(spread) + freq, freq + rand2(2)], [glide], 1.5);
  67.     g2 = EnvGen.ar(g2);
  68.  
  69.     g3 = Env.new([rand2(spread) + freq, freq + rand2(2)], [glide], 1.5);
  70.     g3 = EnvGen.ar(g3);
  71.  
  72.     g4 = Env.new([rand2(spread) + freq, freq + rand2(2)], [glide], 1.5);
  73.     g4 = EnvGen.ar(g4);
  74.  
  75.     g5 = Env.new([rand2(spread) + freq, freq + rand2(2)], [glide], 1.5);
  76.     g5 = EnvGen.ar(g5);
  77.  
  78.     g6 = Env.new([rand2(spread) + freq, freq + rand2(2)], [glide], 1.5);
  79.     g6 = EnvGen.ar(g6);
  80.  
  81.     g7 = Env.new([rand2(spread) + freq, freq + rand2(2)], [glide], 1.5);
  82.     g7 = EnvGen.ar(g7);
  83.  
  84.     g8 = Env.new([rand2(spread) + freq, freq + rand2(2)], [glide], 1.5);
  85.     g8 = EnvGen.ar(g8);
  86.  
  87.  
  88.     env = Env.asr(0.01, glide, 2);
  89.     env = EnvGen.ar(env, gate, doneAction: 2);
  90.  
  91.     sig = Saw.ar([g1, g2, g3, g4, g5, g6, g7, g8], mul: 0.1);
  92.  
  93.     output = LPF.ar(Splay.ar(sig), cutoff ) * env * 0.95;
  94.  
  95.     Out.ar(0, output);
  96.  
  97. }).add;
  98.  
  99.  
  100.  
  101.  
  102.  
  103. //////////////////////////////////////////////////////////////////////////////
  104. ////// SECUENCIAS                                                      //////
  105. ////////////////////////////////////////////////////////////////////////////
  106.  
  107.  
  108.  
  109.  
  110. ////////////////////////////////////////////////////////////////////////////// SECUENCIA KICK
  111.  
  112. Routine({
  113.  
  114.     30.do({
  115.  
  116.         k = Synth(\randKick, [\curve, rand(5)+1]);
  117.         0.5.wait;
  118.         k = Synth(\randKick, [\curve, rand(5)+1]);
  119.         0.5.wait;
  120.  
  121.         2.do({                                // Condicionales con distintos pesos en cada beat 3 y 4 y subdivisones
  122.             if(coin(0.95),
  123.                 {k = Synth(\randKick, [\curve, rand(5)+1]);               0.125.wait;},
  124.                 {0.125.wait;}
  125.             );
  126.  
  127.             if(coin(0.2),
  128.                 {k = Synth(\randKick, [\vel, 20, \curve, rand(5)+1]);     0.125.wait;},   //Problemas con rand en synthdef
  129.                 {0.125.wait;}
  130.             );
  131.  
  132.             if(coin(0.6),
  133.                 {k = Synth(\randKick, [\vel, 20, \curve, rand(5)+1]);     0.125.wait;},
  134.                 {0.125.wait;}
  135.             );
  136.  
  137.             if(coin(0.4),
  138.                 {k = Synth(\randKick, [\vel, 20, \curve, rand(5)+1]);     0.125.wait;},
  139.                 {0.125.wait;}
  140.             );
  141.         });
  142.     });
  143.  
  144. }).play;
  145.  
  146. ////////////////////////////////////////////////////////////////////////////// SECUENCIA HI HAT
  147.  
  148. Routine({
  149.  
  150.     92.do({
  151.  
  152.         0.23.wait;
  153.  
  154.         if(coin(0.1),                                                   //  Crea un flam en el hihat 10% de las veces
  155.                 {k = Synth(\hiHat);     0.02.wait;},
  156.                 {0.02.wait;}
  157.             );
  158.  
  159.         h = Synth(\hiHat);
  160.         0.25.wait;
  161.     });
  162.  
  163. }).play;
  164.  
  165. ////////////////////////////////////////////////////////////////////////////// SECUENCIA PERC
  166.  
  167. Routine({
  168.  
  169.     240.do({
  170.  
  171.         if(coin(0.9),
  172.             {p = Synth(\perc); 0.125.wait;},
  173.  
  174.             {if(coin(0.5),                                          // Crea un trecillo en la percusion
  175.                 {
  176.                     p = Synth(\perc);
  177.                     wait(0.125/3);
  178.                     p = Synth(\perc);
  179.                     wait(0.125/3);
  180.                     p = Synth(\perc);
  181.                     wait(0.125/3);
  182.  
  183.                 },
  184.                 {0.125.wait;})}
  185.         );
  186.     });
  187.  
  188. }).play;
  189.  
  190. ////////////////////////////////////////////////////////////////////////////// SECUENCIA SWEEP SYNTH
  191.  
  192. Routine({
  193.  
  194.     ~swoop =  100;
  195.  
  196.     13.do({
  197.  
  198.         ~swoop = ~swoop * 1.5;      // Frecuencia cutoff del filtro (LPF) se multiplica pos 1.5 cada repeticion
  199.         postln(~swoop);
  200.  
  201.         a = Synth(\sweep, [\freq, 200, \cutoff, ~swoop]);
  202.  
  203.         3.5.wait;
  204.  
  205.         a.set(\gate, 0);
  206.  
  207.         0.5.wait;
  208.     });
  209.  
  210. }).play;
  211.  
  212. )
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement