//Sobre un ejemplo del PMOsc [ungen]...

//Utilizo el ProxySpace para jugar con mas libertad pero en realidad no es LiveCoding//
//Aguas por que si pika derrepente gacho...

p=ProxySpace.push(s.boot);

p.fadeTime=4;
~out.play;

~pulso={LFPulse.ar(190.0.rand + 1110.rand, Array.fill(2, Rand(0, 1.0), LFNoise0.kr(5).range(0,1)), 0.01)}
(e = Env.linen(2, [5, 10, 8].choose, [1, 2, 3].choose, 0.1.rand);
~carrier={Mix(
				Array.fill(
				6, 
				~pulso
				)) * EnvGen.kr(e) 
				!2}
				);
~out=~carrier;				
~out=~modula;
~out=~array + ~carrier;				
~array={Mix(Array.fill( 20,~modula))}

(e = Env.linen(2, [5, 10, 8].choose, [1, 2, 3].choose, 0.2.rand);

~modula={|t_trig, frec = 1200.0, rand =50, frec1 = 1000.0, rand1 = 20|
	
			EnvGen.ar(e) *
				PMOsc.ar(Mix(
				Array.fill(
				6, 
				{LFPulse.ar(frec + rand.rand, Array.fill(2, Rand(0, 1.0), 		                
				 LFNoise0.kr(0.7).range(0,1)), 0.1)}
				)
				), 
				Mix(Array.fill(6, frec1 + rand1.rand)), 
				Line.kr(0.0, 10.0.rand, FSinOsc.kr(0.1)),0 , 0.1)}
                   );
                   
        ~modula.xset(\frec,1130.0);
        ~modula.xset(\rand, 11.0);
        ~modula.xset(\frec1, 100.0);
        ~modula.xset(\rand1, 1350.0);

                   
s.prepareForRecord; 
s.record;  
s.stopRecording;