Safe Haskell | None |
---|---|
Language | Haskell98 |
Effects
- data HeadPanSpec :: * = HeadPanSpec {
- headPanPhase :: D
- hradPanFade :: D
- headPan :: (Sig, Sig) -> Sig -> Sig2
- headPan' :: HeadPanSpec -> (Sig, Sig) -> Sig -> Sig2
- staticHeadPan :: (D, D) -> Sig -> Sig2
- headPan2 :: (Sig, Sig) -> Sig2 -> Sig2
- headPan2' :: HeadPanSpec -> (Sig, Sig) -> Sig2 -> Sig2
- staticHeadPan2 :: (D, D) -> Sig2 -> Sig2
- headPanNet :: (Int, Int) -> [Sig] -> Sig2
- headPanNet2 :: (Int, Int) -> [Sig2] -> Sig2
Documentation
data HeadPanSpec :: *
Optional arguments for opcode hrtfmove.
phase is 0 or 1
fade is 1 to 24.
See csound docs for hrtfmove for details.
HeadPanSpec | |
|
headPan :: (Sig, Sig) -> Sig -> Sig2
Head response based spacialization. It works when you listen in headphones. It works only with sample rate of 44100, 48000 or 96000.
headPan (azimuth, elevation) asig
azimuth and elevation are measured in ratios (0, 1),
staticHeadPan :: (D, D) -> Sig -> Sig2
Static head response based spacialization. It works when you listen in headphones.
It works only with sample rate of 44100, 48000 or 96000. It's more efficient than headPan
.
staticHeadPan (azimuth, elevation) asig
azimuth and elevation are measured in ratios (0, 1),
headPan2' :: HeadPanSpec -> (Sig, Sig) -> Sig2 -> Sig2 Source
The same as headPan' but for stereo signals.
headPanNet :: (Int, Int) -> [Sig] -> Sig2 Source
Net of sounds evenly distributed oround the head. First argument is a pair of numbers (column, rows) in the matrix. The second argument is a matrix written in a single list. The rows are for elevation and the columns are for azimuth.
A ghci session example:
let f t x = mul 0.4 $ sched (\_ -> return $ fades 0.07 0.1 * tri x) $ withDur 0.2 $ metro t dac $ headPanNet (3, 2) [f 1 220, f 0.75 330, f 0.5 440, f 0.2 660, delaySnd 0.75 $ f 2 (220 * 5/4),delaySnd 0.4 $ f 1 (220 * 9/8)]