SuperCollider : exempleProto

SuperCollider :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register
exemple_proto.sc (line 1)
  1. (
  2. d = (); // d "émule" notre classe
  3. // "méthodes"
  4.  
  5. d.init = { |self, serveur|  //méthode
  6.     self.serveur = serveur ? Server.default;
  7.     self.synths = [];
  8.     self.serveur.waitForBoot { d.sendDefs } ;
  9. };
  10.  
  11. d.sendDefs = {|self|  //variable d'instance
  12.         self.funcDefs.keysValuesDo {|k, f|
  13.             SynthDef(k, f).send(self.serveur)
  14.         };
  15.         "les synthdefs sont envoyes".postln;
  16. };
  17.  
  18. d.sendSynths = {|self|
  19.     s.sendBundle(nil,
  20.         [\s_new, 'source', 2000, 0, 1, \outBus, 20],
  21.         [\s_new, \ecoute, 2001, 3, 2000, \outBus, 0],
  22.         [\s_new, \imitation, 2002, 1, 1, \freqBus, 0, \volBus, 1, \outBus, 22],
  23.         [\s_new, \mix, 2003, 1, 1, \in1, 20, \in2, 22]
  24.     )
  25. };
  26.  
  27. d.updateSynths = {|self|
  28.     self.sendDefs;
  29.     {0.1.wait;
  30.     self.serveur.sendMsg(\g_freeAll, 1);
  31.     self.sendSynths;
  32.     }.fork;
  33. };
  34.  
  35. d.catchPitch =  {|self, bool= true|
  36.         if(bool)
  37.             {
  38.                 d.responder =  OSCresponder(nil, '/tr', {arg time, responder, msg, addr;
  39.                         var val;
  40.                         val = msg[3].trunc(0.01);
  41.                         if( msg[2]==0)
  42.                             {Post << "---> " <<  "hauteurs: " << val << "\n"}
  43.                             {Post << "      volumes: " << val << "\n"} ;
  44.         //                  s.sendMsg(\n_set, c.nodeID,  \freq, fr);
  45.                 }).add;
  46.             }
  47.             {d.removeResponder}
  48. };
  49. //privé 
  50. d.removeResponder =  {|self| d.responder.remove; Post << "plus de responder pour le pitch" << "\n" } ;
  51.  
  52. )
  53.  
  54. (
  55. d.sources = ( // dictionnaire de fonctions à choisir pour la source
  56.     sine: { |outBus=20|
  57.         var trig, seq, freq;
  58.         trig = Impulse.kr(8);
  59.         seq = Dbrown(1, 10, 1, inf);
  60.         freq = Demand.kr(trig, 0, seq * 100);
  61.         seq = SinOsc.ar(freq * ({LFNoise2.kr(0.1, 0.5, 1)}!2).midiratio).cubed.cubed.scaleneg(TRand.kr(-1, 1, trig));
  62.         Out.ar(outBus, seq * TRand.kr(0.01, 1, trig));
  63.     },
  64.     pulse: { |outBus=20|
  65.         var  sig, freq, trig, rand;
  66.         freq = MouseY.kr(0, 24.1);
  67.         trig = freq%1 - 0.01;
  68.         rand = TRand.kr(0.01, 1, trig);
  69.         sig = Pulse.ar((freq.floor+60 + {LFNoise2.kr(0.1, 0.1)}!2).midicps, rand )*EnvGen.kr(Env.perc(releaseTime: 0.8), trig).distort;
  70.         Out.ar(outBus, sig * rand);
  71.     }
  72. );
  73.  
  74. d.imitations = ( // dictionnaire de fonctions à choisir pour l'imitation
  75.     souffle: {|freqBus = 0, volBus = 1, outBus=22, lag = 0.1|
  76.         var sig;
  77.         sig = Ringz.ar(PinkNoise.ar(0.02), Lag.kr(In.kr(freqBus), lag), 0.5);
  78.         sig = CombC.ar(sig, 0.6, 0.6, 5)*0.4 + sig ;
  79.         sig = sig * (In.kr(volBus)-1).abs;
  80.         Out.ar(outBus, sig!2);
  81.     }
  82. );
  83.  
  84. d.funcDefs = (
  85.     source: d.sources[\pulse],
  86.     imitation: d.imitations[\souffle],
  87.  
  88.     ecoute: {|in = 20, outBus = 0|
  89.         var sig, mix, freq, hasFreq, amp, trig;
  90.         sig = In.ar(in);
  91.         mix = Mix.ar(sig);
  92.         amp = Amplitude.kr(mix, 0.05, 0.05);
  93.         #freq, hasFreq = Pitch.kr(mix, ampThreshold: 0.02, median: 7);
  94.     //  trig = Slope.kr(freq);
  95.         trig = Impulse.kr(10);
  96.         SendTrig.kr(trig, 0, freq);
  97.         SendTrig.kr(trig, 1, amp);
  98.         Out.kr(outBus, [freq, amp]);
  99. },
  100.     mix: {|in1, in2|
  101.         var mouse;
  102.         mouse = MouseX.kr;
  103.         Out.ar(0, In.ar(in1)*mouse + (In.ar(in2)*(mouse-1).abs) )
  104.     }
  105. );
  106.  
  107. d.synths !? {d.updateSynths};
  108. )
  109. d.serveur;
  110. d.init;
  111. d.sendSynths;
  112. d.updateSynths;
  113. d.catchPitch;
  114. d.catchPitch(false);
  115.  
  116. )

There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.3
Page was generated in 0.2449 seconds