module Csound.Typed.Opcode.TableControl (
    
    
    
    ftfree, ftgen, ftgentmp, getftargs, sndload,
    
    -- * Read/Write Operations.
    ftaudio, ftload, ftloadk, ftprint, ftsamplebank, ftsave, ftsavek, ftset, ftslice, ftslicei, ptablew, tablecopy, tablefilter, tablefilteri, tablegpw, tableicopy, tableigpw, tableimix, tablemix, tablera, tablew, tablewa, tablewkt, tabmorph, tabmorpha, tabmorphak, tabmorphi, tabplay, tabrec) where

import Control.Monad.Trans.Class
import Control.Monad
import Csound.Dynamic
import Csound.Typed

-- 

-- | 
-- Deletes function table.
--
-- >  ftfree  ifno, iwhen
--
-- csound doc: <https://csound.com/docs/manual/ftfree.html>
ftfree ::  Tab -> D -> SE ()
ftfree :: Tab -> D -> SE ()
ftfree Tab
b1 D
b2 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> DepT m ()
f (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b1 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b2
  where
    f :: E -> E -> DepT m ()
f E
a1 E
a2 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"ftfree" [(Rate
Xr,[Rate
Ir,Rate
Ir])] [E
a1,E
a2]

-- | 
-- Generate a score function table from within the orchestra.
--
-- > gir  ftgen  ifn, itime, isize, igen, iarga [, iargb ] [...]
-- > gir  ftgen  ifn, itime, isize, igen, iarray
--
-- csound doc: <https://csound.com/docs/manual/ftgen.html>
ftgen ::  Tab -> D -> D -> D -> D -> SE D
ftgen :: Tab -> D -> D -> D -> D -> SE D
ftgen Tab
b1 D
b2 D
b3 D
b4 D
b5 =
  (E -> D) -> SE E -> SE D
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ( GE E -> D
D (GE E -> D) -> (E -> GE E) -> E -> D
forall b c a. (b -> c) -> (a -> b) -> a -> c
. E -> GE E
forall a. a -> GE a
forall (m :: * -> *) a. Monad m => a -> m a
return) (SE E -> SE D) -> SE E -> SE D
forall a b. (a -> b) -> a -> b
$ DepT GE E -> SE E
forall a. Dep a -> SE a
SE (DepT GE E -> SE E) -> DepT GE E -> SE E
forall a b. (a -> b) -> a -> b
$ DepT GE (DepT GE E) -> DepT GE E
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (DepT GE E) -> DepT GE E)
-> DepT GE (DepT GE E) -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> DepT GE E
forall {m :: * -> *}. Monad m => E -> E -> E -> E -> E -> DepT m E
f (E -> E -> E -> E -> E -> DepT GE E)
-> DepT GE E -> DepT GE (E -> E -> E -> E -> DepT GE E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b1 DepT GE (E -> E -> E -> E -> DepT GE E)
-> DepT GE E -> DepT GE (E -> E -> E -> DepT GE E)
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b2 DepT GE (E -> E -> E -> DepT GE E)
-> DepT GE E -> DepT GE (E -> E -> DepT GE E)
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b3 DepT GE (E -> E -> DepT GE E)
-> DepT GE E -> DepT GE (E -> DepT GE E)
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b4 DepT GE (E -> DepT GE E) -> DepT GE E -> DepT GE (DepT GE E)
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b5
  where
    f :: E -> E -> E -> E -> E -> DepT m E
f E
a1 E
a2 E
a3 E
a4 E
a5 = Name -> Spec1 -> [E] -> DepT m E
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m E
opcsDep Name
"ftgen" [(Rate
Ir,(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir)),(Rate
Ir,[Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1,E
a2,E
a3,E
a4,E
a5]

-- | 
-- Generate a score function table from within the orchestra, which is deleted at the end of the note.
--
-- Generate a score function table from within the orchestra,
--     which is optionally deleted at the end of the note.
--
-- > ifno  ftgentmp  ip1, ip2dummy, isize, igen, iarga, iargb, ...
--
-- csound doc: <https://csound.com/docs/manual/ftgentmp.html>
ftgentmp ::  D -> D -> D -> D -> D -> [D] -> SE Tab
ftgentmp :: D -> D -> D -> D -> D -> [D] -> SE Tab
ftgentmp D
b1 D
b2 D
b3 D
b4 D
b5 [D]
b6 =
  (E -> Tab) -> SE E -> SE Tab
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ( GE E -> Tab
Tab (GE E -> Tab) -> (E -> GE E) -> E -> Tab
forall b c a. (b -> c) -> (a -> b) -> a -> c
. E -> GE E
forall a. a -> GE a
forall (m :: * -> *) a. Monad m => a -> m a
return) (SE E -> SE Tab) -> SE E -> SE Tab
forall a b. (a -> b) -> a -> b
$ DepT GE E -> SE E
forall a. Dep a -> SE a
SE (DepT GE E -> SE E) -> DepT GE E -> SE E
forall a b. (a -> b) -> a -> b
$ DepT GE (DepT GE E) -> DepT GE E
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (DepT GE E) -> DepT GE E)
-> DepT GE (DepT GE E) -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> [E] -> DepT GE E
forall {m :: * -> *}.
Monad m =>
E -> E -> E -> E -> E -> [E] -> DepT m E
f (E -> E -> E -> E -> E -> [E] -> DepT GE E)
-> DepT GE E -> DepT GE (E -> E -> E -> E -> [E] -> DepT GE E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b1 DepT GE (E -> E -> E -> E -> [E] -> DepT GE E)
-> DepT GE E -> DepT GE (E -> E -> E -> [E] -> DepT GE E)
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b2 DepT GE (E -> E -> E -> [E] -> DepT GE E)
-> DepT GE E -> DepT GE (E -> E -> [E] -> DepT GE E)
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b3 DepT GE (E -> E -> [E] -> DepT GE E)
-> DepT GE E -> DepT GE (E -> [E] -> DepT GE E)
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b4 DepT GE (E -> [E] -> DepT GE E)
-> DepT GE E -> DepT GE ([E] -> DepT GE E)
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b5 DepT GE ([E] -> DepT GE E) -> DepT GE [E] -> DepT GE (DepT GE E)
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (D -> DepT GE E) -> [D] -> DepT GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) [D]
b6
  where
    f :: E -> E -> E -> E -> E -> [E] -> DepT m E
f E
a1 E
a2 E
a3 E
a4 E
a5 [E]
a6 = Name -> Spec1 -> [E] -> DepT m E
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m E
opcsDep Name
"ftgentmp" [(Rate
Ir,(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] ([E
a1,E
a2,E
a3,E
a4,E
a5] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a6)

-- | 
-- Fill a string variable with the arguments used to create a function table at k-rate.
--
-- getftargs writes the arguments used to create a function table to a string variable. getftargs runs both at initialization and performance time.
--
-- > Sdst  getftargs  iftno, ktrig
--
-- csound doc: <https://csound.com/docs/manual/getftargs.html>
getftargs ::  D -> Sig -> Str
getftargs :: D -> Sig -> Str
getftargs D
b1 Sig
b2 =
  GE E -> Str
Str (GE E -> Str) -> GE E -> Str
forall a b. (a -> b) -> a -> b
$ E -> E -> E
f (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> D -> GE E
unD D
b1 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2
  where
    f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"getftargs" [(Rate
Sr,[Rate
Ir,Rate
Kr])] [E
a1,E
a2]

-- | 
-- Loads a sound file into memory for use by loscilx
--
-- sndload loads a sound file into memory for use by loscilx.
--
-- >  sndload  Sfname[, ifmt[, ichns[, isr[, ibas[, iamp[, istrt   \
-- >           [, ilpmod[, ilps[, ilpe]]]]]]]]]
--
-- csound doc: <https://csound.com/docs/manual/sndload.html>
sndload ::  Str -> SE ()
sndload :: Str -> SE ()
sndload Str
b1 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> Dep ()
forall {m :: * -> *}. Monad m => E -> DepT m ()
f (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Str -> GE E) -> Str -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Str -> GE E
unStr) Str
b1
  where
    f :: E -> DepT m ()
f E
a1 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"sndload" [(Rate
Xr,[Rate
Sr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1]

-- Read/Write Operations.

-- | 

--
-- > ians  ftaudio  ifn, "filename", iformat[, ibeg, iend]
-- > kans  ftaudio  ktrig, kfn, "filename", kformat [, isync, kbeg, kend]
--
-- csound doc: <https://csound.com/docs/manual/ftaudio.html>
ftaudio ::  Tab -> Str -> D -> Sig
ftaudio :: Tab -> Str -> D -> Sig
ftaudio Tab
b1 Str
b2 D
b3 =
  GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E
f (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Tab -> GE E
unTab Tab
b1 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b2 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b3
  where
    f :: E -> E -> E -> E
f E
a1 E
a2 E
a3 = Name -> Spec1 -> [E] -> E
opcs Name
"ftaudio" [(Rate
Ir,[Rate
Ir,Rate
Sr,Rate
Ir,Rate
Ir,Rate
Ir]),(Rate
Kr,[Rate
Kr,Rate
Kr,Rate
Sr,Rate
Kr,Rate
Ir,Rate
Kr,Rate
Kr])] [E
a1,E
a2,E
a3]

-- | 

--
-- >  ftload  Sfilename, iflag, ifn1 [, ifn2] [...]
--
-- csound doc: <https://csound.com/docs/manual/ftload.html>
ftload ::  Str -> D -> Tab -> SE ()
ftload :: Str -> D -> Tab -> SE ()
ftload Str
b1 D
b2 Tab
b3 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> E -> DepT m ()
f (E -> E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Str -> GE E) -> Str -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Str -> GE E
unStr) Str
b1 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b2 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b3
  where
    f :: E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"ftload" [(Rate
Xr,[Rate
Sr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] [E
a1,E
a2,E
a3]

-- | 

--
-- >  ftloadk  Sfilename, ktrig, iflag, ifn1 [, ifn2] [...]
--
-- csound doc: <https://csound.com/docs/manual/ftloadk.html>
ftloadk ::  Str -> Sig -> D -> Tab -> SE ()
ftloadk :: Str -> Sig -> D -> Tab -> SE ()
ftloadk Str
b1 Sig
b2 D
b3 Tab
b4 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> E -> E -> DepT m ()
f (E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Str -> GE E) -> Str -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Str -> GE E
unStr) Str
b1 DepT GE (E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b2 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b3 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b4
  where
    f :: E -> E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 E
a4 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"ftloadk" [(Rate
Xr,[Rate
Sr,Rate
Kr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] [E
a1,E
a2,E
a3,E
a4]

-- | 

--
-- >  ftprint  ifn [, ktrig, kstart, kend, kstep, inumcols ]
--
-- csound doc: <https://csound.com/docs/manual/ftprint.html>
ftprint ::  Tab -> SE ()
ftprint :: Tab -> SE ()
ftprint Tab
b1 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> Dep ()
forall {m :: * -> *}. Monad m => E -> DepT m ()
f (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b1
  where
    f :: E -> DepT m ()
f E
a1 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"ftprint" [(Rate
Xr,[Rate
Ir,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Ir])] [E
a1]

-- | 

--
-- > iNumberOfFile  ftsamplebank  SDirectory, iFirstTableNumber, iSkipTime, iFormat, iChannel,
-- > kNumberOfFile  ftsamplebank  SDirectory, kFirstTableNumber, kTrigger, kSkipTime, kFormat, kChannel,
--
-- csound doc: <https://csound.com/docs/manual/ftsamplebank.html>
ftsamplebank ::  Str -> D -> D -> D -> D -> Sig
ftsamplebank :: Str -> D -> D -> D -> D -> Sig
ftsamplebank Str
b1 D
b2 D
b3 D
b4 D
b5 =
  GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b3 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b4 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b5
  where
    f :: E -> E -> E -> E -> E -> E
f E
a1 E
a2 E
a3 E
a4 E
a5 = Name -> Spec1 -> [E] -> E
opcs Name
"ftsamplebank" [(Rate
Ir,[Rate
Sr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir]),(Rate
Kr,[Rate
Sr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr])] [E
a1
                                                                                            ,E
a2
                                                                                            ,E
a3
                                                                                            ,E
a4
                                                                                            ,E
a5]

-- | 

--
-- >  ftsave  "filename", iflag, ifn1 [, ifn2] [...]
--
-- csound doc: <https://csound.com/docs/manual/ftsave.html>
ftsave ::  Str -> D -> Tab -> SE ()
ftsave :: Str -> D -> Tab -> SE ()
ftsave Str
b1 D
b2 Tab
b3 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> E -> DepT m ()
f (E -> E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Str -> GE E) -> Str -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Str -> GE E
unStr) Str
b1 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b2 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b3
  where
    f :: E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"ftsave" [(Rate
Xr,[Rate
Sr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] [E
a1,E
a2,E
a3]

-- | 

--
-- >  ftsavek  "filename", ktrig, iflag, ifn1 [, ifn2] [...]
--
-- csound doc: <https://csound.com/docs/manual/ftsavek.html>
ftsavek ::  Str -> Sig -> D -> Tab -> SE ()
ftsavek :: Str -> Sig -> D -> Tab -> SE ()
ftsavek Str
b1 Sig
b2 D
b3 Tab
b4 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> E -> E -> DepT m ()
f (E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Str -> GE E) -> Str -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Str -> GE E
unStr) Str
b1 DepT GE (E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b2 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b3 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b4
  where
    f :: E -> E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 E
a4 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"ftsavek" [(Rate
Xr,[Rate
Sr,Rate
Kr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] [E
a1,E
a2,E
a3,E
a4]

-- | 

--
-- >  ftset  ktablenum, kvalue [, kstart=0, kend=0, kstep=1 ]
-- >  ftset  itablenum, ivalue [, istart=0, iend=0, istep=1 ]
--
-- csound doc: <https://csound.com/docs/manual/ftset.html>
ftset ::  Sig -> Sig -> SE ()
ftset :: Sig -> Sig -> SE ()
ftset Sig
b1 Sig
b2 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> DepT m ()
f (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b1 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b2
  where
    f :: E -> E -> DepT m ()
f E
a1 E
a2 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"ftset" [(Rate
Xr,[Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr])] [E
a1,E
a2]

-- | 

--
-- >  ftslice  ifnsource, ifndest [, kstart, kend, kstep ]
-- >  ftslice  kfnsource, kfndest [, kstart, kend, kstep ]
--
-- csound doc: <https://csound.com/docs/manual/ftslice.html>
ftslice ::  Tab -> Tab -> SE ()
ftslice :: Tab -> Tab -> SE ()
ftslice Tab
b1 Tab
b2 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> DepT m ()
f (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b1 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b2
  where
    f :: E -> E -> DepT m ()
f E
a1 E
a2 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"ftslice" [(Rate
Xr,[Rate
Ir,Rate
Ir,Rate
Kr,Rate
Kr,Rate
Kr])] [E
a1,E
a2]

-- | 

--
-- >  ftslicei  ifnsource, ifndest [, istart, iend, istep ]
--
-- csound doc: <https://csound.com/docs/manual/ftslicei.html>
ftslicei ::  Tab -> Tab -> SE ()
ftslicei :: Tab -> Tab -> SE ()
ftslicei Tab
b1 Tab
b2 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> DepT m ()
f (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b1 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b2
  where
    f :: E -> E -> DepT m ()
f E
a1 E
a2 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"ftslicei" [(Rate
Xr,[Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1,E
a2]

-- | 

--
-- >  ptablew  asig, andx, ifn [, ixmode] [, ixoff] [, iwgmode]
-- >  ptablew  isig, indx, ifn [, ixmode] [, ixoff] [, iwgmode]
-- >  ptablew  ksig, kndx, ifn [, ixmode] [, ixoff] [, iwgmode]
--
-- csound doc: <https://csound.com/docs/manual/ptablew.html>
ptablew ::  Sig -> Sig -> Tab -> SE ()
ptablew :: Sig -> Sig -> Tab -> SE ()
ptablew Sig
b1 Sig
b2 Tab
b3 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> E -> DepT m ()
f (E -> E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b1 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b2 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b3
  where
    f :: E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"ptablew" [(Rate
Xr,[Rate
Ar,Rate
Ar,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1,E
a2,E
a3]

-- | 

--
-- >  tablecopy  kdft, ksft
--
-- csound doc: <https://csound.com/docs/manual/tablecopy.html>
tablecopy ::  Sig -> Sig -> SE ()
tablecopy :: Sig -> Sig -> SE ()
tablecopy Sig
b1 Sig
b2 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> DepT m ()
f (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b1 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b2
  where
    f :: E -> E -> DepT m ()
f E
a1 E
a2 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"tablecopy" [(Rate
Xr,[Rate
Kr,Rate
Kr])] [E
a1,E
a2]

-- | 

--
-- > knumpassed  tablefilter  kouttable, kintatble, kmode, kparam
--
-- csound doc: <https://csound.com/docs/manual/tablefilter.html>
tablefilter ::  Sig -> Sig -> Sig -> Sig -> Sig
tablefilter :: Sig -> Sig -> Sig -> Sig -> Sig
tablefilter Sig
b1 Sig
b2 Sig
b3 Sig
b4 =
  GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E
f (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4
  where
    f :: E -> E -> E -> E -> E
f E
a1 E
a2 E
a3 E
a4 = Name -> Spec1 -> [E] -> E
opcs Name
"tablefilter" [(Rate
Kr,[Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr])] [E
a1,E
a2,E
a3,E
a4]

-- | 

--
-- > inumpassed  tablefilteri  iouttable, iintatble, imode, iparam
--
-- csound doc: <https://csound.com/docs/manual/tablefilteri.html>
tablefilteri ::  D -> D -> D -> D -> D
tablefilteri :: D -> D -> D -> D -> D
tablefilteri D
b1 D
b2 D
b3 D
b4 =
  GE E -> D
D (GE E -> D) -> GE E -> D
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E
f (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> D -> GE E
unD D
b1 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b3 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b4
  where
    f :: E -> E -> E -> E -> E
f E
a1 E
a2 E
a3 E
a4 = Name -> Spec1 -> [E] -> E
opcs Name
"tablefilteri" [(Rate
Ir,[Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1,E
a2,E
a3,E
a4]

-- | 

--
-- >  tablegpw  kfn
--
-- csound doc: <https://csound.com/docs/manual/tablegpw.html>
tablegpw ::  Tab -> SE ()
tablegpw :: Tab -> SE ()
tablegpw Tab
b1 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> Dep ()
forall {m :: * -> *}. Monad m => E -> DepT m ()
f (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b1
  where
    f :: E -> DepT m ()
f E
a1 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"tablegpw" [(Rate
Xr,[Rate
Kr])] [E
a1]

-- | 

--
-- >  tableicopy  idft, isft
--
-- csound doc: <https://csound.com/docs/manual/tableicopy.html>
tableicopy ::  D -> D -> SE ()
tableicopy :: D -> D -> SE ()
tableicopy D
b1 D
b2 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> DepT m ()
f (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b1 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b2
  where
    f :: E -> E -> DepT m ()
f E
a1 E
a2 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"tableicopy" [(Rate
Xr,[Rate
Ir,Rate
Ir])] [E
a1,E
a2]

-- | 

--
-- >  tableigpw  ifn
--
-- csound doc: <https://csound.com/docs/manual/tableigpw.html>
tableigpw ::  Tab -> SE ()
tableigpw :: Tab -> SE ()
tableigpw Tab
b1 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> Dep ()
forall {m :: * -> *}. Monad m => E -> DepT m ()
f (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b1
  where
    f :: E -> DepT m ()
f E
a1 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"tableigpw" [(Rate
Xr,[Rate
Ir])] [E
a1]

-- | 

--
-- >  tableimix  idft, idoff, ilen, is1ft, is1off, is1g, is2ft, is2off, is2g
--
-- csound doc: <https://csound.com/docs/manual/tableimix.html>
tableimix ::  D -> D -> D -> D -> D -> D -> D -> D -> D -> SE ()
tableimix :: D -> D -> D -> D -> D -> D -> D -> D -> D -> SE ()
tableimix D
b1 D
b2 D
b3 D
b4 D
b5 D
b6 D
b7 D
b8 D
b9 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> E -> E -> E -> E -> Dep ()
forall {m :: * -> *}.
Monad m =>
E -> E -> E -> E -> E -> E -> E -> E -> E -> DepT m ()
f (E -> E -> E -> E -> E -> E -> E -> E -> E -> Dep ())
-> DepT GE E
-> DepT GE (E -> E -> E -> E -> E -> E -> E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b1 DepT GE (E -> E -> E -> E -> E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> E -> E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b2 DepT GE (E -> E -> E -> E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b3 DepT GE (E -> E -> E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b4 DepT GE (E -> E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b5 DepT GE (E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b6 DepT GE (E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b7 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b8 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (D -> GE E) -> D -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. D -> GE E
unD) D
b9
  where
    f :: E -> E -> E -> E -> E -> E -> E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 E
a7 E
a8 E
a9 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"tableimix" [(Rate
Xr,[Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1
                                                                                            ,E
a2
                                                                                            ,E
a3
                                                                                            ,E
a4
                                                                                            ,E
a5
                                                                                            ,E
a6
                                                                                            ,E
a7
                                                                                            ,E
a8
                                                                                            ,E
a9]

-- | 

--
-- >  tablemix  kdft, kdoff, klen, ks1ft, ks1off, ks1g, ks2ft, ks2off, ks2g
--
-- csound doc: <https://csound.com/docs/manual/tablemix.html>
tablemix ::  Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE ()
tablemix :: Sig
-> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE ()
tablemix Sig
b1 Sig
b2 Sig
b3 Sig
b4 Sig
b5 Sig
b6 Sig
b7 Sig
b8 Sig
b9 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> E -> E -> E -> E -> Dep ()
forall {m :: * -> *}.
Monad m =>
E -> E -> E -> E -> E -> E -> E -> E -> E -> DepT m ()
f (E -> E -> E -> E -> E -> E -> E -> E -> E -> Dep ())
-> DepT GE E
-> DepT GE (E -> E -> E -> E -> E -> E -> E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b1 DepT GE (E -> E -> E -> E -> E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> E -> E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b2 DepT GE (E -> E -> E -> E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b3 DepT GE (E -> E -> E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b4 DepT GE (E -> E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b5 DepT GE (E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b6 DepT GE (E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b7 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b8 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b9
  where
    f :: E -> E -> E -> E -> E -> E -> E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 E
a7 E
a8 E
a9 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"tablemix" [(Rate
Xr,[Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr])] [E
a1
                                                                                           ,E
a2
                                                                                           ,E
a3
                                                                                           ,E
a4
                                                                                           ,E
a5
                                                                                           ,E
a6
                                                                                           ,E
a7
                                                                                           ,E
a8
                                                                                           ,E
a9]

-- | 

--
-- > ares  tablera  kfn, kstart, koff
--
-- csound doc: <https://csound.com/docs/manual/tablera.html>
tablera ::  Tab -> Sig -> Sig -> Sig
tablera :: Tab -> Sig -> Sig -> Sig
tablera Tab
b1 Sig
b2 Sig
b3 =
  GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E
f (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Tab -> GE E
unTab Tab
b1 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3
  where
    f :: E -> E -> E -> E
f E
a1 E
a2 E
a3 = Name -> Spec1 -> [E] -> E
opcs Name
"tablera" [(Rate
Ar,[Rate
Kr,Rate
Kr,Rate
Kr])] [E
a1,E
a2,E
a3]

-- | 

--
-- >  tablew  asig, andx, ifn [, ixmode] [, ixoff] [, iwgmode]
-- >  tablew  isig, indx, ifn [, ixmode] [, ixoff] [, iwgmode]
-- >  tablew  ksig, kndx, ifn [, ixmode] [, ixoff] [, iwgmode]
--
-- csound doc: <https://csound.com/docs/manual/tablew.html>
tablew ::  Sig -> Sig -> Tab -> SE ()
tablew :: Sig -> Sig -> Tab -> SE ()
tablew Sig
b1 Sig
b2 Tab
b3 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> E -> DepT m ()
f (E -> E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b1 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b2 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b3
  where
    f :: E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"tablew" [(Rate
Xr,[Rate
Ar,Rate
Ar,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1,E
a2,E
a3]

-- | 

--
-- > kstart  tablewa  kfn, asig, koff
--
-- csound doc: <https://csound.com/docs/manual/tablewa.html>
tablewa ::  Tab -> Sig -> Sig -> Sig
tablewa :: Tab -> Sig -> Sig -> Sig
tablewa Tab
b1 Sig
b2 Sig
b3 =
  GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E
f (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Tab -> GE E
unTab Tab
b1 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3
  where
    f :: E -> E -> E -> E
f E
a1 E
a2 E
a3 = Name -> Spec1 -> [E] -> E
opcs Name
"tablewa" [(Rate
Kr,[Rate
Kr,Rate
Ar,Rate
Kr])] [E
a1,E
a2,E
a3]

-- | 

--
-- >  tablewkt  asig, andx, kfn [, ixmode] [, ixoff] [, iwgmode]
-- >  tablewkt  ksig, kndx, kfn [, ixmode] [, ixoff] [, iwgmode]
--
-- csound doc: <https://csound.com/docs/manual/tablewkt.html>
tablewkt ::  Sig -> Sig -> Tab -> SE ()
tablewkt :: Sig -> Sig -> Tab -> SE ()
tablewkt Sig
b1 Sig
b2 Tab
b3 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> E -> DepT m ()
f (E -> E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b1 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b2 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b3
  where
    f :: E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"tablewkt" [(Rate
Xr,[Rate
Ar,Rate
Ar,Rate
Kr,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1,E
a2,E
a3]

-- | 

--
-- > kout  tabmorph  kindex, kweightpoint, ktabnum1, ktabnum2, \
-- >           ifn1, ifn2 [, ifn3, ifn4, ...,ifnN]
--
-- csound doc: <https://csound.com/docs/manual/tabmorph.html>
tabmorph ::  Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Sig
tabmorph :: Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Sig
tabmorph Sig
b1 Sig
b2 Sig
b3 Sig
b4 Tab
b5 Tab
b6 =
  GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b5 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b6
  where
    f :: E -> E -> E -> E -> E -> E -> E
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 = Name -> Spec1 -> [E] -> E
opcs Name
"tabmorph" [(Rate
Kr,[Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] [E
a1,E
a2,E
a3,E
a4,E
a5,E
a6]

-- | 

--
-- > aout  tabmorpha  aindex, aweightpoint, atabnum1, atabnum2, \
-- >           ifn1, ifn2 [, ifn3, ifn4, ... ifnN]
--
-- csound doc: <https://csound.com/docs/manual/tabmorpha.html>
tabmorpha ::  Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Sig
tabmorpha :: Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Sig
tabmorpha Sig
b1 Sig
b2 Sig
b3 Sig
b4 Tab
b5 Tab
b6 =
  GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b5 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b6
  where
    f :: E -> E -> E -> E -> E -> E -> E
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 = Name -> Spec1 -> [E] -> E
opcs Name
"tabmorpha" [(Rate
Ar,[Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] [E
a1,E
a2,E
a3,E
a4,E
a5,E
a6]

-- | 

--
-- > aout  tabmorphak  aindex, kweightpoint, ktabnum1, ktabnum2, \
-- >           ifn1, ifn2 [, ifn3, ifn4, ... ifnN]
--
-- csound doc: <https://csound.com/docs/manual/tabmorphak.html>
tabmorphak ::  Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Sig
tabmorphak :: Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Sig
tabmorphak Sig
b1 Sig
b2 Sig
b3 Sig
b4 Tab
b5 Tab
b6 =
  GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b5 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b6
  where
    f :: E -> E -> E -> E -> E -> E -> E
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 = Name -> Spec1 -> [E] -> E
opcs Name
"tabmorphak" [(Rate
Ar,[Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] [E
a1,E
a2,E
a3,E
a4,E
a5,E
a6]

-- | 

--
-- > kout  tabmorphi  kindex, kweightpoint, ktabnum1, ktabnum2, \
-- >           ifn1, ifn2 [, ifn3, ifn4, ..., ifnN]
--
-- csound doc: <https://csound.com/docs/manual/tabmorphi.html>
tabmorphi ::  Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Sig
tabmorphi :: Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Sig
tabmorphi Sig
b1 Sig
b2 Sig
b3 Sig
b4 Tab
b5 Tab
b6 =
  GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b5 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b6
  where
    f :: E -> E -> E -> E -> E -> E -> E
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 = Name -> Spec1 -> [E] -> E
opcs Name
"tabmorphi" [(Rate
Kr,[Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] [E
a1,E
a2,E
a3,E
a4,E
a5,E
a6]

-- | 

--
-- >  tabplay   ktrig, knumtics, kfn, kout1 [,kout2,..., koutN]
--
-- csound doc: <https://csound.com/docs/manual/tabplay.html>
tabplay ::  Sig -> Sig -> Tab -> Sig -> SE ()
tabplay :: Sig -> Sig -> Tab -> Sig -> SE ()
tabplay Sig
b1 Sig
b2 Tab
b3 Sig
b4 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> E -> E -> DepT m ()
f (E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b1 DepT GE (E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b2 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b3 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b4
  where
    f :: E -> E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 E
a4 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"tabplay" [(Rate
Xr,(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Kr))] [E
a1,E
a2,E
a3,E
a4]

-- | 

--
-- >  tabrec    ktrig_start, ktrig_stop, knumtics, kfn, kin1 [,kin2,...,kinN]
--
-- csound doc: <https://csound.com/docs/manual/tabrec.html>
tabrec ::  Sig -> Sig -> Sig -> Tab -> Sig -> SE ()
tabrec :: Sig -> Sig -> Sig -> Tab -> Sig -> SE ()
tabrec Sig
b1 Sig
b2 Sig
b3 Tab
b4 Sig
b5 =
  Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ DepT GE (Dep ()) -> Dep ()
forall (m :: * -> *) a. Monad m => m (m a) -> m a
join (DepT GE (Dep ()) -> Dep ()) -> DepT GE (Dep ()) -> Dep ()
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> Dep ()
forall {m :: * -> *}. Monad m => E -> E -> E -> E -> E -> DepT m ()
f (E -> E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> E -> Dep ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b1 DepT GE (E -> E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b2 DepT GE (E -> E -> E -> Dep ())
-> DepT GE E -> DepT GE (E -> E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b3 DepT GE (E -> E -> Dep ()) -> DepT GE E -> DepT GE (E -> Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Tab -> GE E) -> Tab -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tab -> GE E
unTab) Tab
b4 DepT GE (E -> Dep ()) -> DepT GE E -> DepT GE (Dep ())
forall a b. DepT GE (a -> b) -> DepT GE a -> DepT GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (GE E -> DepT GE E
forall (m :: * -> *) a. Monad m => m a -> DepT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> (Sig -> GE E) -> Sig -> DepT GE E
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Sig -> GE E
unSig) Sig
b5
  where
    f :: E -> E -> E -> E -> E -> DepT m ()
f E
a1 E
a2 E
a3 E
a4 E
a5 = Name -> Spec1 -> [E] -> DepT m ()
forall (m :: * -> *). Monad m => Name -> Spec1 -> [E] -> DepT m ()
opcsDep_ Name
"tabrec" [(Rate
Xr,(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Kr))] [E
a1,E
a2,E
a3,E
a4,E
a5]