Last active
October 28, 2015 16:22
-
-
Save Sciss/ae5e3ae549490044b573 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| def mkDelay(in: GE, buf: GE): GE = { | |
| val dt = BufDur.kr(buf) | |
| DelayN.ar(in, dt, dt) | |
| } | |
| // returns (delayed source, shift90) | |
| def HilbertFIR(in: GE, buf: GE): (GE, GE) = { | |
| val fft = FFT(buf, in) | |
| val pv = PV_PhaseShift90(fft) | |
| val dly = mkDelay(in, buf) | |
| val shift = IFFT.ar(pv) | |
| (dly, shift) | |
| } | |
| val v = Var("var") | |
| val dTime = Dim(v, "time") | |
| val speed = UserValue("speed (Hz)", 0.05).kr | |
| val lo = UserValue("low" , 0.0).kr | |
| val hi = UserValue("high", 1.0).kr | |
| val time = dTime.play(speed) | |
| val raw = v.play(time, interp = /* 1 */ 2) \ 0 | |
| // raw .poll(Impulse.kr(speed)) | |
| // time.poll(Impulse.kr(speed)) | |
| val sig = raw.linlin(lo, hi, 0 /* -1 */, 1) | |
| val c = UserValue("c", 0.25).kr | |
| val df = UserValue("delta_f (Hz)", 0).kr | |
| val fMod = df * 2.pow(sig * c) | |
| val sin = SinOsc.ar(fMod, phase = 0.0) | |
| val cos = SinOsc.ar(fMod, phase = 0.5 * math.Pi) | |
| val hlbBuf = LocalBuf(4096) | |
| val (hilbRe, hilbIm) = HilbertFIR(sig, hlbBuf) | |
| val env = mkDelay(Line.ar(0, 1, 0.1), hlbBuf) | |
| val out = LeakDC.ar(hilbRe * sin - hilbIm * cos) * env | |
| Elapsed := time | |
| output := Pan2.ar(out) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment