// title: Creaking door or roulette wheel? // author: 38nonprivate // description: // I aimed for the sound of a creaky door but fell a little short - you be the judge. // code: ( { var output, basePitch = 387, macroPitch, macroPitchAmt = 400; var modOsc, modAmt = 1.3, amp = 0.8; var creakRate, creakTrig, creakEnvGen, noise, combs, oscFreq; noise = LFNoise1.ar(LFNoise0.kr(4.8).lag(0.4).range(3646, 7777), 0.6); creakRate = EnvGen.kr( Env( [40, 25, 15, 2], [0.9, 0.6, 1.0], -4 ), doneAction: 2 ); creakTrig = Impulse.kr(creakRate); creakEnvGen = EnvGen.kr( Env( [0.0, 1.0, 0.0], [0.02, 0.1], [5, -8] ), creakTrig, timeScale: SinOsc.kr(1.5).range(0.12, 0.26) * Line.kr(0.5, 2.3, 2) ); macroPitch = EnvGen.kr( Env( [0.0, 4, 0.1, 0.3, 0.4, 0.7, 0.9], [0.2, 0.2, 0.4, 0.3, 0.48, 0.59], [2, 2, -4, -3, -2, -4] ) ); modOsc = SinOsc.ar( (basePitch + (macroPitch * macroPitchAmt)) * 0.17); modOsc = SinOsc.ar( (basePitch + (macroPitch * macroPitchAmt)) * 0.232, modOsc * 0.3); oscFreq = basePitch + (macroPitch * macroPitchAmt); oscFreq = oscFreq * (1 + (creakEnvGen * 2)); output = SinOsc.ar(oscFreq, modOsc * modAmt, 1); output = output * SinOsc.ar(SinOsc.kr(1.6).range(1220, 1355)); output = output + noise; output = output.clip(-0.5, 0.5) * creakEnvGen * amp * TRand.kr(0.8, 1.0, creakTrig); combs = Mix([CombC.ar(output, 0.2, 0.0084, 0.12), CombC.ar(output, 0.2, 0.00181, 0.03)]); output = output + (combs * 0.2); output ! 2 }.play )