hsc3-0.20: Help/Ugen/pv_Split.help.hs
-- pv_Split
let sz = 1024 * 2
op = (-)
z = soundIn 0
c0 = fft' (localBufId 'α' sz 1) z
(c1,c2) = X.pv_SplitUnpack c0 (localBufId 'β' sz 1)
in ifft' c1 `op` ifft' c2
-- pv_Split
let sz = 1024 * 16
op = (+)
z = soundIn 0
c0 = fft' (localBufId 'α' sz 1) z
(c1,c2) = X.pv_SplitUnpack c0 (localBufId 'β' sz 1)
in ifft' c1 `op` ifft' c2
-- pv_Split
let sz = 1024 * 16
op = (-)
z = lfClipNoiseId 'α' ar 100 * 0.1
c0 = fft' (localBufId 'α' sz 1) z
(c1,c2) = X.pv_SplitUnpack c0 (localBufId 'β' sz 1)
in ifft' c1 `op` ifft' c2
-- pv_Split ; pv_splita is a variant that allocates a local buffer, deriving the size from the input graph
let s = whiteNoiseId 'α' ar * 0.1
c1 = fftAllocId 'β' 2048 s 0.5 0 1 0
(c2,c3) = X.pv_SplitAllocUnpackId 'γ' c1
c4 = pv_BrickWall c2 (-0.85)
c5 = pv_BrickWall c3 0.45
in ifft c4 0 0 * 0.15 + ifft c5 0 0
-- pv_Split ; pv_splita works with external buffers as well
let b = control kr "buf" 0
z = soundIn 0
c1 = fft b z 0.5 0 1 0
(c2,c3) = X.pv_SplitAllocUnpackId 'γ' c1
c4 = pv_BrickWall c2 (-0.85)
c5 = pv_BrickWall c3 0.45
in ifft c4 0 0 * 0.15 + ifft c5 0 0
---- ; pv_Split ; leaving out pv_split gives an invalid graph (ie. this expression is an error)
let s = whiteNoiseId 'α' ar * 0.1
c1 = fftAllocId 'β' 2048 s 0.5 0 1 0
c4 = pv_BrickWall c1 (-0.85)
c5 = pv_BrickWall c1 0.45
in ifft c4 0 0 * 0.15 + ifft c5 0 0
{---- Variant of `PV_Copy` that returns both signal paths.
`PV_Copy` graphs have two linear orderings that are not equivalent.
... -> fft -> ... .-> pv_copy -> pv1 -> ifft -> ...
|
.-> pv2 -> ifft -> ...
`PV_Split` graphs also have two _equivalent_ linear orderings.
.-> pv1 -> ifft1 -> ...
... -> fft -> ... -> pv_split |
.-> pv2 -> ifft2 -> ...
-}