FreqShift
This one I never used. Makes some funny stuff though. Maybe not as useful (for me) as PitchShift, but I can think of a quite nice effects with this. This time I decided to trigger a Blip every 4 seconds and make a feedback loop in the synth, changing the parameter of FreqShift also every 4 seconds. The result is sometimes a nice deep bassy drone and something a rising tone. It’s also nice making the Blip note a little bit longer and maybe with less harmonics, so it’s deeper and has a different quality.
Here the code:
play{a=Blip.ar(60,4,LFGauss.ar(4,1/8));a=a/4+LocalIn.ar(2);a=FreqShift.ar(a,LFNoise0.kr(1/4,90));LocalOut.ar(DelayC.ar(a,1,0.1,0.9));a}
See original tweet
LastValue
I’m probably not using this UGen in a very good way, but anyway I liked the results, so… I can imagine using LastValue with a controller or a kind of amplitude trigger. I am using it here to analyze an LFNoise0. I put the threshold bigger than the round factor, cause that way I get less changes, and using the same number as threshold and round factor would probably have the same effect as just using round. So now 4 different voices move around 50 and 300 Hz in 50Hz steps, but the rhythm is much interesting with the filtering done by the LastValue threshold, also ensuring me that the jumps will be of 100Hz or more.
Here the code:
play{Splay.ar(SinOsc.ar(LastValue.kr(LFNoise0.kr(3!4,250,220),200).round(50)*LFPar.kr((1..4)/8,0,{0.02.rand}!4,1),0,1/2))}
See original tweet
SendTrig
I thought I wouldn’t make an sctweet out of this, because it requires an OSCresponder (which takes some characters to do). So, maybe in the 3.5 version of supercollider would be better, because it will be called OSCFunc and it takes less code to achieve the same. This tweet I make just sends back to the language a value made by Sweep, and is re triggered 4 times per second. In the responder I take the number as string and let is speak it (Mac OS only afaik). With the ‘force’ [ speak(0, true) ] argument, it lets me retrigger the speech synthesizer instead of waiting until it’s done (normal behavior). The funny thing, is that it doesn’t re trigger every time as expected, so sometimes it says the whole number and the other ones are ‘remixed’ ;)
Here is the code:
play{SendTrig.kr(Impulse.kr(4),1,Sweep.kr(Impulse.kr(1/8),1)+1)};OSCresponder(nil,‘/tr’,{|…m|round(m@2@3).asString.speak(0,true)}).add
See the original tweet
And some code which I found funny, but couldn’t make it to 140 chars (maybe taking out the defer would help, but it wouldn’t work… also a case for hoping for 3.5 to have more integration between the clocks?):
w=Window().front;play{SendTrig.kr(Impulse.kr(40),1,LFNoise2.kr(1,400,400))};OSCresponder(nil,‘/tr’,{|t,r,m|defer{w.bounds=Rect(0,0,800,m@3)}}).add
Sweep
So, this is kind of nice, it’s a resetable ramp, like Phasor but much easier to understand ;) First thing that came to my mind testing around was like a sports car / bike shifting gears. So yo dawg, I put 6 of them (you can make more or less) with the good old Gendy generator, and some panning to make it more exciting…
Here is the code:
play{a=0;6.do{x=Sweep.ar(Dust2.kr(0.1+2.0.rand),9.rand+9)+LFNoise1.kr(0.1,60,80);a=a+Pan2.ar(Gendy1.ar(1,1,1,1,x,x+9),LFNoise2.kr(1))};a}
See original tweet
SetResetFF
Like ToggleFF, SetResetFF gives me 0 and 1, but not from a single trigger. It receiver a trigger for the ons, and a trigger for the offs, so it’s kind of nice to combine this with regular triggers and random triggers. In this case I used it with random triggers, sifferent frequencies with some slow wandering, and a reverb.
Here the code:
play{GVerb.ar(Mix(9.collect{SetResetFF.ar(Dust.ar(8.rand+1),Dust.ar(8.rand+1)).lag*SinOsc.ar(LFNoise2.kr(0.1,25,exprand(40,1500)))/9}))}
See original tweet
alln4tural asked: LFGauss. ar(19 .. wtf?
(i hope you will explain that when you get to LFGauss :)
Yeah, kind of nice percussive/grainy kind of envelope :)
PulseCount
I usually keep track of stuff in the language side. It’s nice to discover these UGens to make this kind of proces also in the server. PulseCount just adds 1 to the count when receives a trigger and resets it’s count on another trigger. For this tweet I put a threshhold of 4 and some fast impulses to trigger the count. A slow trigger to reset the counter. The binary operator > gives 1 or 0, so I used it for the amplitude. In this case there are several UGens running, and activated (or not) from the PulseCount. So I have an augmented chord with a rhythmical pattern, and for for the extra, just a reverberated HPF for the clicky sound which I liked and wanted to bring more in the foreground.
Here the code:
play{i=Impulse;a=Splay.ar((PulseCount.ar(i.ar((1..8)),i.ar(1/3))>4)*Blip.ar((40,44..62).midicps,2));a*0.1+GVerb.ar(HPF.ar(a,4e3),300,14)*4}
See Original tweet
Gendy2
I love the Gendy UGens. Don’t use them too much cause I think they are a little bit hard to control in a live situation (too much parameters and don’t know exactly what they do). I almost blew my ears off by trying out Gendy2 with a min/max frequency over 5000 … don’t know what happened, but my ears still hurt. Anyway… lots of the examples are concentrated in thins kind of stochastic noise and the timbre of the noise, I tried to get a little melody out of it, and sounds quite 8 bity/Atari kind of sound (which I like).
Here the code:
play{f=LFPar.kr(0.22,0,100,150).round(50).lag;Gendy2.ar(6,6,0.5,0.01,f,f+[1,2],1/2,1/2,19,f/4)*SetResetFF.ar(Impulse.ar(4),Dust.ar(4)).lag}
See original tweet
XFade2
This can be very useful for blending two different sounds. I tried it out with 2 SinOscs in fifths and kind of liked the sound, so used SinOscFB to have more variation in the timbre, and a little bit of reverb to blend it a little bit more.
Here the code:
play{l=LFNoise2;FreeVerb2.ar(*XFade2.ar(SinOscFB.ar([80,81],l.kr(1)+1/2),SinOscFB.ar([121,160],l.kr(1)+1/2),l.kr(1)))}
See the original Tweet