module Csound.Typed.Opcode.SignalIO (
    
    
    -- * File I/O.
    dumpk, dumpk2, dumpk3, dumpk4, ficlose, fin, fini, fink, fiopen, fout, fouti, foutir, foutk, fprintks, fprints, hdf5read, hdf5write, readf, readfi, readk, readk2, readk3, readk4,
    
    -- * Signal Input.
    diskin, diskin2, in', in32, inch, inh, ino, inq, inrg, ins, invalue, inx, inz, mp3in, soundin,
    
    -- * Signal Output.
    mdelay, monitor, out, out32, outc, outch, outh, outo, outq, outq1, outq2, outq3, outq4, outrg, outs, outs1, outs2, outvalue, outx, outz, soundout, soundouts,
    
    -- * Software Bus.
    chani, chano, chn_k, chn_a, chn_S, chnclear, chnexport, chnget, chngetks, chnmix, chnparams, chnset, chnsetks, setksmps, xin, xout,
    
    -- * Printing and Display.
    dispfft, display, flashtxt, print', printf_i, printf, printk, printk2, printks, printks2, prints,
    
    -- * Soundfile Queries.
    filebit, filelen, filenchnls, filepeak, filesr, filevalid, mp3len) where

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

-- File I/O.

-- | 
-- Periodically writes an orchestra control-signal value to an external file.
--
-- Periodically writes an orchestra control-signal value to a named external file in a specific format.
--
-- >  dumpk   ksig, ifilname, iformat, iprd
--
-- csound doc: <http://csound.com/docs/manual/dumpk.html>
dumpk ::  Sig -> Str -> D -> D -> SE ()
dumpk :: Sig -> Str -> D -> D -> SE ()
dumpk Sig
b1 Str
b2 D
b3 D
b4 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b2 GE (E -> E -> E) -> GE E -> GE (E -> E)
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 (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
"dumpk" [(Rate
Xr,[Rate
Kr,Rate
Sr,Rate
Ir,Rate
Ir])] [E
a1,E
a2,E
a3,E
a4]

-- | 
-- Periodically writes two orchestra control-signal values to an external file.
--
-- Periodically writes two orchestra control-signal values to a named external file in a specific format.
--
-- >  dumpk2  ksig1, ksig2, ifilname, iformat, iprd
--
-- csound doc: <http://csound.com/docs/manual/dumpk2.html>
dumpk2 ::  Sig -> Sig -> Str -> D -> D -> SE ()
dumpk2 :: Sig -> Sig -> Str -> D -> D -> SE ()
dumpk2 Sig
b1 Sig
b2 Str
b3 D
b4 D
b5 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b3 GE (E -> E -> E) -> GE E -> GE (E -> E)
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 (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
"dumpk2" [(Rate
Xr,[Rate
Kr,Rate
Kr,Rate
Sr,Rate
Ir,Rate
Ir])] [E
a1,E
a2,E
a3,E
a4,E
a5]

-- | 
-- Periodically writes three orchestra control-signal values to an external file.
--
-- Periodically writes three orchestra control-signal values to a named external file in a specific format.
--
-- >  dumpk3  ksig1, ksig2, ksig3, ifilname, iformat, iprd
--
-- csound doc: <http://csound.com/docs/manual/dumpk3.html>
dumpk3 ::  Sig -> Sig -> Sig -> Str -> D -> D -> SE ()
dumpk3 :: Sig -> Sig -> Sig -> Str -> D -> D -> SE ()
dumpk3 Sig
b1 Sig
b2 Sig
b3 Str
b4 D
b5 D
b6 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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 (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 (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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b4 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b5 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
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
"dumpk3" [(Rate
Xr,[Rate
Kr,Rate
Kr,Rate
Kr,Rate
Sr,Rate
Ir,Rate
Ir])] [E
a1,E
a2,E
a3,E
a4,E
a5,E
a6]

-- | 
-- Periodically writes four orchestra control-signal values to an external file.
--
-- Periodically writes four orchestra control-signal values to a named external file in a specific format.
--
-- >  dumpk4  ksig1, ksig2, ksig3, ksig4, ifilname, iformat, iprd
--
-- csound doc: <http://csound.com/docs/manual/dumpk4.html>
dumpk4 ::  Sig -> Sig -> Sig -> Sig -> Str -> D -> D -> SE ()
dumpk4 :: Sig -> Sig -> Sig -> Sig -> Str -> D -> D -> SE ()
dumpk4 Sig
b1 Sig
b2 Sig
b3 Sig
b4 Str
b5 D
b6 D
b7 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> 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 -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E)
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 -> E)
-> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b5 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b6 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b7
    where f :: E -> E -> E -> E -> E -> E -> E -> E
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 E
a7 = Name -> Spec1 -> [E] -> E
opcs Name
"dumpk4" [(Rate
Xr,[Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Sr,Rate
Ir,Rate
Ir])] [E
a1
                                                                               ,E
a2
                                                                               ,E
a3
                                                                               ,E
a4
                                                                               ,E
a5
                                                                               ,E
a6
                                                                               ,E
a7]

-- | 
-- Closes a previously opened file.
--
-- ficlose can be used to close a file which was opened with fiopen.
--
-- >  ficlose  ihandle
-- >  ficlose  Sfilename
--
-- csound doc: <http://csound.com/docs/manual/ficlose.html>
ficlose ::  D -> SE ()
ficlose :: D -> SE ()
ficlose D
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> D -> GE E
unD D
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"ficlose" [(Rate
Xr,[Rate
Ir])] [E
a1]

-- | 
-- Read signals from a file at a-rate.
--
-- >  fin  ifilename, iskipframes, iformat, ain1 [, ain2] [, ain3] [,...]
-- >  fin  ifilename, iskipframes, iformat, arr[]
--
-- csound doc: <http://csound.com/docs/manual/fin.html>
fin ::  Str -> D -> D -> [Sig] -> SE ()
fin :: Str -> D -> D -> [Sig] -> SE ()
fin Str
b1 D
b2 D
b3 [Sig]
b4 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E -> [E] -> E) -> GE E -> GE (E -> [E] -> E)
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 (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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"fin" [(Rate
Xr,[Rate
Sr,Rate
Ir,Rate
Ir] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar))] ([E
a1,E
a2,E
a3] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a4)

-- | 
-- Read signals from a file at i-rate.
--
-- >  fini  ifilename, iskipframes, iformat, in1 [, in2] [, in3] [, ...]
--
-- csound doc: <http://csound.com/docs/manual/fini.html>
fini ::  Str -> D -> D -> [D] -> SE ()
fini :: Str -> D -> D -> [D] -> SE ()
fini Str
b1 D
b2 D
b3 [D]
b4 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E -> [E] -> E) -> GE E -> GE (E -> [E] -> E)
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 (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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (D -> GE E) -> [D] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"fini" [(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] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a4)

-- | 
-- Read signals from a file at k-rate.
--
-- >  fink  ifilename, iskipframes, iformat, kin1 [, kin2] [, kin3] [,...]
--
-- csound doc: <http://csound.com/docs/manual/fink.html>
fink ::  Str -> D -> D -> [Sig] -> SE ()
fink :: Str -> D -> D -> [Sig] -> SE ()
fink Str
b1 D
b2 D
b3 [Sig]
b4 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E -> [E] -> E) -> GE E -> GE (E -> [E] -> E)
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 (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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"fink" [(Rate
Xr,[Rate
Sr,Rate
Ir,Rate
Ir] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Kr))] ([E
a1,E
a2,E
a3] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a4)

-- | 
-- Opens a file in a specific mode.
--
-- fiopen can be used to open a file in one of the specified modes.
--
-- > ihandle  fiopen  ifilename, imode
--
-- csound doc: <http://csound.com/docs/manual/fiopen.html>
fiopen ::  Str -> D -> SE D
fiopen :: Str -> D -> SE D
fiopen Str
b1 D
b2 = (E -> D) -> SE E -> SE D
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 (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
$ (E -> DepT GE E
forall (m :: * -> *). Monad m => E -> DepT m E
depT (E -> DepT GE E) -> DepT GE E -> DepT GE E
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> DepT GE E) -> DepT GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"fiopen" [(Rate
Ir,[Rate
Sr,Rate
Ir])] [E
a1,E
a2]

-- | 
-- Outputs a-rate signals to an arbitrary number of channels.
--
-- fout outputs N a-rate signals to a specified file of N channels.
--
-- >  fout  ifilename, iformat, aout1 [, aout2, aout3,...,aoutN]
-- >  fout  ifilename, iformat, array[]
--
-- csound doc: <http://csound.com/docs/manual/fout.html>
fout ::  Str -> D -> [Sig] -> SE ()
fout :: Str -> D -> [Sig] -> SE ()
fout Str
b1 D
b2 [Sig]
b3 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> [E] -> E) -> GE E -> GE ([E] -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"fout" [(Rate
Xr,[Rate
Sr,Rate
Ir] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar))] ([E
a1,E
a2] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a3)

