csound-expression-0.0: src/CsoundExpr/Opcodes/Spectral/Lpcresyn.hs
-- | Linear Predictive Coding (LPC) Resynthesis
module CsoundExpr.Opcodes.Spectral.Lpcresyn
(lpfreson,
lpinterp,
lpread,
lpreson,
lpslot)
where
import CsoundExpr.Base.Types
import CsoundExpr.Base.MultiOut
import CsoundExpr.Base.SideEffect
import CsoundExpr.Base.UserDefined
-- | * opcode : lpfreson
--
--
-- * syntax :
--
-- > ares lpfreson asig, kfrqratio
--
--
-- * description :
--
-- Resynthesises a signal from the data passed internally by a
-- previous lpread, applying formant shifting.
--
--
-- * url : <http://www.csounds.com/manual/html/lpfreson.html>
lpfreson :: (K k0) => Arate -> k0 -> Arate
lpfreson a0sig k1frqratio = opcode "lpfreson" args
where args = [to a0sig, to k1frqratio]
-- | * opcode : lpinterp
--
--
-- * syntax :
--
-- > lpinterp islot1, islot2, kmix
--
--
-- * description :
--
-- Computes a new set of poles from the interpolation between two
-- analysis.
--
--
-- * url : <http://www.csounds.com/manual/html/lpinterp.html>
lpinterp :: (K k0) => Irate -> Irate -> k0 -> SignalOut
lpinterp i0slot1 i1slot2 k2mix = outOpcode "lpinterp" args
where args = [to i0slot1, to i1slot2, to k2mix]
-- | * opcode : lpread
--
--
-- * syntax :
--
-- > krmsr, krmso, kerr, kcps lpread ktimpnt, ifilcod [, inpoles] [, ifrmrate]
--
--
-- * description :
--
-- Reads a control file of time-ordered information frames.
--
--
-- * url : <http://www.csounds.com/manual/html/lpread.html>
lpread :: (K k0) => [Irate] -> k0 -> String -> MultiOut
lpread i0init k1timpnt s2file = opcode "lpread" args
where args = [to k1timpnt, to s2file] ++ map to i0init
-- | * opcode : lpreson
--
--
-- * syntax :
--
-- > ares lpreson asig
--
--
-- * description :
--
-- Resynthesises a signal from the data passed internally by a
-- previous lpread.
--
--
-- * url : <http://www.csounds.com/manual/html/lpreson.html>
lpreson :: Arate -> Arate
lpreson a0sig = opcode "lpreson" args
where args = [to a0sig]
-- | * opcode : lpslot
--
--
-- * syntax :
--
-- > lpslot islot
--
--
-- * description :
--
-- Selects the slot to be use by further lp opcodes.
--
--
-- * url : <http://www.csounds.com/manual/html/lpslot.html>
lpslot :: Irate -> SignalOut
lpslot i0slot = outOpcode "lpslot" args
where args = [to i0slot]