packages feed

hsc3-graphs-0.15: Sound/SC3/Graph/JMCC_reso_pulse.hs

-- reso-pulse (jmcc) #1
module Sound.SC3.Graph.JMCC_reso_pulse where

import Sound.SC3 {- hsc3 -}
import Sound.SC3.Lang.Control.OverlapTexture {- hsc3-lang -}

rand2 :: ID a => a -> UGen -> UGen
rand2 k n = rand k (-n) n

reso_pulse :: UGen
reso_pulse =
    let f = midiCPS (lchoose 'α' [25,30,34,37,41,42,46,49,53,54,58,61,63,66])
        f' = 2 * f + rand2 'β' 0.5
    in (lfPulse AR f 0 0.2 + lfPulse AR f' 0 0.2) * 0.02

-- > let g = reso_pulse_pp (silent 1)
reso_pulse_pp :: UGen -> UGen
reso_pulse_pp z =
    let lfoFreq = 6
        lfo = lfNoise0 'γ' KR lfoFreq * 1000 + 1200
        x = mouseX KR 0.2 0.02 Exponential 0.2
        left = rlpf z lfo x
        delayTime = 2 / lfoFreq
        right = delayN left delayTime delayTime
    in mce2 left right

main :: IO ()
main = overlapTextureU_pp (4,2,4,maxBound) reso_pulse 1 reso_pulse_pp