module Csound.Typed.Plugins.Korg35( linKorg_lp, linKorg_hp, korg_lp, korg_hp ) where import Data.Boolean import Control.Monad.Trans.Class import Control.Applicative import Csound.Dynamic import Csound.Typed.Types import Csound.Typed.GlobalState import qualified Csound.Typed.GlobalState.Elements as E(korg35Plugin) -- | Linear korg 35 low pass filter (12 dB). -- -- > linDiode centerFrequency resonance asig -- -- resonance ranges in the interval [0, 1] and higher. -- self-resonance occurs at 1. linKorg_lp :: Sig -> Sig -> Sig -> Sig linKorg_lp cfq res ain = k35_lpf ain cfq (normReson res) 0 1 -- | Linear korg 35 high pass filter (6 dB). -- -- > linDiode centerFrequency resonance asig -- -- resonance ranges in the interval [0, 1] and higher. -- self-resonance occurs at 1. linKorg_hp :: Sig -> Sig -> Sig -> Sig linKorg_hp cfq res ain = k35_hpf ain cfq (normReson res) 0 1 -- | Korg 35 low pass filter (12 dB). -- -- > diode saturation centerFrequency resonance asig -- -- resonance ranges in the interval [0, 1] and higher. -- self-resonance occurs at 1. -- -- saturation ranges from 1 and higher (typical value: 4) korg_lp :: Sig -> Sig -> Sig -> Sig -> Sig korg_lp ksaturation cfq res ain = k35_lpf ain cfq (normReson res) 1 ksaturation -- | Korg 35 high pass filter (6 dB). -- -- > diode saturation centerFrequency resonance asig -- -- resonance ranges in the interval [0, 1] and higher. -- self-resonance occurs at 1. -- -- saturation ranges from 1 and higher (typical value: 4) korg_hp :: Sig -> Sig -> Sig -> Sig -> Sig korg_hp ksaturation cfq res ain = k35_hpf ain cfq (normReson res) 1 ksaturation normReson :: Sig -> Sig normReson res = res * 10 ------------------------------------------------------------------------------- -- 12db/oct low-pass filter based on Korg 35 module -- (found in MS-10 and MS-20). -- -- Based on code by Will Pirkle, presented in: -- -- http://www.willpirkle.com/Downloads/AN-5Korg35_V3.pdf -- -- [ARGS] -- -- ain - audio input -- acutoff - frequency of cutoff -- kQ - filter Q [1, 10.0] (k35-lpf will clamp to boundaries) -- knonlinear - use non-linear processing -- ksaturation - saturation for tanh distortion k35_lpf :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig k35_lpf ain acutoff kQ knonlinear ksaturation = fromGE $ do addUdoPlugin E.korg35Plugin f <$> toGE ain <*> toGE acutoff <*> toGE kQ <*> toGE knonlinear <*> toGE ksaturation where f ain acutoff kQ knonlinear ksaturation = opcs "k35_lpf" [(Ar, [Ar, Xr, Kr, Kr, Kr])] [ain, acutoff, kQ, knonlinear, ksaturation] -- 6db/oct high-pass filter based on Korg 35 module -- (found in MS-10 and MS-20). -- -- Based on code by Will Pirkle, presented in: -- -- http://www.willpirkle.com/Downloads/AN-7Korg35HPF_V2.pdf -- -- [ARGS] -- -- ain - audio input -- acutoff - frequency of cutoff -- kQ - filter Q [1, 10.0] (k35_hpf will clamp to boundaries) -- knonlinear - use non-linear processing -- ksaturation - saturation for tanh distortion k35_hpf :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig k35_hpf ain acutoff kQ knonlinear ksaturation = fromGE $ do addUdoPlugin E.korg35Plugin f <$> toGE ain <*> toGE acutoff <*> toGE kQ <*> toGE knonlinear <*> toGE ksaturation where f ain acutoff kQ knonlinear ksaturation = opcs "k35_hpf" [(Ar, [Ar, Xr, Kr, Kr, Kr])] [ain, acutoff, kQ, knonlinear, ksaturation]