hsc3-0.3: Help/Graphs/record-scratcher.lhs
record scratcher (josh parmenter)
> let { dup a = mce2 a a
> ; fn = "/home/rohan/audio/metal.wav"
> ; d = env [0, 1, 0] [0.1, 0.1] [EnvSin] 1 0
> ; e = envGen KR 1 1 0 1 RemoveSynth d
> ; x = mouseX KR (-10) 10 Linear 0.2
> ; dx = x - delayN x 0.1 0.1
> ; bdx = mouseButton KR 1 0 0.3 + dx
> ; bdxr = bdx * bufRateScale KR 0
> ; scr = playBuf 1 0 bdxr 0 0 Loop }
> in withSC3 (\fd -> do { async fd (b_allocRead 0 fn 0 0)
> ; play fd (out 0 (dup (scr * e))) })
{ var fn = "/home/rohan/audio/metal.wav"
; var b = 0
; var gate = 1
; var e = Env.new([0, 1, 0], [0.1, 0.1], \sin, 1, nil)
; var env = EnvGen.kr(e, gate, doneAction: 2)
; var x = MouseX.kr(-10, 10, 'linear', 0.2)
; var dx = x - DelayN.kr(x, 0.1, 0.1)
; var bdx = MouseButton.kr(1, 0, 0.3) + dx
; var bdxr = bdx * BufRateScale.kr(b)
; var scr = PlayBuf.ar(1, b, bdxr, 0, 0, 1)
; var s = Server.default
; s.sendMsg("/b_allocRead", b, fn, 0, 0)
; Out.ar(0, (scr * env).dup ) }.play