-- | 
-- Outputs i-rate signals of an arbitrary number of channels to a specified file.
--
-- fouti output N i-rate signals to a specified file of N channels.
--
-- >  fouti  ihandle, iformat, iflag, iout1 [, iout2, iout3,....,ioutN]
--
-- csound doc: <http://csound.com/docs/manual/fouti.html>
fouti ::  Str -> D -> D -> [D] -> SE ()
fouti :: Str -> D -> D -> [D] -> SE ()
fouti Str
b1 D
b2 D
b3 [D]
b4 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E -> [E] -> E) -> GE E -> GE (E -> [E] -> E)
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 (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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (D -> GE E) -> [D] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"fouti" [(Rate
Xr,(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] ([E
a1,E
a2,E
a3] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a4)

-- | 
-- Outputs i-rate signals from an arbitrary number of channels to a specified file.
--
-- foutir output N i-rate signals to a specified file of N channels.
--
-- >  foutir  ihandle, iformat, iflag, iout1 [, iout2, iout3,....,ioutN]
--
-- csound doc: <http://csound.com/docs/manual/foutir.html>
foutir ::  Str -> D -> D -> [D] -> SE ()
foutir :: Str -> D -> D -> [D] -> SE ()
foutir Str
b1 D
b2 D
b3 [D]
b4 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E -> [E] -> E) -> GE E -> GE (E -> [E] -> E)
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 (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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (D -> GE E) -> [D] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"foutir" [(Rate
Xr,(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] ([E
a1,E
a2,E
a3] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a4)

-- | 
-- Outputs k-rate signals of an arbitrary number of channels to a specified file, in raw (headerless) format.
--
-- foutk outputs N k-rate signals to a specified file of N channels.
--
-- >  foutk  ifilename, iformat, kout1 [, kout2, kout3,....,koutN]
--
-- csound doc: <http://csound.com/docs/manual/foutk.html>
foutk ::  Str -> D -> [Sig] -> SE ()
foutk :: Str -> D -> [Sig] -> SE ()
foutk Str
b1 D
b2 [Sig]
b3 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> [E] -> E) -> GE E -> GE ([E] -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"foutk" [(Rate
Xr,[Rate
Sr,Rate
Ir] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Kr))] ([E
a1,E
a2] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a3)

-- | 
-- Similar to printks but prints to a file.
--
-- >  fprintks  "filename", "string", [, kval1] [, kval2] [...]
--
-- csound doc: <http://csound.com/docs/manual/fprintks.html>
fprintks ::  Str -> Str -> [Sig] -> SE ()
fprintks :: Str -> Str -> [Sig] -> SE ()
fprintks Str
b1 Str
b2 [Sig]
b3 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> [E] -> E) -> GE E -> GE ([E] -> E)
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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"fprintks" [(Rate
Xr,[Rate
Sr,Rate
Sr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Kr))] ([E
a1,E
a2] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a3)

-- | 
-- Similar to prints but prints to a file.
--
-- >  fprints  "filename", "string" [, ival1] [, ival2] [...]
--
-- csound doc: <http://csound.com/docs/manual/fprints.html>
fprints ::  Str -> Str -> [D] -> SE ()
fprints :: Str -> Str -> [D] -> SE ()
fprints Str
b1 Str
b2 [D]
b3 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> [E] -> E) -> GE E -> GE ([E] -> E)
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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (D -> GE E) -> [D] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"fprints" [(Rate
Xr,[Rate
Sr,Rate
Sr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] ([E
a1,E
a2] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a3)

-- | 
-- Read signals and arrays from an hdf5 file.
--
-- hdf5read reads N signals and arrays from a specified hdf5 file.
--
-- > xout1[, xout2, xout3, ..., xoutN]  hdf5read  ifilename, ivariablename1[, ivariablename2, ivariablename3, ..., ivariablenameN]
--
-- csound doc: <http://csound.com/docs/manual/hdf5read.html>
hdf5read :: Tuple a => Str -> D -> a
hdf5read :: Str -> D -> a
hdf5read Str
b1 D
b2 = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ E -> E -> MultiOut [E]
f (E -> E -> MultiOut [E]) -> GE E -> GE (E -> MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1 GE (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2
    where f :: E -> E -> MultiOut [E]
f E
a1 E
a2 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"hdf5read" ((Rate -> [Rate]
forall a. a -> [a]
repeat 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]

-- | 
-- Write signals and arrays to an hdf5 file.
--
-- hdf5write writes N signals and arrays to a specified hdf5 file.
--
-- >  hdf5write  ifilename, xout1[, xout2, xout3, ..., xoutN]
--
-- csound doc: <http://csound.com/docs/manual/hdf5write.html>
hdf5write ::  Str -> Sig -> SE ()
hdf5write :: Str -> Sig -> SE ()
hdf5write Str
b1 Sig
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E) -> GE E -> GE E
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
"hdf5write" [(Rate
Xr,[Rate
Sr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Xr))] [E
a1,E
a2]

-- | 
-- Read a line of text from an external file.
--
-- Read a line of text from an external file once each k-cycle.
--
-- > Sres, kline  readf  ifilname
--
-- csound doc: <http://csound.com/docs/manual/readf.html>
readf ::  Str -> (Str,Sig)
readf :: Str -> (Str, Sig)
readf Str
b1 = GE (MultiOut [E]) -> (Str, Sig)
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> (Str, Sig))
-> GE (MultiOut [E]) -> (Str, Sig)
forall a b. (a -> b) -> a -> b
$ E -> MultiOut [E]
f (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> MultiOut [E]
f E
a1 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"readf" ([Rate
Sr,Rate
Kr],[Rate
Sr]) [E
a1]

-- | 
-- Read a line of text from an external file.
--
-- Read a line of text from an external file once on initialisation.
--
-- > Sres, iline  readfi  ifilname
--
-- csound doc: <http://csound.com/docs/manual/readfi.html>
readfi ::  Str -> (Str,D)
readfi :: Str -> (Str, D)
readfi Str
b1 = GE (MultiOut [E]) -> (Str, D)
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> (Str, D)) -> GE (MultiOut [E]) -> (Str, D)
forall a b. (a -> b) -> a -> b
$ E -> MultiOut [E]
f (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> MultiOut [E]
f E
a1 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"readfi" ([Rate
Sr,Rate
Ir],[Rate
Sr]) [E
a1]

-- | 
-- Periodically reads an orchestra control-signal value from an external file.
--
-- Periodically reads an orchestra control-signal value from a named external file in a specific format.
--
-- > kres  readk  ifilname, iformat, iprd
--
-- csound doc: <http://csound.com/docs/manual/readk.html>
readk ::  Str -> D -> D -> Sig
readk :: Str -> D -> D -> Sig
readk Str
b1 D
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE (E -> E) -> GE E -> GE E
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
"readk" [(Rate
Kr,[Rate
Sr,Rate
Ir,Rate
Ir])] [E
a1,E
a2,E
a3]

-- | 
-- Periodically reads two orchestra control-signal values from an external file.
--
-- > kr1, kr2  readk2  ifilname, iformat, iprd
--
-- csound doc: <http://csound.com/docs/manual/readk2.html>
readk2 ::  Str -> D -> D -> (Sig,Sig)
readk2 :: Str -> D -> D -> (Sig, Sig)
readk2 Str
b1 D
b2 D
b3 = GE (MultiOut [E]) -> (Sig, Sig)
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> (Sig, Sig))
-> GE (MultiOut [E]) -> (Sig, Sig)
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> MultiOut [E]
f (E -> E -> E -> MultiOut [E])
-> GE E -> GE (E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1 GE (E -> E -> MultiOut [E]) -> GE E -> GE (E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b3
    where f :: E -> E -> E -> MultiOut [E]
f E
a1 E
a2 E
a3 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"readk2" ([Rate
Kr,Rate
Kr],[Rate
Sr,Rate
Ir,Rate
Ir]) [E
a1,E
a2,E
a3]

-- | 
-- Periodically reads three orchestra control-signal values from an external file.
--
-- > kr1, kr2, kr3  readk3  ifilname, iformat, iprd
--
-- csound doc: <http://csound.com/docs/manual/readk3.html>
readk3 ::  Str -> D -> D -> (Sig,Sig,Sig)
readk3 :: Str -> D -> D -> (Sig, Sig, Sig)
readk3 Str
b1 D
b2 D
b3 = GE (MultiOut [E]) -> (Sig, Sig, Sig)
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> (Sig, Sig, Sig))
-> GE (MultiOut [E]) -> (Sig, Sig, Sig)
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> MultiOut [E]
f (E -> E -> E -> MultiOut [E])
-> GE E -> GE (E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1 GE (E -> E -> MultiOut [E]) -> GE E -> GE (E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b3
    where f :: E -> E -> E -> MultiOut [E]
f E
a1 E
a2 E
a3 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"readk3" ([Rate
Kr,Rate
Kr,Rate
Kr],[Rate
Sr,Rate
Ir,Rate
Ir]) [E
a1,E
a2,E
a3]

-- | 
-- Periodically reads four orchestra control-signal values from an external file.
--
-- > kr1, kr2, kr3, kr4  readk4  ifilname, iformat, iprd
--
-- csound doc: <http://csound.com/docs/manual/readk4.html>
readk4 ::  Str -> D -> D -> (Sig,Sig,Sig,Sig)
readk4 :: Str -> D -> D -> (Sig, Sig, Sig, Sig)
readk4 Str
b1 D
b2 D
b3 = GE (MultiOut [E]) -> (Sig, Sig, Sig, Sig)
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> (Sig, Sig, Sig, Sig))
-> GE (MultiOut [E]) -> (Sig, Sig, Sig, Sig)
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> MultiOut [E]
f (E -> E -> E -> MultiOut [E])
-> GE E -> GE (E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1 GE (E -> E -> MultiOut [E]) -> GE E -> GE (E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b3
    where f :: E -> E -> E -> MultiOut [E]
f E
a1 E
a2 E
a3 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"readk4" ([Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr],[Rate
Sr,Rate
Ir,Rate
Ir]) [E
a1,E
a2,E
a3]

-- Signal Input.

-- | 
-- Reads audio data from an external device or stream and can alter its pitch.
--
-- > ar1 [, ar2 [, ar3 [, ... arN]]]  diskin  ifilcod[, kpitch[, iskiptim \
-- >           [, iwraparound[, iformat[, iskipinit]]]]]
-- > ar1[]  diskin  ifilcod[, kpitch[, iskiptim \
-- >           [, iwraparound[, iformat[, iskipinit]]]]]
--
-- csound doc: <http://csound.com/docs/manual/diskin.html>
diskin :: Tuple a => Str -> a
diskin :: Str -> a
diskin Str
b1 = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ E -> MultiOut [E]
f (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> MultiOut [E]
f E
a1 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"diskin" ((Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar),[Rate
Sr,Rate
Kr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir]) [E
a1]

-- | 
-- Reads audio data from a file, and can alter its pitch using one of several
--       available interpolation types, as well as convert the sample rate to match
--       the orchestra sr setting.
--
-- Reads audio data from a file, and can alter its pitch using
-- 	one of several available interpolation types, as well as
-- 	convert the sample rate to match the orchestra sr
-- 	setting. diskin2 can also read
-- 	multichannel files with any number of channels in the range 1
-- 	to 24 in versions before 5.14, and 40 after.
--
-- > a1[, a2[, ... aN]]  diskin2  ifilcod[, kpitch[, iskiptim \
-- >           [, iwrap[, iformat[, iwsize[, ibufsize[, iskipinit]]]]]]]
-- > ar1[]  diskin2  ifilcod[, kpitch[, iskiptim \
-- >           [, iwrap[, iformat[, iwsize[, ibufsize[, iskipinit]]]]]]]
--
-- csound doc: <http://csound.com/docs/manual/diskin2.html>
diskin2 :: Tuple a => Str -> a
diskin2 :: Str -> a
diskin2 Str
b1 = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ E -> MultiOut [E]
f (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> MultiOut [E]
f E
a1 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"diskin2" ((Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar),[Rate
Sr,Rate
Kr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir]) [E
a1]

-- | 
-- Reads mono audio data from an external device or stream.
--
-- Reads audio data from an external device or stream.
--
-- > ar1  in 
-- > aarray  in 
--
-- csound doc: <http://csound.com/docs/manual/in.html>
in' ::   Sig
in' :: Sig
in'  = GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> GE E
forall (m :: * -> *) a. Monad m => a -> m a
return (E -> GE E) -> E -> GE E
forall a b. (a -> b) -> a -> b
$ E
f 
    where f :: E
f  = Name -> Spec1 -> [E] -> E
opcs Name
"in" [(Rate
Ar,[]),(Rate
Ar,[])] []

-- | 
-- Reads a 32-channel audio signal from an external device or stream.
--
-- > ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9, ar10, ar11, ar12, ar13, ar14, \
-- >           ar15, ar16, ar17, ar18, ar19, ar20, ar21, ar22, ar23, ar24, ar25, ar26, \
-- >           ar27, ar28, ar29, ar30, ar31, ar32  in32 
--
-- csound doc: <http://csound.com/docs/manual/in32.html>
in32 :: Tuple a =>  a
in32 :: a
in32  = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ MultiOut [E] -> GE (MultiOut [E])
forall (m :: * -> *) a. Monad m => a -> m a
return (MultiOut [E] -> GE (MultiOut [E]))
-> MultiOut [E] -> GE (MultiOut [E])
forall a b. (a -> b) -> a -> b
$ MultiOut [E]
f 
    where f :: MultiOut [E]
f  = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"in32" ([Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar
                             ,Rate
Ar]
                            ,[]) []

-- | 
-- Reads from numbered channels in an external audio signal or stream.
--
-- > ain1[, ...]  inch  kchan1[,...]
--
-- csound doc: <http://csound.com/docs/manual/inch.html>
inch :: Tuple a => [Sig] -> a
inch :: [Sig] -> a
inch [Sig]
b1 = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ [E] -> MultiOut [E]
f ([E] -> MultiOut [E]) -> GE [E] -> GE (MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM Sig -> GE E
unSig [Sig]
b1
    where f :: [E] -> MultiOut [E]
f [E]
a1 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"inch" ((Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar),(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Kr)) [E]
a1

-- | 
-- Reads six-channel audio data from an external device or stream.
--
-- > ar1, ar2, ar3, ar4, ar5, ar6  inh 
--
-- csound doc: <http://csound.com/docs/manual/inh.html>
inh :: Tuple a =>  a
inh :: a
inh  = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ MultiOut [E] -> GE (MultiOut [E])
forall (m :: * -> *) a. Monad m => a -> m a
return (MultiOut [E] -> GE (MultiOut [E]))
-> MultiOut [E] -> GE (MultiOut [E])
forall a b. (a -> b) -> a -> b
$ MultiOut [E]
f 
    where f :: MultiOut [E]
f  = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"inh" ([Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar],[]) []

-- | 
-- Reads eight-channel audio data from an external device or stream.
--
-- > ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8  ino 
--
-- csound doc: <http://csound.com/docs/manual/ino.html>
ino :: Tuple a =>  a
ino :: a
ino  = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ MultiOut [E] -> GE (MultiOut [E])
forall (m :: * -> *) a. Monad m => a -> m a
return (MultiOut [E] -> GE (MultiOut [E]))
-> MultiOut [E] -> GE (MultiOut [E])
forall a b. (a -> b) -> a -> b
$ MultiOut [E]
f 
    where f :: MultiOut [E]
f  = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"ino" ([Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar],[]) []

-- | 
-- Reads quad audio data from an external device or stream.
--
-- > ar1, ar2,  ar3, a4  inq 
--
-- csound doc: <http://csound.com/docs/manual/inq.html>
inq ::   (Sig,Sig,Sig,Sig)
inq :: (Sig, Sig, Sig, Sig)
inq  = GE (MultiOut [E]) -> (Sig, Sig, Sig, Sig)
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> (Sig, Sig, Sig, Sig))
-> GE (MultiOut [E]) -> (Sig, Sig, Sig, Sig)
forall a b. (a -> b) -> a -> b
$ MultiOut [E] -> GE (MultiOut [E])
forall (m :: * -> *) a. Monad m => a -> m a
return (MultiOut [E] -> GE (MultiOut [E]))
-> MultiOut [E] -> GE (MultiOut [E])
forall a b. (a -> b) -> a -> b
$ MultiOut [E]
f 
    where f :: MultiOut [E]
f  = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"inq" ([Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar],[]) []

-- | 
-- Allow input from a range of adjacent audio channels from the audio input device
--
-- inrg reads audio from a range of adjacent audio channels from the audio input device.
--
-- >  inrg  kstart, ain1 [,ain2, ain3, ..., ainN]
--
-- csound doc: <http://csound.com/docs/manual/inrg.html>
inrg ::  Sig -> [Sig] -> SE ()
inrg :: Sig -> [Sig] -> SE ()
inrg Sig
b1 [Sig]
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM Sig -> GE E
unSig [Sig]
b2
    where f :: E -> [E] -> E
f E
a1 [E]
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"inrg" [(Rate
Xr,[Rate
Kr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar))] ([E
a1] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a2)

-- | 
-- Reads stereo audio data from an external device or stream.
--
-- > ar1, ar2  ins 
--
-- csound doc: <http://csound.com/docs/manual/ins.html>
ins ::   (Sig,Sig)
ins :: (Sig, Sig)
ins  = GE (MultiOut [E]) -> (Sig, Sig)
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> (Sig, Sig))
-> GE (MultiOut [E]) -> (Sig, Sig)
forall a b. (a -> b) -> a -> b
$ MultiOut [E] -> GE (MultiOut [E])
forall (m :: * -> *) a. Monad m => a -> m a
return (MultiOut [E] -> GE (MultiOut [E]))
-> MultiOut [E] -> GE (MultiOut [E])
forall a b. (a -> b) -> a -> b
$ MultiOut [E]
f 
    where f :: MultiOut [E]
f  = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"ins" ([Rate
Ar,Rate
Ar],[]) []

-- | 
-- Reads a k-rate signal from a user-defined channel.
--
-- Reads a k-rate or i-rate signal or string from a user-defined channel.
--
-- > ivalue  invalue  "channel name"
-- > kvalue  invalue  "channel name"
-- > Sname  invalue  "channel name"
--
-- csound doc: <http://csound.com/docs/manual/invalue.html>
invalue ::  Str -> Str
invalue :: Str -> Str
invalue Str
b1 = GE E -> Str
Str (GE E -> Str) -> GE E -> Str
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"invalue" [(Rate
Ir,[Rate
Sr]),(Rate
Kr,[Rate
Sr]),(Rate
Sr,[Rate
Sr])] [E
a1]

-- | 
-- Reads a 16-channel audio signal from an external device or stream.
--
-- > ar1, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9, ar10, ar11, ar12, \
-- >           ar13, ar14, ar15, ar16  inx 
--
-- csound doc: <http://csound.com/docs/manual/inx.html>
inx :: Tuple a =>  a
inx :: a
inx  = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ MultiOut [E] -> GE (MultiOut [E])
forall (m :: * -> *) a. Monad m => a -> m a
return (MultiOut [E] -> GE (MultiOut [E]))
-> MultiOut [E] -> GE (MultiOut [E])
forall a b. (a -> b) -> a -> b
$ MultiOut [E]
f 
    where f :: MultiOut [E]
f  = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"inx" ([Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar],[]) []

-- | 
-- Reads multi-channel audio samples into a ZAK array from an external device or stream.
--
-- >  inz  ksig1
--
-- csound doc: <http://csound.com/docs/manual/inz.html>
inz ::  Sig -> SE ()
inz :: Sig -> SE ()
inz Sig
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"inz" [(Rate
Xr,[Rate
Kr])] [E
a1]

-- | 
-- Reads mono or stereo audio data from an external MP3 file.
--
-- > ar1, ar2  mp3in  ifilcod[, iskptim, iformat, iskipinit, ibufsize]
-- > ar1  mp3in  ifilcod[, iskptim, iformat, iskipinit, ibufsize]
--
-- csound doc: <http://csound.com/docs/manual/mp3in.html>
mp3in ::  Str -> (Sig,Sig)
mp3in :: Str -> (Sig, Sig)
mp3in Str
b1 = GE (MultiOut [E]) -> (Sig, Sig)
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> (Sig, Sig))
-> GE (MultiOut [E]) -> (Sig, Sig)
forall a b. (a -> b) -> a -> b
$ E -> MultiOut [E]
f (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> MultiOut [E]
f E
a1 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"mp3in" ([Rate
Ar,Rate
Ar],[Rate
Sr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir]) [E
a1]

-- | 
-- Reads audio data from an external device or stream.
--
-- Reads audio data from an external device or stream.  Up to 24
--       channels may be read before v5.14, extended to 40 in later versions.
--
-- > ar1[, ar2[, ar3[, ... a24]]]  soundin  ifilcod [, iskptim] [, iformat] \
-- >           [, iskipinit] [, ibufsize]
--
-- csound doc: <http://csound.com/docs/manual/soundin.html>
soundin :: Tuple a => Str -> a
soundin :: Str -> a
soundin Str
b1 = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ E -> MultiOut [E]
f (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> MultiOut [E]
f E
a1 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"soundin" ((Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar),[Rate
Sr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir]) [E
a1]

-- Signal Output.

-- | 
-- A MIDI delay opcode.
--
-- >  mdelay  kstatus, kchan, kd1, kd2, kdelay
--
-- csound doc: <http://csound.com/docs/manual/mdelay.html>
mdelay ::  Sig -> Sig -> Sig -> Sig -> Sig -> SE ()
mdelay :: Sig -> Sig -> Sig -> Sig -> Sig -> SE ()
mdelay Sig
b1 Sig
b2 Sig
b3 Sig
b4 Sig
b5 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
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
"mdelay" [(Rate
Xr,[Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr])] [E
a1,E
a2,E
a3,E
a4,E
a5]

-- | 
-- Returns the audio spout frame.
--
-- Returns the audio spout frame (if active), otherwise it returns zero.
--
-- > aout1 [,aout2 ... aoutX]  monitor 
-- > aarra  monitor 
--
-- csound doc: <http://csound.com/docs/manual/monitor.html>
monitor :: Tuple a =>  a
monitor :: a
monitor  = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ MultiOut [E] -> GE (MultiOut [E])
forall (m :: * -> *) a. Monad m => a -> m a
return (MultiOut [E] -> GE (MultiOut [E]))
-> MultiOut [E] -> GE (MultiOut [E])
forall a b. (a -> b) -> a -> b
$ MultiOut [E]
f 
    where f :: MultiOut [E]
f  = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"monitor" ((Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar),[]) []

-- | 
-- Writes audio data to an external device or stream.
--
-- Writes audio data to an external device or stream, either from
--       audio variables or from an audio array.
--
-- >  out  asig1[, asig2,....]
-- >  out  aarray
--
-- csound doc: <http://csound.com/docs/manual/out.html>
out ::  Sig -> SE ()
out :: Sig -> SE ()
out Sig
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"out" [(Rate
Xr,(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar))] [E
a1]

-- | 
-- Writes 32-channel audio data to an external device or stream.
--
-- >  out32  asig1, asig2, asig3, asig4, asig5, asig6, asig7, asig8, asig10, \
-- >           asig11, asig12, asig13, asig14, asig15, asig16, asig17, asig18, \
-- >           asig19, asig20, asig21, asig22, asig23, asig24, asig25, asig26, \
-- >           asig27, asig28, asig29, asig30, asig31, asig32
--
-- csound doc: <http://csound.com/docs/manual/out32.html>
out32 ::  Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE ()
out32 :: Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> SE ()
out32 Sig
b1 Sig
b2 Sig
b3 Sig
b4 Sig
b5 Sig
b6 Sig
b7 Sig
b8 Sig
b9 Sig
b10 Sig
b11 Sig
b12 Sig
b13 Sig
b14 Sig
b15 Sig
b16 Sig
b17 Sig
b18 Sig
b19 Sig
b20 Sig
b21 Sig
b22 Sig
b23 Sig
b24 Sig
b25 Sig
b26 Sig
b27 Sig
b28 Sig
b29 Sig
b30 Sig
b31 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
f (E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> 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
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
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
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b5 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b6 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b7 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b8 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b9 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b10 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b11 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b12 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b13 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b14 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b15 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b16 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b17 GE
  (E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b18 GE
  (E
   -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E
-> GE
     (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b19 GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E
-> GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b20 GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b21 GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b22 GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b23 GE (E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b24 GE (E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b25 GE (E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b26 GE (E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b27 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b28 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b29 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b30 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b31
    where f :: E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 E
a7 E
a8 E
a9 E
a10 E
a11 E
a12 E
a13 E
a14 E
a15 E
a16 E
a17 E
a18 E
a19 E
a20 E
a21 E
a22 E
a23 E
a24 E
a25 E
a26 E
a27 E
a28 E
a29 E
a30 E
a31 = Name -> Spec1 -> [E] -> E
opcs Name
"out32" [(Rate
Xr
                                                                                                                                               ,[Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar
                                                                                                                                                ,Rate
Ar])] [E
a1
                                                                                                                                                       ,E
a2
                                                                                                                                                       ,E
a3
                                                                                                                                                       ,E
a4
                                                                                                                                                       ,E
a5
                                                                                                                                                       ,E
a6
                                                                                                                                                       ,E
a7
                                                                                                                                                       ,E
a8
                                                                                                                                                       ,E
a9
                                                                                                                                                       ,E
a10
                                                                                                                                                       ,E
a11
                                                                                                                                                       ,E
a12
                                                                                                                                                       ,E
a13
                                                                                                                                                       ,E
a14
                                                                                                                                                       ,E
a15
                                                                                                                                                       ,E
a16
                                                                                                                                                       ,E
a17
                                                                                                                                                       ,E
a18
                                                                                                                                                       ,E
a19
                                                                                                                                                       ,E
a20
                                                                                                                                                       ,E
a21
                                                                                                                                                       ,E
a22
                                                                                                                                                       ,E
a23
                                                                                                                                                       ,E
a24
                                                                                                                                                       ,E
a25
                                                                                                                                                       ,E
a26
                                                                                                                                                       ,E
a27
                                                                                                                                                       ,E
a28
                                                                                                                                                       ,E
a29
                                                                                                                                                       ,E
a30
                                                                                                                                                       ,E
a31]

-- | 
-- Writes audio data with an arbitrary number of channels to an external device or stream.
--
-- >  outc  asig1 [, asig2] [...]
--
-- csound doc: <http://csound.com/docs/manual/outc.html>
outc ::  [Sig] -> SE ()
outc :: [Sig] -> SE ()
outc [Sig]
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ [E] -> E
f ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM Sig -> GE E
unSig [Sig]
b1
    where f :: [E] -> E
f [E]
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"outc" [(Rate
Xr,(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar))] [E]
a1

-- | 
-- Writes multi-channel audio data, with user-controllable channels, to an external device or stream.
--
-- >  outch  kchan1, asig1 [, kchan2] [, asig2] [...]
--
-- csound doc: <http://csound.com/docs/manual/outch.html>
outch ::  Sig -> [Sig] -> SE ()
outch :: Sig -> [Sig] -> SE ()
outch Sig
b1 [Sig]
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM Sig -> GE E
unSig [Sig]
b2
    where f :: E -> [E] -> E
f E
a1 [E]
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"outch" [(Rate
Xr,[Rate
Kr,Rate
Ar,Rate
Kr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar))] ([E
a1] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a2)

-- | 
-- Writes 6-channel audio data to an external device or stream.
--
-- >  outh  asig1, asig2, asig3, asig4, asig5, asig6
--
-- csound doc: <http://csound.com/docs/manual/outh.html>
outh ::  Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE ()
outh :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE ()
outh Sig
b1 Sig
b2 Sig
b3 Sig
b4 Sig
b5 Sig
b6 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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 (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 (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 (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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b5 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
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
"outh" [(Rate
Xr,[Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar])] [E
a1,E
a2,E
a3,E
a4,E
a5,E
a6]

-- | 
-- Writes 8-channel audio data to an external device or stream.
--
-- >  outo  asig1, asig2, asig3, asig4, asig5, asig6, asig7, asig8
--
-- csound doc: <http://csound.com/docs/manual/outo.html>
outo ::  Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE ()
outo :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE ()
outo Sig
b1 Sig
b2 Sig
b3 Sig
b4 Sig
b5 Sig
b6 Sig
b7 Sig
b8 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> 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 -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E)
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 -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE (E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b5 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b6 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b7 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b8
    where f :: E -> E -> E -> E -> E -> E -> E -> E -> E
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 E
a7 E
a8 = Name -> Spec1 -> [E] -> E
opcs Name
"outo" [(Rate
Xr,[Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar])] [E
a1
                                                                                   ,E
a2
                                                                                   ,E
a3
                                                                                   ,E
a4
                                                                                   ,E
a5
                                                                                   ,E
a6
                                                                                   ,E
a7
                                                                                   ,E
a8]

-- | 
-- Writes 4-channel audio data to an external device or stream.
--
-- >  outq  asig1, asig2, asig3, asig4
--
-- csound doc: <http://csound.com/docs/manual/outq.html>
outq ::  Sig -> Sig -> Sig -> Sig -> SE ()
outq :: Sig -> Sig -> Sig -> Sig -> SE ()
outq Sig
b1 Sig
b2 Sig
b3 Sig
b4 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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 (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 (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 (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
"outq" [(Rate
Xr,[Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar])] [E
a1,E
a2,E
a3,E
a4]

-- | 
-- Writes samples to quad channel 1 of an external device or stream.
--
-- >  outq1  asig
--
-- csound doc: <http://csound.com/docs/manual/outq1.html>
outq1 ::  Sig -> SE ()
outq1 :: Sig -> SE ()
outq1 Sig
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"outq1" [(Rate
Xr,[Rate
Ar])] [E
a1]

-- | 
-- Writes samples to quad channel 2 of an external device or stream.
--
-- >  outq2  asig
--
-- csound doc: <http://csound.com/docs/manual/outq2.html>
outq2 ::  Sig -> SE ()
outq2 :: Sig -> SE ()
outq2 Sig
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"outq2" [(Rate
Xr,[Rate
Ar])] [E
a1]

-- | 
-- Writes samples to quad channel 3 of an external device or stream.
--
-- >  outq3  asig
--
-- csound doc: <http://csound.com/docs/manual/outq3.html>
outq3 ::  Sig -> SE ()
outq3 :: Sig -> SE ()
outq3 Sig
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"outq3" [(Rate
Xr,[Rate
Ar])] [E
a1]

-- | 
-- Writes samples to quad channel 4 of an external device or stream.
--
-- >  outq4  asig
--
-- csound doc: <http://csound.com/docs/manual/outq4.html>
outq4 ::  Sig -> SE ()
outq4 :: Sig -> SE ()
outq4 Sig
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"outq4" [(Rate
Xr,[Rate
Ar])] [E
a1]

-- | 
-- Allow output to a range of adjacent audio channels on the audio output device
--
-- outrg outputs audio to a range of adjacent audio channels on the audio output device.
--
-- >  outrg  kstart, aout1 [,aout2, aout3, ..., aoutN]
--
-- csound doc: <http://csound.com/docs/manual/outrg.html>
outrg ::  Sig -> [Sig] -> SE ()
outrg :: Sig -> [Sig] -> SE ()
outrg Sig
b1 [Sig]
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM Sig -> GE E
unSig [Sig]
b2
    where f :: E -> [E] -> E
f E
a1 [E]
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"outrg" [(Rate
Xr,[Rate
Kr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ar))] ([E
a1] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a2)

-- | 
-- Writes stereo audio data to an external device or stream.
--
-- >  outs  asig1, asig2
--
-- csound doc: <http://csound.com/docs/manual/outs.html>
outs ::  Sig -> Sig -> SE ()
outs :: Sig -> Sig -> SE ()
outs Sig
b1 Sig
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E) -> GE E -> GE E
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
"outs" [(Rate
Xr,[Rate
Ar,Rate
Ar])] [E
a1,E
a2]

-- | 
-- Writes samples to stereo channel 1 of an external device or stream.
--
-- >  outs1  asig
--
-- csound doc: <http://csound.com/docs/manual/outs1.html>
outs1 ::  Sig -> SE ()
outs1 :: Sig -> SE ()
outs1 Sig
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"outs1" [(Rate
Xr,[Rate
Ar])] [E
a1]

-- | 
-- Writes samples to stereo channel 2 of an external device or stream.
--
-- >  outs2  asig
--
-- csound doc: <http://csound.com/docs/manual/outs2.html>
outs2 ::  Sig -> SE ()
outs2 :: Sig -> SE ()
outs2 Sig
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"outs2" [(Rate
Xr,[Rate
Ar])] [E
a1]

-- | 
-- Sends an i-rate or k-rate signal or string to a user-defined channel.
--
-- Sends an irate or k-rate signal or string to a user-defined channel.
--
-- >  outvalue  "channel name", ivalue
-- >  outvalue  "channel name", kvalue
-- >  outvalue  "channel name", "string"
--
-- csound doc: <http://csound.com/docs/manual/outvalue.html>
outvalue ::  Str -> D -> SE ()
outvalue :: Str -> D -> SE ()
outvalue Str
b1 D
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"outvalue" [(Rate
Xr,[Rate
Sr,Rate
Ir])] [E
a1,E
a2]

-- | 
-- Writes 16-channel audio data to an external device or stream.
--
-- >  outx  asig1, asig2, asig3, asig4, asig5, asig6, asig7, asig8, \
-- >           asig9, asig10, asig11, asig12, asig13, asig14, asig15, asig16
--
-- csound doc: <http://csound.com/docs/manual/outx.html>
outx ::  Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE ()
outx :: Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> SE ()
outx Sig
b1 Sig
b2 Sig
b3 Sig
b4 Sig
b5 Sig
b6 Sig
b7 Sig
b8 Sig
b9 Sig
b10 Sig
b11 Sig
b12 Sig
b13 Sig
b14 Sig
b15 Sig
b16 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
f (E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E
 -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> 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
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E
      -> E)
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
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E
   -> E)
-> GE E
-> GE
     (E
      -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE
  (E
   -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E
-> GE
     (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E
-> GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b5 GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b6 GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b7 GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b8 GE (E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b9 GE (E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b10 GE (E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b11 GE (E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b12 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b13 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b14 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b15 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b16
    where f :: E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 E
a7 E
a8 E
a9 E
a10 E
a11 E
a12 E
a13 E
a14 E
a15 E
a16 = Name -> Spec1 -> [E] -> E
opcs Name
"outx" [(Rate
Xr
                                                                                  ,[Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar])] [E
a1
                                                                                                                                       ,E
a2
                                                                                                                                       ,E
a3
                                                                                                                                       ,E
a4
                                                                                                                                       ,E
a5
                                                                                                                                       ,E
a6
                                                                                                                                       ,E
a7
                                                                                                                                       ,E
a8
                                                                                                                                       ,E
a9
                                                                                                                                       ,E
a10
                                                                                                                                       ,E
a11
                                                                                                                                       ,E
a12
                                                                                                                                       ,E
a13
                                                                                                                                       ,E
a14
                                                                                                                                       ,E
a15
                                                                                                                                       ,E
a16]

-- | 
-- Writes multi-channel audio data from a ZAK array to an external device or stream.
--
-- >  outz  ksig1
--
-- csound doc: <http://csound.com/docs/manual/outz.html>
outz ::  Sig -> SE ()
outz :: Sig -> SE ()
outz Sig
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"outz" [(Rate
Xr,[Rate
Kr])] [E
a1]

-- | 
-- Deprecated. Writes audio output to a disk file.
--
-- The usage of soundout is discouraged. Please use  fout instead.
--
-- >  soundout   asig1, ifilcod [, iformat]
--
-- csound doc: <http://csound.com/docs/manual/soundout.html>
soundout ::  Sig -> Str -> SE ()
soundout :: Sig -> Str -> SE ()
soundout Sig
b1 Str
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"soundout" [(Rate
Xr,[Rate
Ar,Rate
Sr,Rate
Ir])] [E
a1,E
a2]

-- | 
-- Deprecated. Writes audio output to a disk file.
--
-- The usage of soundouts is discouraged. Please use  fout instead.
--
-- >  soundouts   asigl, asigr, ifilcod [, iformat]
--
-- csound doc: <http://csound.com/docs/manual/soundouts.html>
soundouts ::  Sig -> Sig -> Str -> SE ()
soundouts :: Sig -> Sig -> Str -> SE ()
soundouts Sig
b1 Sig
b2 Str
b3 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E -> E) -> GE E -> GE (E -> E)
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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b3
    where f :: E -> E -> E -> E
f E
a1 E
a2 E
a3 = Name -> Spec1 -> [E] -> E
opcs Name
"soundouts" [(Rate
Xr,[Rate
Ar,Rate
Ar,Rate
Sr,Rate
Ir])] [E
a1,E
a2,E
a3]

-- Software Bus.

-- | 
-- Reads data from the software bus
--
-- Reads data from a channel of the inward software bus.
--
-- > kval  chani  kchan
-- > aval  chani  kchan
--
-- csound doc: <http://csound.com/docs/manual/chani.html>
chani ::  Sig -> SE Sig
chani :: Sig -> SE Sig
chani Sig
b1 = (E -> Sig) -> SE E -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ( GE E -> Sig
Sig (GE E -> Sig) -> (E -> GE E) -> E -> Sig
forall b c a. (b -> c) -> (a -> b) -> a -> c
. E -> GE E
forall (m :: * -> *) a. Monad m => a -> m a
return) (SE E -> SE Sig) -> SE E -> SE Sig
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
$ (E -> DepT GE E
forall (m :: * -> *). Monad m => E -> DepT m E
depT (E -> DepT GE E) -> DepT GE E -> DepT GE E
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> DepT GE E) -> DepT GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"chani" [(Rate
Kr,[Rate
Kr]),(Rate
Ar,[Rate
Kr])] [E
a1]

-- | 
-- Send data to the outwards software bus
--
-- Send data to a channel of the outward software bus.
--
-- >  chano  kval, kchan
-- >  chano  aval, kchan
--
-- csound doc: <http://csound.com/docs/manual/chano.html>
chano ::  Sig -> Sig -> SE ()
chano :: Sig -> Sig -> SE ()
chano Sig
b1 Sig
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E) -> GE E -> GE E
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
"chano" [(Rate
Xr,[Rate
Kr,Rate
Kr])] [E
a1,E
a2]

-- | 
-- Declare a channel of the named software bus.
--
-- Declare a channel of the named software bus, with setting optional
--       parameters in the case of a control channel. If the channel does not
--       exist yet, it is created, with an inital value of zero or empty string.
--       Otherwise, the type (control, audio, or string) of the existing channel
--       must match the declaration, or an init error occurs. The input/output
--       mode of an existing channel is updated so that it becomes the bitwise
--       OR of the previous and the newly specified value.
--
-- >   chn_k  Sname, imode[, itype, idflt, imin, ima, ix, iy, iwidth, iheight, Sattributes]
--
-- csound doc: <http://csound.com/docs/manual/chn.html>
chn_k ::  Str -> D -> SE ()
chn_k :: Str -> D -> SE ()
chn_k Str
b1 D
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"chn_k" [(Rate
Xr,[Rate
Sr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Sr])] [E
a1,E
a2]

-- | 
-- Declare a channel of the named software bus.
--
-- Declare a channel of the named software bus, with setting optional
--       parameters in the case of a control channel. If the channel does not
--       exist yet, it is created, with an inital value of zero or empty string.
--       Otherwise, the type (control, audio, or string) of the existing channel
--       must match the declaration, or an init error occurs. The input/output
--       mode of an existing channel is updated so that it becomes the bitwise
--       OR of the previous and the newly specified value.
--
-- >   chn_a  Sname, imode
--
-- csound doc: <http://csound.com/docs/manual/chn.html>
chn_a ::  Str -> D -> SE ()
chn_a :: Str -> D -> SE ()
chn_a Str
b1 D
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"chn_a" [(Rate
Xr,[Rate
Sr,Rate
Ir])] [E
a1,E
a2]

-- | 
-- Declare a channel of the named software bus.
--
-- Declare a channel of the named software bus, with setting optional
--       parameters in the case of a control channel. If the channel does not
--       exist yet, it is created, with an inital value of zero or empty string.
--       Otherwise, the type (control, audio, or string) of the existing channel
--       must match the declaration, or an init error occurs. The input/output
--       mode of an existing channel is updated so that it becomes the bitwise
--       OR of the previous and the newly specified value.
--
-- >   chn_S  Sname, imode
--
-- csound doc: <http://csound.com/docs/manual/chn.html>
chn_S ::  Str -> D -> SE ()
chn_S :: Str -> D -> SE ()
chn_S Str
b1 D
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"chn_S" [(Rate
Xr,[Rate
Sr,Rate
Ir])] [E
a1,E
a2]

-- | 
-- Clears an audio output channel of the named software bus.
--
-- Clears an audio channel of the named software bus to zero.
--       Implies declaring the channel with imode=2 (see also
--       chn_a).
--
-- >  chnclear  Sname
--
-- csound doc: <http://csound.com/docs/manual/chnclear.html>
chnclear ::  Str -> SE ()
chnclear :: Str -> SE ()
chnclear Str
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"chnclear" [(Rate
Xr,[Rate
Sr])] [E
a1]

-- | 
-- Export a global variable as a channel of the bus.
--
-- Export a global variable as a channel of the bus; the channel
--       should not already exist, otherwise an init error occurs.
--       This opcode is normally called from the orchestra header, and allows
--       the host application to read or write orchestra variables directly,
--       without having to use
--       chnget or
--       chnset to copy data.
--
-- > gival  chnexport  Sname, imode[, itype, idflt, imin, imax]
-- > gkval  chnexport  Sname, imode[, itype, idflt, imin, imax]
-- > gaval  chnexport  Sname, imode
-- > gSval  chnexport  Sname, imode
--
-- csound doc: <http://csound.com/docs/manual/chnexport.html>
chnexport ::  Str -> D -> Str
chnexport :: Str -> D -> Str
chnexport Str
b1 D
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"chnexport" [(Rate
Ir,[Rate
Sr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir])
                                     ,(Rate
Kr,[Rate
Sr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir])
                                     ,(Rate
Ar,[Rate
Sr,Rate
Ir])
                                     ,(Rate
Sr,[Rate
Sr,Rate
Ir])] [E
a1,E
a2]

-- | 
-- Reads data from the software bus.
--
-- Reads data from a channel of the inward named software bus.
--       Implies declaring the channel with imode=1 (see also
--       chn_k, chn_a, and chn_S).
--
-- > ival  chnget  Sname
-- > kval  chnget  Sname
-- > aval  chnget  Sname
-- > Sval  chnget  Sname
--
-- csound doc: <http://csound.com/docs/manual/chnget.html>
chnget ::  Str -> SE Str
chnget :: Str -> SE Str
chnget Str
b1 = (E -> Str) -> SE E -> SE Str
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ( GE E -> Str
Str (GE E -> Str) -> (E -> GE E) -> E -> Str
forall b c a. (b -> c) -> (a -> b) -> a -> c
. E -> GE E
forall (m :: * -> *) a. Monad m => a -> m a
return) (SE E -> SE Str) -> SE E -> SE Str
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
$ (E -> DepT GE E
forall (m :: * -> *). Monad m => E -> DepT m E
depT (E -> DepT GE E) -> DepT GE E -> DepT GE E
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> DepT GE E) -> DepT GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"chnget" [(Rate
Ir,[Rate
Sr]),(Rate
Kr,[Rate
Sr]),(Rate
Ar,[Rate
Sr]),(Rate
Sr,[Rate
Sr])] [E
a1]

-- | 
-- Reads data from the software bus.
--
-- Reads data from a channel of the inward named software bus.
--       Implies declaring the channel with imode=1 (see also
--       chn_k, chn_a, and chn_S).
--
-- > Sval  chngetks  Sname
--
-- csound doc: <http://csound.com/docs/manual/chnget.html>
chngetks ::  Str -> Str
chngetks :: Str -> Str
chngetks Str
b1 = GE E -> Str
Str (GE E -> Str) -> GE E -> Str
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"chngetks" [(Rate
Sr,[Rate
Sr])] [E
a1]

-- | 
-- Writes audio data to the named software bus, mixing to the previous
--       output.
--
-- Adds an audio signal to a channel of the named software bus.
--       Implies declaring the channel with imode=2 (see also
--       chn_a).
--
-- >  chnmix  aval, Sname
--
-- csound doc: <http://csound.com/docs/manual/chnmix.html>
chnmix ::  Sig -> Str -> SE ()
chnmix :: Sig -> Str -> SE ()
chnmix Sig
b1 Str
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"chnmix" [(Rate
Xr,[Rate
Ar,Rate
Sr])] [E
a1,E
a2]

-- | 
-- Query parameters of a channel.
--
-- Query parameters of a channel (if it does not exist, all
--       returned values are zero).
--
-- > itype, imode, ictltype, idflt, imin, imax  chnparams  Sname
--
-- csound doc: <http://csound.com/docs/manual/chnparams.html>
chnparams :: Tuple a => Str -> a
chnparams :: Str -> a
chnparams Str
b1 = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ E -> MultiOut [E]
f (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> MultiOut [E]
f E
a1 = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"chnparams" ([Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir],[Rate
Sr]) [E
a1]

-- | 
-- Writes data to the named software bus.
--
-- Write to a channel of the named software bus. Implies declaring the
--       channel with imod=2 (see also
--       chn_k, chn_a, and chn_S).
--
-- >  chnset  ival, Sname
-- >  chnset  kval, Sname
-- >  chnset  aval, Sname
-- >  chnset  Sval, Sname
--
-- csound doc: <http://csound.com/docs/manual/chnset.html>
chnset ::  D -> Str -> SE ()
chnset :: D -> Str -> SE ()
chnset D
b1 Str
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"chnset" [(Rate
Xr,[Rate
Ir,Rate
Sr])] [E
a1,E
a2]

-- | 
-- Writes data to the named software bus.
--
-- Write to a channel of the named software bus. Implies declaring the
--       channel with imod=2 (see also
--       chn_k, chn_a, and chn_S).
--
-- >  chnsetks  Sval, Sname
--
-- csound doc: <http://csound.com/docs/manual/chnset.html>
chnsetks ::  Str -> Str -> SE ()
chnsetks :: Str -> Str -> SE ()
chnsetks Str
b1 Str
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"chnsetks" [(Rate
Xr,[Rate
Sr,Rate
Sr])] [E
a1,E
a2]

-- | 
-- Sets the local ksmps value in an instrument or user-defined opcode block
--
-- Sets the local ksmps value in an instrument or user-defined opcode block.
--
-- >  setksmps  iksmps
--
-- csound doc: <http://csound.com/docs/manual/setksmps.html>
setksmps ::  D -> SE ()
setksmps :: D -> SE ()
setksmps D
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> D -> GE E
unD D
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"setksmps" [(Rate
Xr,[Rate
Ir])] [E
a1]

-- | 
-- Passes variables to a user-defined opcode block,
--
-- The xin and xout opcodes copy variables to and from the opcode definition, allowing communication with the calling instrument.
--
-- > xinarg1 [, xinarg2] ... [xinargN]  xin 
--
-- csound doc: <http://csound.com/docs/manual/xin.html>
xin :: Tuple a =>  a
xin :: a
xin  = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ MultiOut [E] -> GE (MultiOut [E])
forall (m :: * -> *) a. Monad m => a -> m a
return (MultiOut [E] -> GE (MultiOut [E]))
-> MultiOut [E] -> GE (MultiOut [E])
forall a b. (a -> b) -> a -> b
$ MultiOut [E]
f 
    where f :: MultiOut [E]
f  = Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"xin" ((Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Xr),[]) []

-- | 
-- Retrieves variables from a user-defined opcode block,
--
-- The xin and xout opcodes copy variables to and from the opcode definition, allowing communication with the calling instrument.
--
-- >  xout  xoutarg1 [, xoutarg2] ... [, xoutargN]
--
-- csound doc: <http://csound.com/docs/manual/xout.html>
xout ::  [Sig] -> SE ()
xout :: [Sig] -> SE ()
xout [Sig]
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ [E] -> E
f ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM Sig -> GE E
unSig [Sig]
b1
    where f :: [E] -> E
f [E]
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"xout" [(Rate
Xr,(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Xr))] [E]
a1

-- Printing and Display.

-- | 
-- Displays the Fourier Transform of an audio or control signal.
--
-- These units will print orchestra init-values, or produce graphic display of orchestra control signals and audio signals. Uses X11 windows if enabled, else (or if -g flag is set) displays are approximated in ASCII characters.
--
-- >  dispfft  xsig, iprd, iwsiz [, iwtyp] [, idbout] [, iwtflg] [,imin] [,imax]
--
-- csound doc: <http://csound.com/docs/manual/dispfft.html>
dispfft ::  Sig -> D -> D -> SE ()
dispfft :: Sig -> D -> D -> SE ()
dispfft Sig
b1 D
b2 D
b3 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE (E -> E) -> GE E -> GE E
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
"dispfft" [(Rate
Xr,[Rate
Xr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1,E
a2,E
a3]

-- | 
-- Displays the audio or control signals as an amplitude vs. time graph.
--
-- These units will print orchestra init-values, or produce graphic display of orchestra control signals and audio signals. Uses X11 windows if enabled, else (or if -g flag is set) displays are approximated in ASCII characters.
--
-- >  display  xsig, iprd [, inprds] [, iwtflg]
--
-- csound doc: <http://csound.com/docs/manual/display.html>
display ::  Sig -> D -> SE ()
display :: Sig -> D -> SE ()
display Sig
b1 D
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"display" [(Rate
Xr,[Rate
Xr,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1,E
a2]

-- | 
-- Allows text to be displayed from instruments like sliders
--
-- Allows text to be displayed from instruments like sliders etc. (only on Unix and Windows at present)
--
-- >  flashtxt   iwhich, String
--
-- csound doc: <http://csound.com/docs/manual/flashtxt.html>
flashtxt ::  D -> Str -> SE ()
flashtxt :: D -> Str -> SE ()
flashtxt D
b1 Str
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Str -> GE E
unStr Str
b2
    where f :: E -> E -> E
f E
a1 E
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"flashtxt" [(Rate
Xr,[Rate
Ir,Rate
Sr])] [E
a1,E
a2]

-- | 
-- Displays the values init (i-rate) variables.
--
-- These units will print orchestra init-values.
--
-- >  print  iarg [, iarg1] [, iarg2] [...]
--
-- csound doc: <http://csound.com/docs/manual/print.html>
print' ::  [D] -> SE ()
print' :: [D] -> SE ()
print' [D]
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ [E] -> E
f ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (D -> GE E) -> [D] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM D -> GE E
unD [D]
b1
    where f :: [E] -> E
f [E]
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"print" [(Rate
Xr,(Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Ir))] [E]
a1

-- | 
-- printf-style formatted output
--
-- printf and printf_i write
--     formatted output, similarly to the C function
--     printf(). printf_i runs at i-time only, while
--     printf runs both at initialization and
--     performance time.
--
-- >  printf_i  Sfmt, itrig, [iarg1[, iarg2[, ... ]]]
--
-- csound doc: <http://csound.com/docs/manual/printf.html>
printf_i ::  Str -> D -> [D] -> SE ()
printf_i :: Str -> D -> [D] -> SE ()
printf_i Str
b1 D
b2 [D]
b3 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> [E] -> E) -> GE E -> GE ([E] -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (D -> GE E) -> [D] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"printf_i" [(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] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a3)

-- | 
-- printf-style formatted output
--
-- printf and printf_i write
--     formatted output, similarly to the C function
--     printf(). printf_i runs at i-time only, while
--     printf runs both at initialization and
--     performance time.
--
-- >  printf  Sfmt, ktrig, [xarg1[, xarg2[, ... ]]]
--
-- csound doc: <http://csound.com/docs/manual/printf.html>
printf ::  Str -> Sig -> [Sig] -> SE ()
printf :: Str -> Sig -> [Sig] -> SE ()
printf Str
b1 Sig
b2 [Sig]
b3 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> [E] -> E) -> GE E -> GE ([E] -> E)
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 (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"printf" [(Rate
Xr,[Rate
Sr,Rate
Kr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Xr))] ([E
a1,E
a2] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a3)

-- | 
-- Prints one k-rate value at specified intervals.
--
-- >  printk  itime, kval [, ispace]
--
-- csound doc: <http://csound.com/docs/manual/printk.html>
printk ::  D -> Sig -> SE ()
printk :: D -> Sig -> SE ()
printk D
b1 Sig
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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 (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
"printk" [(Rate
Xr,[Rate
Ir,Rate
Kr,Rate
Ir])] [E
a1,E
a2]

-- | 
-- Prints a new value every time a control variable changes.
--
-- >  printk2  kvar [, inumspaces]
--
-- csound doc: <http://csound.com/docs/manual/printk2.html>
printk2 ::  Sig -> SE ()
printk2 :: Sig -> SE ()
printk2 Sig
b1 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"printk2" [(Rate
Xr,[Rate
Kr,Rate
Ir])] [E
a1]

-- | 
-- Prints at k-rate using a printf() style syntax.
--
-- >  printks  "string", itime [, kval1] [, kval2] [...]
--
-- csound doc: <http://csound.com/docs/manual/printks.html>
printks ::  Str -> D -> [Sig] -> SE ()
printks :: Str -> D -> [Sig] -> SE ()
printks Str
b1 D
b2 [Sig]
b3 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> [E] -> E) -> GE E -> GE ([E] -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b2 GE ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM 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
"printks" [(Rate
Xr,[Rate
Sr,Rate
Ir] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Kr))] ([E
a1,E
a2] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a3)

-- | 
-- Prints a new value every time a control variable changes using a
--       printf() style syntax.
--
-- >  printks2  "string", kval
--
-- csound doc: <http://csound.com/docs/manual/printks2.html>
printks2 ::  Str -> Sig -> SE ()
printks2 :: Str -> Sig -> SE ()
printks2 Str
b1 Sig
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE (E -> E) -> GE E -> GE E
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
"printks2" [(Rate
Xr,[Rate
Sr,Rate
Kr])] [E
a1,E
a2]

-- | 
-- Prints at init-time using a printf() style syntax.
--
-- >  prints  "string" [, kval1] [, kval2] [...]
--
-- csound doc: <http://csound.com/docs/manual/prints.html>
prints ::  Str -> [Sig] -> SE ()
prints :: Str -> [Sig] -> SE ()
prints Str
b1 [Sig]
b2 = Dep () -> SE ()
forall a. Dep a -> SE a
SE (Dep () -> SE ()) -> Dep () -> SE ()
forall a b. (a -> b) -> a -> b
$ (E -> Dep ()
forall (m :: * -> *). Monad m => E -> DepT m ()
depT_ (E -> Dep ()) -> DepT GE E -> Dep ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (DepT GE E -> Dep ()) -> DepT GE E -> Dep ()
forall a b. (a -> b) -> a -> b
$ GE E -> DepT GE E
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (GE E -> DepT GE E) -> GE E -> DepT GE E
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
<$> Str -> GE E
unStr Str
b1 GE ([E] -> E) -> GE [E] -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Sig -> GE E) -> [Sig] -> GE [E]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM Sig -> GE E
unSig [Sig]
b2
    where f :: E -> [E] -> E
f E
a1 [E]
a2 = Name -> Spec1 -> [E] -> E
opcs Name
"prints" [(Rate
Xr,[Rate
Sr] [Rate] -> [Rate] -> [Rate]
forall a. [a] -> [a] -> [a]
++ (Rate -> [Rate]
forall a. a -> [a]
repeat Rate
Kr))] ([E
a1] [E] -> [E] -> [E]
forall a. [a] -> [a] -> [a]
++ [E]
a2)

-- Soundfile Queries.

-- | 
-- Returns the number of bits in each sample in a sound file.
--
-- > ir  filebit  ifilcod [, iallowraw]
--
-- csound doc: <http://csound.com/docs/manual/filebit.html>
filebit ::  Str -> D
filebit :: Str -> D
filebit Str
b1 = GE E -> D
D (GE E -> D) -> GE E -> D
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"filebit" [(Rate
Ir,[Rate
Sr,Rate
Ir])] [E
a1]

-- | 
-- Returns the length of a sound file.
--
-- > ir  filelen  ifilcod, [iallowraw]
--
-- csound doc: <http://csound.com/docs/manual/filelen.html>
filelen ::  Str -> D
filelen :: Str -> D
filelen Str
b1 = GE E -> D
D (GE E -> D) -> GE E -> D
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"filelen" [(Rate
Ir,[Rate
Sr,Rate
Ir])] [E
a1]

-- | 
-- Returns the number of channels in a sound file.
--
-- > ir  filenchnls  ifilcod [, iallowraw]
--
-- csound doc: <http://csound.com/docs/manual/filenchnls.html>
filenchnls ::  Str -> D
filenchnls :: Str -> D
filenchnls Str
b1 = GE E -> D
D (GE E -> D) -> GE E -> D
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"filenchnls" [(Rate
Ir,[Rate
Sr,Rate
Ir])] [E
a1]

-- | 
-- Returns the peak absolute value of a sound file.
--
-- > ir  filepeak  ifilcod [, ichnl]
--
-- csound doc: <http://csound.com/docs/manual/filepeak.html>
filepeak ::  Str -> D
filepeak :: Str -> D
filepeak Str
b1 = GE E -> D
D (GE E -> D) -> GE E -> D
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"filepeak" [(Rate
Ir,[Rate
Sr,Rate
Ir])] [E
a1]

-- | 
-- Returns the sample rate of a sound file.
--
-- > ir  filesr  ifilcod [, iallowraw]
--
-- csound doc: <http://csound.com/docs/manual/filesr.html>
filesr ::  Str -> D
filesr :: Str -> D
filesr Str
b1 = GE E -> D
D (GE E -> D) -> GE E -> D
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"filesr" [(Rate
Ir,[Rate
Sr,Rate
Ir])] [E
a1]

-- | 
-- Checks that a file can be used.
--
-- Returns 1 if the sound file is valid, or 0 if not.
--
-- > ir  filevalid  ifilcod
--
-- csound doc: <http://csound.com/docs/manual/filevalid.html>
filevalid ::  Str -> D
filevalid :: Str -> D
filevalid Str
b1 = GE E -> D
D (GE E -> D) -> GE E -> D
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"filevalid" [(Rate
Ir,[Rate
Sr])] [E
a1]

-- | 
-- Returns the length of an MP3 sound file.
--
-- > ir  mp3len  ifilcod
--
-- csound doc: <http://csound.com/docs/manual/mp3len.html>
mp3len ::  Str -> D
mp3len :: Str -> D
mp3len Str
b1 = GE E -> D
D (GE E -> D) -> GE E -> D
forall a b. (a -> b) -> a -> b
$ E -> E
f (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Str -> GE E
unStr Str
b1
    where f :: E -> E
f E
a1 = Name -> Spec1 -> [E] -> E
opcs Name
"mp3len" [(Rate
Ir,[Rate
Sr])] [E
a1]