module Csound.Typed.Plugins.Utilities(
  delay1k
) where

import Csound.Dynamic

import Csound.Typed.Types.Prim
import Csound.Typed.GlobalState
import qualified Csound.Typed.GlobalState.Elements as E(delay1kPlugin)


-------------------------------------------------------------------------------

-- | Delay a control signal by single sample.
delay1k :: Sig -> Sig
delay1k :: Sig -> Sig
delay1k Sig
ain = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
    UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.delay1kPlugin
    E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain
    where f :: E -> E
f E
x = Name -> Spec1 -> [E] -> E
opcs Name
"Delay1k" [(Rate
Kr, [Rate
Kr])] [E
x]