{
   "code" : "(\r\n        var fm,tuner,dist,t=0.08,sine,fx,reverb,weights;\r\n                                                             \r\n        fm={ |freq=440, cmRatio=1, index=1, mul=1|              \r\n                var m=freq/cmRatio,d; d=index*m;                      \r\n                SinOsc.ar(freq+SinOsc.ar(m,0,d),0,mul)\r\n        };              \r\n        tuner={ |key,octave,transpose,detune|        \r\n                (key+(12*octave)+transpose).max(0).midicps+detune                     \r\n        };                                    \r\n                                        \r\n        reverb={ |in,trFB,trFilt|\r\n                var amp,local;                 \r\n                amp = Amplitude.kr(Mix.ar(in));\r\n                in = in * (amp > 0.04); \r\n                in = in * 0.5;\r\n                local = LocalIn.ar(2) * trFB;        \r\n                local = OnePole.ar(local, trFilt);                    \r\n                local = Rotate2.ar(local[0], local[1], 0.237);\r\n                local = AllpassN.ar(local, 0.05, { Rand(0.01,0.05) }!2);\r\n                local = DelayN.ar(local, 0.3, { Rand(0.15,0.33) }!2);\r\n                local = AllpassN.ar(local, 0.05, { Rand(0.03,0.15) }!2);\r\n                local = LeakDC.ar(local);                                              \r\n                local = local + in;       \r\n                                                     \r\n                4.do({ var t;                          \r\n                        t={ Rand(0.005,0.02) }!2;      \r\n                        local = AllpassN.ar(local, t, t, 1);\r\n                });                                       \r\n                                                          \r\n                LocalOut.ar(local);\r\n                local                                             \r\n        };                                                 \r\n                                                                \r\n        SynthDef(\\fm, { |key=4,oct=5,cmrDur=1,ndxDur=1,i_dur=1,amp=1,pan=0|\r\n                Out.ar(0,Pan2.ar(fm.(tuner.(key,oct,0,0),XLine.kr(0.102,0.405,cmrDur),   \r\n                        XLine.kr(2.021,0.098,ndxDur),Line.ar(amp,0,i_dur,doneAction:2)),pan))                                                                                                 \r\n        }).send(s);                                               \r\n                                                        \r\n        SynthDef(\\reverb,{ |trFB=0.5,trFilt=0.5,wetDry=0.5|                      \r\n                XOut.ar(0,wetDry,RLPF.ar(HPF.ar(reverb.(In.ar(0),trFB,trFilt),10000),15000))                                                                                                  \r\n        }).send(s);                        \r\n                                                        \r\n        SynthDef(\\fx,{ |dt1,dec1,dt2,dec2,dt3,dec3,trFB,trFilt,rcSpeed,                                                                                                                       \r\n                rcLo,rcHi,rcPhase,rcWidth,fftBuf1,fftBuf2,wetDry|         \r\n                                          \r\n                var in=In.ar(0,2),local,amp,chain,rverb;\r\n                                       \r\n                local=in;                        \r\n                local=CombN.ar(local,4,Lag.kr(dt2,dt2),dec2);\r\n                local=CombN.ar(local,4,dt3,dec3);        \r\n                local=CombN.ar(local,4,dt1,dec1);\r\n                rverb=reverb.(local,trFB,trFilt);\r\n            \r\n                chain = FFT([fftBuf1,fftBuf2],local);\r\n                chain = PV_RectComb(chain,SinOsc.ar(rcSpeed).range(rcLo,rcHi),rcPhase,\r\n                        Lag.kr(rcWidth,t*64));\r\n                local = IFFT(chain);\r\n\r\n                XOut.ar(0,wetDry,local+rverb/8)\r\n        }).send(s);\r\n\r\n\r\n        dist={ |lo,hi,dist|\r\n                (lo+(dist.windex/dist.size*(hi-lo))).clip(lo,hi).asInt\r\n        };\r\n\r\n        play(r({\r\n                var buf1,buf2;\r\n                buf1=Buffer.alloc(s,1024);\r\n                buf2=Buffer.alloc(s,1024);\r\n                s.sync;\r\n                fx=Synth(\\fx, [\r\n                        \\dt1,t*16,\r\n                        \\dec1,t*4,\r\n                        \\dt2,t/8,\r\n                        \\dec2,t,\r\n                        \\dt3,t*8,\r\n                        \\dec3,t*4,\r\n                        \\trFB,0.5,\r\n                        \\trFilt,0.1,\r\n                        \\rcSpeed,1/t/128,\r\n                        \\rcLo,0,\r\n                        \\rcHi,1,\r\n                        \\rcPhase,0.999,\r\n                        \\rcWidth,0.01,\r\n                        \\fftBuf1,buf1.bufnum,\r\n                        \\fftBuf2,buf2.bufnum,\r\n                        \\wetDry,1\r\n                ]);\r\n                Synth.after(fx,\\reverb,\r\n                        [\\trFB,1,\\trFilt,0.5,\\wetDry,0.8]);\r\n        }));\r\n\r\n        weights=[\r\n                [ 0, 0.021, 0.034, 0, 0.944, 0 ],\r\n                [ 0, 0, 0.236, 0, 0.115, 0.649 ],\r\n                [ 0.288, 0.696, 0.015, 0.001, 0.001, 0 ],\r\n                [ 0, 0, 0.647, 0, 0, 0.353 ]\r\n        ];\r\n\r\n        Task({\r\n                var keyw,div,octHi,octLo;\r\n                var env=Env([0.0392,1,-0.0196],[0.5,0.5],\\sine);\r\n                var dst={ |i| env[1/32*i] }!32,switch=32,times=3,up=1;\r\n                dst=dst.normalizeSum;\r\n             inf.do({\r\n                        if(up<0,{\r\n                                up=1;\r\n                                octHi=4;\r\n                                octLo=1;\r\n                        },{\r\n                                up=1.neg;\r\n                                octHi=8;\r\n                                octLo=6;\r\n                        });\r\n                        switch=[64,32,16,8,4].choose;\r\n                        (switch*times).do({ |i|\r\n                                var key,oct,cmr,ndx,dur,amp;\r\n                                if(i%switch==0,{\r\n                                        if(coin(0.8),\r\n                                                { keyw=weights.choose },\r\n                                                { keyw=normalizeSum({ 1.0.rand }!5) });\r\n\r\n                                        div=2.8.rand;\r\n                                        octHi=octHi+up;\r\n                                        octLo=octLo+up;\r\n                                        if(up.isPositive,\r\n                                                {t=t*1.3},\r\n                                                {t=t/1.3})\r\n                                });\r\n                                key=[ 0,2,5,0,7,10].wchoose(keyw);\r\n                                oct=dist.(octLo,octHi,dst);\r\n                                cmr=[ 0.002, 0.001 ].choose/div;\r\n                                ndx=[ 0.102, 0.051 ].choose*div*\r\n                                        [0.06,0.5,0.8,1.2].wchoose([0.5,0.25,0.2,0.025]);\r\n                                dur=[0.3,0.4,0.2,1.6].wchoose([ 0.25, 0.25, 0.25, 0.125])*(9/(i+1));\r\n                                amp=[ 0.04, 0.313, 0.111 ].choose;\r\n                                s.makeBundle(s.latency,{\r\n                                        Synth(\\fm,[\\key,key,\\oct,oct,\\cmrDur,cmr,\r\n                                                \\ndxDur,ndx,\\i_dur,dur,\\amp,amp*26,\\pan,0.2.rand2\r\n                                        ]);\r\n                                        if(i%switch==0,{\r\n                                                fx.set(\\dt1,t*[8,1,2,4].wchoose([0.1,0.1,0.4,0.4]),\r\n                                                        \\rcWidth,0.2.rand)\r\n                                        })\r\n                                });\r\n                                wait(t)\r\n                        })\r\n                })\r\n        }).play\r\n)",
   "id" : "1-5ge",
   "is_private" : null,
   "labels" : [
      "i loike windchimes"
   ],
   "ancestor_list" : [],
   "description" : "oldpatch",
   "name" : "fast fm windchimes 4 fealty",
   "author" : "s2s2s2s2s"
}
