{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE EmptyDataDecls #-}
module Synthesizer.LLVM.Server.Packed.Instrument (
InputArg(..),
FrequencyControl,
Modulation,
DetuneModulation,
pingRelease,
pingStereoRelease,
pingStereoReleaseFM,
squareStereoReleaseFM,
bellStereoFM,
bellNoiseStereoFM,
tine,
tineStereo,
softString,
softStringFM,
tineStereoFM,
tineControlledFM,
fenderFM,
tineModulatorBankFM,
tineBankFM,
resonantFMSynth,
softStringDetuneFM,
softStringShapeFM, cosineStringStereoFM,
arcSineStringStereoFM, arcTriangleStringStereoFM,
arcSquareStringStereoFM, arcSawStringStereoFM,
fmStringStereoFM,
wind,
windPhaser,
filterSawStereoFM,
brass,
sampledSound,
stereoNoise,
frequencyFromBendModulation,
piecewiseConstantVector,
pingReleaseEnvelope,
adsr,
) where
import Synthesizer.LLVM.Server.CommonPacked
import Synthesizer.LLVM.Server.Common
import qualified Synthesizer.LLVM.Server.SampledSound as Sample
import qualified Synthesizer.LLVM.MIDI.BendModulation as BM
import qualified Synthesizer.LLVM.ConstantPiece as Const
import qualified Synthesizer.MIDI.PiecewiseConstant as PC
import qualified Synthesizer.MIDI.EventList as Ev
import Synthesizer.MIDI.Storable (chunkSizesFromLazyTime)
import qualified Synthesizer.LLVM.Frame.Stereo as Stereo
import qualified Synthesizer.LLVM.Filter.Universal as UniFilterL
import qualified Synthesizer.LLVM.Filter.Allpass as Allpass
import qualified Synthesizer.LLVM.Filter.Moog as MoogL
import qualified Synthesizer.LLVM.MIDI as MIDIL
import qualified Synthesizer.LLVM.Causal.Render as CausalRender
import qualified Synthesizer.LLVM.Causal.ControlledPacked as CtrlPS
import qualified Synthesizer.LLVM.Causal.ProcessPacked as CausalPS
import qualified Synthesizer.LLVM.Causal.Process as Causal
import qualified Synthesizer.LLVM.Causal.Functional as F
import qualified Synthesizer.LLVM.Generator.Render as Render
import qualified Synthesizer.LLVM.Generator.SignalPacked as SigPS
import qualified Synthesizer.LLVM.Generator.Signal as Sig
import qualified Synthesizer.LLVM.Storable.Signal as SigStL
import qualified Synthesizer.LLVM.Frame.SerialVector as Serial
import qualified Synthesizer.LLVM.Frame as Frame
import qualified Synthesizer.LLVM.Wave as WaveL
import Synthesizer.LLVM.Causal.Process (($<#), ($*), ($<), ($>))
import Synthesizer.LLVM.Causal.Functional (($&), (&|&))
import qualified LLVM.DSL.Expression as Expr
import qualified LLVM.Extra.Multi.Value as MultiValue
import LLVM.DSL.Expression (Exp)
import qualified LLVM.Extra.Arithmetic as A
import qualified LLVM.Core as LLVM
import qualified Type.Data.Num.Decimal as TypeNum
import qualified Synthesizer.Causal.Class as CausalClass
import qualified Synthesizer.Generic.Cut as CutG
import qualified Synthesizer.Storable.Signal as SigSt
import qualified Data.StorableVector.Lazy.Pattern as SVP
import qualified Data.StorableVector.Lazy as SVL
import qualified Synthesizer.Plain.Filter.Recursive.Universal as UniFilter
import qualified Control.Monad.HT as M
import Control.Arrow ((<<<), (^<<), (<<^), (&&&), (***), arr, first, second)
import Control.Category (id)
import Control.Applicative (liftA2, liftA3)
import qualified Data.Traversable as Trav
import Data.Traversable (traverse)
import Data.Semigroup ((<>))
import Data.Tuple.HT (fst3, snd3, thd3)
import qualified Numeric.NonNegative.Chunky as NonNegChunky
import qualified Algebra.Additive as Additive
import NumericPrelude.Numeric (zero, one, round, (^?), (+), (-), (*))
import Prelude hiding (Real, round, break, id, (+), (-), (*))
frequencyControl ::
(MultiValue.Field a, MultiValue.RationalConstant a) =>
SampleRate (Exp a) ->
Sig.T (Const.T (MultiValue.T a)) ->
Sig.T (Const.T (MultiValue.T a))
frequencyControl :: forall a.
(Field a, RationalConstant a) =>
SampleRate (Exp a) -> T (T (T a)) -> T (T (T a))
frequencyControl SampleRate (Exp a)
sr T (T (T a))
xs = (Exp a -> Exp a) -> T (T (T a)) (T (T a))
forall a am b bm.
(Aggregate a am, Aggregate b bm) =>
(a -> b) -> T (T am) (T bm)
Const.causalMap (SampleRate (Exp a) -> Exp a -> Exp a
forall a. C a => SampleRate a -> a -> a
frequency SampleRate (Exp a)
sr) T (T (T a)) (T (T a))
-> SignalOf T (T (T a)) -> SignalOf T (T (T a))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* SignalOf T (T (T a))
T (T (T a))
xs
data FrequencyControl a
instance
(a ~ Exp b, MultiValue.Field b, MultiValue.RationalConstant b) =>
Input (FrequencyControl b) a where
data InputArg (FrequencyControl b) a =
FrequencyControl (Sig.T (Const.T (MultiValue.T b)))
type InputSource (FrequencyControl b) a =
Sig.T (Const.T (MultiValue.T b))
evalInput :: SampleRate a
-> InputSource (FrequencyControl b) a
-> InputArg (FrequencyControl b) a
evalInput SampleRate a
sampleRate =
T (T (T b)) -> InputArg (FrequencyControl b) a
forall b a. T (T (T b)) -> InputArg (FrequencyControl b) a
FrequencyControl (T (T (T b)) -> InputArg (FrequencyControl b) a)
-> (T (T (T b)) -> T (T (T b)))
-> T (T (T b))
-> InputArg (FrequencyControl b) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SampleRate (Exp b) -> T (T (T b)) -> T (T (T b))
forall a.
(Field a, RationalConstant a) =>
SampleRate (Exp a) -> T (T (T a)) -> T (T (T a))
frequencyControl SampleRate a
SampleRate (Exp b)
sampleRate
modulation ::
(MultiValue.Field a, MultiValue.RationalConstant a) =>
SampleRate (Exp a) ->
(Sig.T (Const.T (MultiValue.T (BM.T a))), Exp a) ->
Sig.T (Const.T (BM.T (MultiValue.T a)))
modulation :: forall a.
(Field a, RationalConstant a) =>
SampleRate (Exp a) -> (T (T (T (T a))), Exp a) -> T (T (T (T a)))
modulation SampleRate (Exp a)
sr (T (T (T (T a)))
fm,Exp a
freq) =
SampleRate (Exp a) -> Exp a -> T (T (T (T a))) -> T (T (T (T a)))
forall a am.
(C a, Aggregate a am) =>
SampleRate a -> a -> T (T (T am)) -> T (T (T am))
transposeModulation SampleRate (Exp a)
sr Exp a
freq ((T (T a) -> T (T a)) -> T (T (T a)) -> T (T (T a))
forall a b. (a -> b) -> T a -> T b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap T (T a) -> T (T a)
forall a. T (T a) -> T (T a)
BM.unMultiValue (T (T (T a)) -> T (T (T a))) -> T (T (T (T a))) -> T (T (T (T a)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> T (T (T (T a)))
fm)
data Modulation a
instance
(a ~ Exp b, MultiValue.Field b, MultiValue.RationalConstant b) =>
Input (Modulation b) a where
data InputArg (Modulation b) a =
Modulation (Sig.T (Const.T (BM.T (MultiValue.T b))))
type InputSource (Modulation b) a =
(Sig.T (Const.T (MultiValue.T (BM.T b))), Exp b)
evalInput :: SampleRate a
-> InputSource (Modulation b) a -> InputArg (Modulation b) a
evalInput SampleRate a
sampleRate (T (T (T (T b)))
fm,Exp b
freq) =
T (T (T (T b))) -> InputArg (Modulation b) a
forall b a. T (T (T (T b))) -> InputArg (Modulation b) a
Modulation (T (T (T (T b))) -> InputArg (Modulation b) a)
-> T (T (T (T b))) -> InputArg (Modulation b) a
forall a b. (a -> b) -> a -> b
$ SampleRate (Exp b) -> (T (T (T (T b))), Exp b) -> T (T (T (T b)))
forall a.
(Field a, RationalConstant a) =>
SampleRate (Exp a) -> (T (T (T (T a))), Exp a) -> T (T (T (T a)))
modulation SampleRate a
SampleRate (Exp b)
sampleRate (T (T (T (T b)))
fm,Exp b
freq)
detuneModulation ::
(MultiValue.Field a, MultiValue.RationalConstant a) =>
SampleRate (Exp a) ->
(b, Sig.T (Const.T (MultiValue.T (BM.T a))), Exp a) ->
(b, Sig.T (Const.T (BM.T (MultiValue.T a))))
detuneModulation :: forall a b.
(Field a, RationalConstant a) =>
SampleRate (Exp a)
-> (b, T (T (T (T a))), Exp a) -> (b, T (T (T (T a))))
detuneModulation SampleRate (Exp a)
sr (b
det,T (T (T (T a)))
fm,Exp a
freq) =
(b
det, SampleRate (Exp a) -> Exp a -> T (T (T (T a))) -> T (T (T (T a)))
forall a am.
(C a, Aggregate a am) =>
SampleRate a -> a -> T (T (T am)) -> T (T (T am))
transposeModulation SampleRate (Exp a)
sr Exp a
freq ((T (T a) -> T (T a)) -> T (T (T a)) -> T (T (T a))
forall a b. (a -> b) -> T a -> T b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap T (T a) -> T (T a)
forall a. T (T a) -> T (T a)
BM.unMultiValue (T (T (T a)) -> T (T (T a))) -> T (T (T (T a))) -> T (T (T (T a)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> T (T (T (T a)))
fm))
data DetuneModulation a
instance
(a ~ Exp b, MultiValue.Field b, MultiValue.RationalConstant b) =>
Input (DetuneModulation b) a where
data InputArg (DetuneModulation b) a =
DetuneModulation
(Sig.T (Const.T (MultiValue.T b)),
Sig.T (Const.T (BM.T (MultiValue.T b))))
type InputSource (DetuneModulation b) a =
(Sig.T (Const.T (MultiValue.T b)),
Sig.T (Const.T (MultiValue.T (BM.T b))),
Exp b)
evalInput :: SampleRate a
-> InputSource (DetuneModulation b) a
-> InputArg (DetuneModulation b) a
evalInput SampleRate a
sampleRate (T (T (T b))
det,T (T (T (T b)))
fm,Exp b
freq) =
(T (T (T b)), T (T (T (T b)))) -> InputArg (DetuneModulation b) a
forall b a.
(T (T (T b)), T (T (T (T b)))) -> InputArg (DetuneModulation b) a
DetuneModulation ((T (T (T b)), T (T (T (T b)))) -> InputArg (DetuneModulation b) a)
-> (T (T (T b)), T (T (T (T b))))
-> InputArg (DetuneModulation b) a
forall a b. (a -> b) -> a -> b
$ SampleRate (Exp b)
-> (T (T (T b)), T (T (T (T b))), Exp b)
-> (T (T (T b)), T (T (T (T b))))
forall a b.
(Field a, RationalConstant a) =>
SampleRate (Exp a)
-> (b, T (T (T (T a))), Exp a) -> (b, T (T (T (T a))))
detuneModulation SampleRate a
SampleRate (Exp b)
sampleRate (T (T (T b))
det,T (T (T (T b)))
fm,Exp b
freq)
type RealValue = MultiValue.T Real
frequencyFromBendModulation ::
Exp Real ->
Sig.T (Const.T (BM.T RealValue)) ->
Sig.T VectorValue
frequencyFromBendModulation :: Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fmFreq =
Exp Real -> T (T RealValue) (Serial VectorSize Real)
forall n a.
(Vector n a, PseudoRing a, IntegerConstant a, Fraction a) =>
Exp a -> T (T (T a)) (Value n a)
MIDIL.frequencyFromBendModulationPacked Exp Real
speed T (T RealValue) (Serial VectorSize Real)
-> SignalOf T (T RealValue) -> SignalOf T (Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* T (T (T RealValue)) -> T (T RealValue)
forall a. C a => T (T a) -> T a
piecewiseConstant T (T (T RealValue))
fmFreq
stereoFrequenciesFromDetuneBendModulation ::
Exp Real ->
(Sig.T (Const.T RealValue), Sig.T (Const.T (BM.T RealValue))) ->
Sig.T (Stereo.T VectorValue)
stereoFrequenciesFromDetuneBendModulation :: Exp Real
-> (T (T RealValue), T (T (T RealValue)))
-> T (T (Serial VectorSize Real))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T (T RealValue)
det,T (T (T RealValue))
fm) =
(T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm)
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall a b c.
(a -> b -> c)
-> T (Serial VectorSize Real) a
-> T (Serial VectorSize Real) b
-> T (Serial VectorSize Real) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real)
forall a. a -> a -> T a
Stereo.cons (T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a
one T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a -> a -> a
+ T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id) (T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a
one T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a -> a -> a
- T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id)
T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
det
piecewiseConstantVector :: Sig.T (Const.T RealValue) -> Sig.T VectorValue
piecewiseConstantVector :: T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
xs =
T (T (Serial VectorSize Real)) -> T (Serial VectorSize Real)
forall a. C a => T (T a) -> T a
piecewiseConstant ((Exp Real -> Exp (T VectorSize Real))
-> T (T RealValue) (T (Serial VectorSize Real))
forall a am b bm.
(Aggregate a am, Aggregate b bm) =>
(a -> b) -> T (T am) (T bm)
Const.causalMap Exp Real -> Exp (T VectorSize Real)
forall n a. (Positive n, C a) => Exp a -> Exp (T n a)
Serial.upsample T (T RealValue) (T (Serial VectorSize Real))
-> SignalOf T (T RealValue)
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* SignalOf T (T RealValue)
T (T RealValue)
xs)
pingReleaseEnvelope ::
IO (Real -> Real ->
SigSt.ChunkSize ->
SampleRate Real -> Real -> Ev.LazyTime -> SigSt.T Vector)
pingReleaseEnvelope :: IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope =
((SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
-> (ChunkSize
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
-> IO
(ChunkSize
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real))
pressed ChunkSize
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real)
release Real
decay Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur ->
Vector (T VectorSize Real)
-> (Real -> Vector (T VectorSize Real))
-> Vector (T VectorSize Real)
forall n a.
(Positive n, Vector a) =>
Vector (T n a) -> (a -> Vector (T n a)) -> Vector (T n a)
SigStL.continuePacked
(T LazySize (Vector (T VectorSize Real))
-> LazyTime -> Vector (T VectorSize Real)
forall b.
Storable b =>
T LazySize (Vector b) -> LazyTime -> Vector b
pioApplyToLazyTime (SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real))
pressed SampleRate Real
sr Real
decay Real
vel) LazyTime
dur)
(\Real
x -> ChunkSize
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real)
release ChunkSize
vcsize SampleRate Real
sr Real
rel Real
x))
(DSL
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real))))
-> DSL
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real)))
-> (Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \(Time Exp Real
decay) (Number Exp Real
velocity) (SampleRate Exp Real
_sr) ->
SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall b a. SignalOf T b -> T a b
forall (process :: * -> * -> *) b a.
C process =>
SignalOf process b -> process a b
Causal.fromSignal
(Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
decay (Exp Real -> Exp Real
forall a. C a => a -> a
amplitudeFromVelocity Exp Real
velocity)))
(DSL (SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> IO
(Shape
(SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
forall f. Run f => DSL f -> IO (Shape f -> f)
Render.run (DSL
(SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> IO
(Shape
(SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real)))
-> DSL
(SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> IO
(Shape
(SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real)))
-> (Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \(Time Exp Real
releaseHL) (Number Exp Real
amplitude) (SampleRate Exp Real
_sr) ->
let releaseTime :: Exp Real
releaseTime = Exp Real
releaseHL Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
* Exp Real
5 Exp Real -> Exp Real -> Exp Real
forall a. Fractional a => a -> a -> a
/ Int -> Exp Real
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
vectorSize
in Exp Word -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. Exp Word -> T a a
Causal.take (Exp Real -> Exp Word
forall i ir a ar.
(NativeInteger i ir, NativeFloating a ar) =>
Exp a -> Exp i
Expr.roundToIntFast Exp Real
releaseTime) T (Serial VectorSize Real) (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
releaseHL Exp Real
amplitude)
pingRelease ::
IO (Real -> Real -> SigSt.ChunkSize -> Instrument Real Vector)
pingRelease :: IO
(Real -> Real -> ChunkSize -> Instrument Real (T VectorSize Real))
pingRelease =
((SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> ChunkSize
-> Instrument Real (T VectorSize Real))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real -> Real -> ChunkSize -> Instrument Real (T VectorSize Real))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T VectorSize Real))
-> Vector (T VectorSize Real) -> Vector (T VectorSize Real)
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real))
osc SampleRate Real
sr Real
freq) (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real))))
-> DSL
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ (Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)))
-> (Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \(Frequency Exp Real
freq) (SampleRate Exp Real
_sr) ->
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$> (forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n t y.
(Vector n t, PseudoRing t, Fraction t, IntegerConstant t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> Exp t -> Exp t -> T y
SigPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw Exp Real
forall a. C a => a
zero Exp Real
freq)
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
pingStereoRelease ::
IO (Real -> Real -> SigSt.ChunkSize -> Instrument Real (Stereo.T Vector))
pingStereoRelease :: IO
(Real
-> Real -> ChunkSize -> Instrument Real (T (T VectorSize Real)))
pingStereoRelease =
((SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> ChunkSize
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real -> ChunkSize -> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr Real
freq) (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ (Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Frequency Exp Real
freq) (SampleRate Exp Real
_sr) ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
(Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real))
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
-> T (T (Serial VectorSize Real))
forall a b c. (a -> b -> c) -> T a -> T b -> T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real)
forall a. a -> a -> T a
Stereo.cons
((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n t y.
(Vector n t, PseudoRing t, Fraction t, IntegerConstant t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> Exp t -> Exp t -> T y
SigPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw Exp Real
forall a. C a => a
zero (Exp Real
0.999Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
freq))
((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n t y.
(Vector n t, PseudoRing t, Fraction t, IntegerConstant t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> Exp t -> Exp t -> T y
SigPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw Exp Real
forall a. C a => a
zero (Exp Real
1.001Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
freq)))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
pingStereoReleaseFM ::
IO (Real -> Real ->
PC.T Real ->
PC.T Real ->
Real -> Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
pingStereoReleaseFM :: IO
(Real
-> Real
-> T Real
-> T Real
-> Real
-> Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
pingStereoReleaseFM =
((SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> T Real
-> T Real
-> Real
-> Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> T Real
-> T Real
-> Real
-> Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel T Real
detune T Real
shape Real
phase Real
phaseDecay ChunkSize
vcsize T (T Real)
fm
SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr (Real
phase, Real
phaseDecay) T Real
shape (T Real
detune, T (T Real)
fm, Real
freq))
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (Real, Real)
-> T Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
((Arg Number (Exp Real), Arg Time (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((Arg Number (Exp Real), Arg Time (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped (((Arg Number (Exp Real), Arg Time (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((Arg Number (Exp Real), Arg Time (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> ((Arg Number (Exp Real), Arg Time (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((Arg Number (Exp Real), Arg Time (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
\(Number Exp Real
phase, Time Exp Real
decay) (Control T (T RealValue)
shape) (DetuneModulation (T (T RealValue), T (T (T RealValue)))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
10 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
-> T (Serial VectorSize Real,
T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a b c.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
T (c, a) b -> T (c, T a) (T b)
Causal.stereoFromMonoControlled
((forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall n t c y.
(Positive n, C t, Fraction t) =>
(forall r. c -> Serial n t -> CodeGenFunction r y)
-> T (c, (Serial n t, Serial n t)) y
CausalPS.shapeModOsci Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(Field a, RationalConstant a, Real a) =>
a -> a -> CodeGenFunction r a
WaveL.rationalApproxSine1)
T (Serial VectorSize Real,
T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
shape)
T (T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
-> ((T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real))
-> T (T (Serial VectorSize Real), T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ (T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
forall a b. (T a, T b) -> T (a, b)
Stereo.interleave
T (T (Serial VectorSize Real), T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< ((Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall a b c.
(a -> b -> c)
-> T (Serial VectorSize Real) a
-> T (Serial VectorSize Real) b
-> T (Serial VectorSize Real) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real)
forall a. a -> a -> T a
Stereo.cons T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id (T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a -> a
Additive.negate T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id)
T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
decay Exp Real
phase)
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* Exp Real
-> (T (T RealValue), T (T (T RealValue)))
-> T (T (Serial VectorSize Real))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T (T RealValue), T (T (T RealValue)))
fm))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
squareStereoReleaseFM ::
IO (Real -> Real ->
PC.T Real ->
PC.T Real ->
PC.T Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
squareStereoReleaseFM :: IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
squareStereoReleaseFM =
((SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel T Real
detune T Real
shape T Real
phase ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr (T Real
phase, T Real
shape) (T Real
detune, T (T Real)
fm, Real
freq))
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped (((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> ((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Control T (T RealValue)
phs, Control T (T RealValue)
shp) (DetuneModulation (T (T RealValue), T (T (T RealValue)))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
10 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
(let chanOsci ::
Causal.T
((VectorValue, VectorValue), VectorValue)
VectorValue
chanOsci :: T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real)
chanOsci =
(((forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall n t c y.
(Positive n, C t, Fraction t) =>
(forall r. c -> Serial n t -> CodeGenFunction r y)
-> T (c, (Serial n t, Serial n t)) y
CausalPS.shapeModOsci Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(Field a, RationalConstant a, Real a) =>
a -> a -> CodeGenFunction r a
WaveL.rationalApproxSine1
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
forall b c d. T b c -> T (d, b) (d, c)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall b c d. T b c -> T (b, d) (c, d)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (b, d) (c, d)
first (T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a -> a
Additive.negate T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id)))
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall a. C a => a -> a -> a
-
(forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall n t c y.
(Positive n, C t, Fraction t) =>
(forall r. c -> Serial n t -> CodeGenFunction r y)
-> T (c, (Serial n t, Serial n t)) y
CausalPS.shapeModOsci Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(Field a, RationalConstant a, Real a) =>
a -> a -> CodeGenFunction r a
WaveL.rationalApproxSine1)
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
-> (((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
-> (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real)))
-> T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real)
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^
(\((Serial VectorSize Real
p,Serial VectorSize Real
s),Serial VectorSize Real
f) -> (Serial VectorSize Real
s,(Serial VectorSize Real
p,Serial VectorSize Real
f)))
in T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a b c.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
T (c, a) b -> T (c, T a) (T b)
Causal.stereoFromMonoControlled T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real)
chanOsci
T ((Serial VectorSize Real, Serial VectorSize Real),
T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real, Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< (Serial VectorSize Real
-> Serial VectorSize Real
-> (Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
forall a b c. (a -> b -> c) -> T a -> T b -> T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,)
(T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
phs)
(T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
shp))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* Exp Real
-> (T (T RealValue), T (T (T RealValue)))
-> T (T (Serial VectorSize Real))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T (T RealValue), T (T (T RealValue)))
fm)))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
type Triple a = (a, a, a)
bellStereoFM ::
IO (Real -> Real ->
PC.T Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
bellStereoFM :: IO
(Real
-> Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
bellStereoFM =
((SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel T Real
detune ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr (T Real
detune, T (T Real)
fm, Real
freq) Real
vel
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env (Real
decReal -> Real -> Real
forall a. Fractional a => a -> a -> a
/Real
4) Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur)
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env (Real
decReal -> Real -> Real
forall a. Fractional a => a -> a -> a
/Real
7) Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T (T Real), Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (DetuneModulation Real) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (DetuneModulation Real) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (DetuneModulation Real) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (DetuneModulation Real) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (DetuneModulation Real) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (DetuneModulation Real) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
\(DetuneModulation (T (T RealValue), T (T (T RealValue)))
fm) (Number Exp Real
vel) (Signal T (Serial VectorSize Real)
env4) (Signal T (Serial VectorSize Real)
env7) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
(let osci ::
(Triple VectorValue -> VectorValue) ->
Exp Real ->
Exp Real ->
Causal.T
(Triple VectorValue, Stereo.T VectorValue)
(Stereo.T VectorValue)
osci :: (Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(T (Serial VectorSize Real))
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
sel Exp Real
v Exp Real
d =
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(Serial VectorSize Real, T (Serial VectorSize Real))
-> T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
((Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real)) (Serial VectorSize Real)
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr Triple (Serial VectorSize Real) -> Serial VectorSize Real
sel T (Triple (Serial VectorSize Real)) (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(Serial VectorSize Real, T (Serial VectorSize Real))
forall b c b' c'. T b c -> T b' c' -> T (b, b') (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
***
(Exp Real
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (T (Serial n a)) (T (Serial n a))
CausalPS.amplifyStereo Exp Real
v
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono
((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, RationalConstant a, Real a) =>
a -> CodeGenFunction r a
WaveL.approxSine4 T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
Exp Real
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (T (Serial n a)) (T (Serial n a))
CausalPS.amplifyStereo Exp Real
d))
in T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
[T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(T (Serial VectorSize Real))]
-> T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. C a => [a] -> a
sumNested
[(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(T (Serial VectorSize Real))
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> a
fst3 Exp Real
0.6 Exp Real
1,
(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(T (Serial VectorSize Real))
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> b
snd3 (Exp Real
0.02 Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
* Exp Real
50Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
^?Exp Real
vel) Exp Real
4,
(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(T (Serial VectorSize Real))
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> c
thd3 (Exp Real
0.02 Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
* Exp Real
100Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
^?Exp Real
vel) Exp Real
7]
T (Triple (Serial VectorSize Real), T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Triple (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
SignalOf T (T (Serial VectorSize Real))
-> T (Triple (Serial VectorSize Real))
(Triple (Serial VectorSize Real), T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (b, a)
CausalClass.feedSnd
(Exp Real
-> (T (T RealValue), T (T (T RealValue)))
-> T (T (Serial VectorSize Real))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T (T RealValue), T (T (T RealValue)))
fm)
T (Triple (Serial VectorSize Real))
(Triple (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Triple (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Triple (Serial VectorSize Real), T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
((Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> Triple (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Triple (Serial VectorSize Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (\(Serial VectorSize Real
e1,(Serial VectorSize Real
e4,Serial VectorSize Real
e7)) -> (Serial VectorSize Real
e1,Serial VectorSize Real
e4,Serial VectorSize Real
e7))
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
(Serial VectorSize Real
-> Serial VectorSize Real
-> (Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
forall a b c. (a -> b -> c) -> T a -> T b -> T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) T (Serial VectorSize Real)
env4 T (Serial VectorSize Real)
env7))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
bellNoiseStereoFM ::
IO (Real -> Real ->
PC.T Real -> PC.T Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
bellNoiseStereoFM :: IO
(Real
-> Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
bellNoiseStereoFM =
((SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel T Real
noiseAmp T Real
noiseReson ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr (T (T Real)
fm, Real
freq) (T Real
noiseAmp, T Real
noiseReson) Real
vel
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env (Real
decReal -> Real -> Real
forall a. Fractional a => a -> a -> a
/Real
4) Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur)
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env (Real
decReal -> Real -> Real
forall a. Fractional a => a -> a -> a
/Real
7) Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T (T Real), Real)
-> (T Real, T Real)
-> Real
-> Vector (T VectorSize Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (Modulation Real) (Exp Real)
-> (InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T (MultiValuesOf (Exp Real)))) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> (InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T (MultiValuesOf (Exp Real)))) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Modulation Real) (Exp Real)
-> (InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T (MultiValuesOf (Exp Real)))) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> (InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T (MultiValuesOf (Exp Real)))) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (Modulation Real) (Exp Real)
-> (InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T (MultiValuesOf (Exp Real)))) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> (InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T (MultiValuesOf (Exp Real)))) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
\(Modulation T (T (T RealValue))
fm) (Control T (T RealValue)
noiseAmp, Control T (T (MultiValuesOf (Exp Real)))
noiseReson)
(Number Exp Real
vel) (Signal T (Serial VectorSize Real)
env4) (Signal T (Serial VectorSize Real)
env7) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
noiseReference Exp Real
20000 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
noiseRef ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
(let osci ::
(Triple VectorValue -> VectorValue) ->
Exp Real ->
Exp Real ->
Causal.T (Triple VectorValue, VectorValue) VectorValue
osci :: (Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
sel Exp Real
v Exp Real
d =
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
((Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real)) (Serial VectorSize Real)
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr Triple (Serial VectorSize Real) -> Serial VectorSize Real
sel T (Triple (Serial VectorSize Real)) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall b c b' c'. T b c -> T b' c' -> T (b, b') (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
***
(Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
v
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, RationalConstant a, Real a) =>
a -> CodeGenFunction r a
WaveL.approxSine4 T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
d))
noise ::
(Triple VectorValue -> VectorValue) ->
Exp Real ->
Causal.T (Triple VectorValue, VectorValue) VectorValue
noise :: (Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
noise Triple (Serial VectorSize Real) -> Serial VectorSize Real
sel Exp Real
d =
(T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
noiseAmp)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
((Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real)) (Serial VectorSize Real)
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr Triple (Serial VectorSize Real) -> Serial VectorSize Real
sel T (Triple (Serial VectorSize Real)) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall b c b' c'. T b c -> T b' c' -> T (b, b') (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
***
(
(T (Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)
(Serial VectorSize Real)
forall parameter a b. C parameter a b => T (parameter, a) b
CtrlPS.process T (Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
(Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$> Exp Word32 -> Exp Real -> T (Serial VectorSize Real)
forall n a ar.
(NativeFloating n a ar, PseudoRing a, IntegerConstant a,
Algebraic a, RationalConstant a, Positive n,
Positive (n :*: D32)) =>
Exp Word32 -> Exp a -> T (Serial n a)
SigPS.noise Exp Word32
12 Exp Real
noiseRef)
T (Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
(Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (MultiValuesOf (Exp Real), RealValue)
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
-> T (RealValue, (MultiValuesOf (Exp Real), RealValue))
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
forall b c a.
(C b, C c, IntegerConstant c, Additive c, Comparison c) =>
T a b -> T (T c, a) b
Causal.quantizeLift
((Exp Real -> Exp Real -> Parameter (Pos Dec8 EndDesc) (Exp Real))
-> T (MultiValuesOf (Exp Real), RealValue)
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
forall ae a be b ce c.
(Aggregate ae a, Aggregate be b, Aggregate ce c) =>
(ae -> be -> ce) -> T (a, b) c
Causal.zipWith (Proxy (Pos Dec8 EndDesc)
-> Exp Real -> Exp Real -> Parameter (Pos Dec8 EndDesc) (Exp Real)
forall n a. (Natural n, C a) => Proxy n -> a -> a -> Parameter n a
MoogL.parameter Proxy (Pos Dec8 EndDesc)
TypeNum.d8))
T (RealValue, (MultiValuesOf (Exp Real), RealValue))
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
-> Real
-> T (MultiValuesOf (Exp Real), RealValue)
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
forall (process :: * -> * -> *) a b c.
(C process, C a) =>
process (T a, b) c -> a -> process b c
$<# (Real
128 Real -> Real -> Real
forall a. Fractional a => a -> a -> a
/ Int -> Real
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
vectorSize :: Real))
T (MultiValuesOf (Exp Real), RealValue)
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
-> T (Serial VectorSize Real) (MultiValuesOf (Exp Real), RealValue)
-> T (Serial VectorSize Real)
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
SignalOf T (MultiValuesOf (Exp Real))
-> T RealValue (MultiValuesOf (Exp Real), RealValue)
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (a, b)
CausalClass.feedFst (T (T (MultiValuesOf (Exp Real))) -> T (MultiValuesOf (Exp Real))
forall a. C a => T (T a) -> T a
piecewiseConstant T (T (MultiValuesOf (Exp Real)))
noiseReson)
T RealValue (MultiValuesOf (Exp Real), RealValue)
-> T (Serial VectorSize Real) RealValue
-> T (Serial VectorSize Real) (MultiValuesOf (Exp Real), RealValue)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(Exp (T VectorSize Real) -> Exp Real)
-> T (Serial VectorSize Real) RealValue
forall ae a be b.
(Aggregate ae a, Aggregate be b) =>
(ae -> be) -> T a b
Causal.map Exp (T VectorSize Real) -> Exp Real
forall n a. (Positive n, C a) => Exp (T n a) -> Exp a
Serial.subsample
T (Serial VectorSize Real) RealValue
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) RealValue
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
d))
in (Serial VectorSize Real
-> Serial VectorSize Real -> T (T (T VectorSize Real)))
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(T (T (T VectorSize Real)))
forall a b c.
(a -> b -> c)
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real) a
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real) b
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (T (T VectorSize Real))
forall a. T a -> T a -> T (T a)
Stereo.consMultiValue
([T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)]
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
forall a. C a => [a] -> a
sumNested
[(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> a
fst3 Exp Real
0.6 (Exp Real
1Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
0.999),
(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> b
snd3 (Exp Real
0.02 Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
* Exp Real
50Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
^?Exp Real
vel) (Exp Real
4Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
0.999),
(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> c
thd3 (Exp Real
0.02 Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
* Exp Real
100Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
^?Exp Real
vel) (Exp Real
7Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
0.999),
(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
noise Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> a
fst3 Exp Real
0.999])
([T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)]
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
forall a. C a => [a] -> a
sumNested
[(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> a
fst3 Exp Real
0.6 (Exp Real
1Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
1.001),
(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> b
snd3 (Exp Real
0.02 Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
* Exp Real
50Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
^?Exp Real
vel) (Exp Real
4Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
1.001),
(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> Exp Real
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
osci Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> c
thd3 (Exp Real
0.02 Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
* Exp Real
100Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
^?Exp Real
vel) (Exp Real
7Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
1.001),
(Triple (Serial VectorSize Real) -> Serial VectorSize Real)
-> Exp Real
-> T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(Serial VectorSize Real)
noise Triple (Serial VectorSize Real) -> Serial VectorSize Real
forall a b c. (a, b, c) -> a
fst3 Exp Real
1.001])
T (Triple (Serial VectorSize Real), Serial VectorSize Real)
(T (T (T VectorSize Real)))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Triple (Serial VectorSize Real), Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
SignalOf T (Serial VectorSize Real)
-> T (Triple (Serial VectorSize Real))
(Triple (Serial VectorSize Real), Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (b, a)
CausalClass.feedSnd (Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm)
T (Triple (Serial VectorSize Real))
(Triple (Serial VectorSize Real), Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Triple (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Triple (Serial VectorSize Real), Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
((Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> Triple (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Triple (Serial VectorSize Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (\(Serial VectorSize Real
e1,(Serial VectorSize Real
e4,Serial VectorSize Real
e7)) -> (Serial VectorSize Real
e1,Serial VectorSize Real
e4,Serial VectorSize Real
e7))
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
(Serial VectorSize Real
-> Serial VectorSize Real
-> (Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
forall a b c. (a -> b -> c) -> T a -> T b -> T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) T (Serial VectorSize Real)
env4 T (Serial VectorSize Real)
env7))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
tine :: IO (Real -> Real -> SigSt.ChunkSize -> Instrument Real Vector)
tine :: IO
(Real -> Real -> ChunkSize -> Instrument Real (T VectorSize Real))
tine =
((SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> ChunkSize
-> Instrument Real (T VectorSize Real))
-> IO
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real -> Real -> ChunkSize -> Instrument Real (T VectorSize Real))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T VectorSize Real))
-> Vector (T VectorSize Real) -> Vector (T VectorSize Real)
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real))
osc SampleRate Real
sr Real
vel Real
freq) (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
0 LazyTime
dur))
(DSL
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real))))
-> DSL
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)))
-> (Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
vel) (Frequency Exp Real
freq) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
time Exp Real
1 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ \Exp Real
halfLife SampleRate (Exp Real)
_sr ->
(T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$> Exp Real -> T (Serial VectorSize Real)
forall n a. Vector n a => Exp a -> T (Serial n a)
SigPS.constant Exp Real
freq
T (Serial VectorSize Real) (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* (T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife (Exp Real
velExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
+Exp Real
1)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* (forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n t y.
(Vector n t, PseudoRing t, Fraction t, IntegerConstant t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> Exp t -> Exp t -> T y
SigPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 Exp Real
forall a. C a => a
zero (Exp Real
2Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
freq)))))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
tineStereo ::
IO (Real -> Real -> SigSt.ChunkSize -> Instrument Real (Stereo.T Vector))
tineStereo :: IO
(Real
-> Real -> ChunkSize -> Instrument Real (T (T VectorSize Real)))
tineStereo =
((SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> ChunkSize
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real -> ChunkSize -> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr Real
vel Real
freq) (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
0 LazyTime
dur))
(DSL
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
vel) (Frequency Exp Real
freq) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
time Exp Real
1 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
halfLife SampleRate (Exp Real)
_sr ->
(let chanOsci :: Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
chanOsci Exp Real
d =
(forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$> Exp Real -> T (Serial VectorSize Real)
forall n a. Vector n a => Exp a -> T (Serial n a)
SigPS.constant (Exp Real
freqExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
d)
in T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall a b c.
(a -> b -> c)
-> T (Serial VectorSize Real) a
-> T (Serial VectorSize Real) b
-> T (Serial VectorSize Real) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real)
forall a. a -> a -> T a
Stereo.cons (Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
chanOsci Exp Real
0.995) (Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
chanOsci Exp Real
1.005)
T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* (Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife (Exp Real
velExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
+Exp Real
1) T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
*
(forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n t y.
(Vector n t, PseudoRing t, Fraction t, IntegerConstant t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> Exp t -> Exp t -> T y
SigPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 Exp Real
forall a. C a => a
zero (Exp Real
2Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*Exp Real
freq)))))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
softStringReleaseEnvelope ::
IO (Real -> SampleRate Real -> Real -> Ev.LazyTime -> SigSt.T Vector)
softStringReleaseEnvelope :: IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
softStringReleaseEnvelope =
((Vector (T VectorSize Real) -> Vector (T VectorSize Real))
-> (SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))
-> Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO (Vector (T VectorSize Real) -> Vector (T VectorSize Real))
-> IO
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))
-> IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\Vector (T VectorSize Real) -> Vector (T VectorSize Real)
rev SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real))
env Real
attackTime SampleRate Real
sr Real
vel LazyTime
dur ->
let attackTimeVector :: Word
attackTimeVector :: Word
attackTimeVector = Real -> Word
forall b. C b => Real -> b
forall a b. (C a, C b) => a -> b
round (Real
attackTime Real -> Real -> Real
forall a. C a => a -> a -> a
* SampleRate Real -> Real
forall a. C a => SampleRate a -> a
vectorRate SampleRate Real
sr)
(Vector (T VectorSize Real)
attack, Vector (T VectorSize Real)
sustain) =
Int
-> Vector (T VectorSize Real)
-> (Vector (T VectorSize Real), Vector (T VectorSize Real))
forall a. Storable a => Int -> Vector a -> (Vector a, Vector a)
SigSt.splitAt (Word -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word
attackTimeVector) (Vector (T VectorSize Real)
-> (Vector (T VectorSize Real), Vector (T VectorSize Real)))
-> Vector (T VectorSize Real)
-> (Vector (T VectorSize Real), Vector (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$
T LazySize (Vector (T VectorSize Real))
-> LazyTime -> Vector (T VectorSize Real)
forall b.
Storable b =>
T LazySize (Vector b) -> LazyTime -> Vector b
pioApplyToLazyTime
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real))
env SampleRate Real
sr (Real -> Real
forall a. C a => a -> a
amplitudeFromVelocity Real
vel) Word
attackTimeVector)
LazyTime
dur
release :: Vector (T VectorSize Real)
release = Vector (T VectorSize Real) -> Vector (T VectorSize Real)
rev Vector (T VectorSize Real)
attack
in Vector (T VectorSize Real)
attack Vector (T VectorSize Real)
-> Vector (T VectorSize Real) -> Vector (T VectorSize Real)
forall a. Semigroup a => a -> a -> a
<> Vector (T VectorSize Real)
sustain Vector (T VectorSize Real)
-> Vector (T VectorSize Real) -> Vector (T VectorSize Real)
forall a. Semigroup a => a -> a -> a
<> Vector (T VectorSize Real)
release)
IO (Vector (T VectorSize Real) -> Vector (T VectorSize Real))
forall n a v.
(Positive n, Vector a, v ~ T n a) =>
IO (Vector v -> Vector v)
SigStL.makeReversePacked
(DSL
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real))))
-> DSL
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Word -> T LazySize (Vector (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> InputArg (Parameter (Exp Word)) (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Parameter (Exp Word)) (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> InputArg (Parameter (Exp Word)) (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Parameter (Exp Word)) (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real)))
-> (Arg Number (Exp Real)
-> InputArg (Parameter (Exp Word)) (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Parameter (Exp Word)) (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
amp) (Parameter Exp Word
attackTimeVector) (SampleRate Exp Real
_sr) ->
SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall b a. SignalOf T b -> T a b
forall (process :: * -> * -> *) b a.
C process =>
SignalOf process b -> process a b
Causal.fromSignal (SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$
(SignalOf T (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
forall a. Semigroup a => a -> a -> a
<> Exp Real -> T (Serial VectorSize Real)
forall n a. Vector n a => Exp a -> T (Serial n a)
SigPS.constant Exp Real
amp) (SignalOf T (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$
(Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
amp T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
Exp Word -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. Exp Word -> T a a
Causal.take Exp Word
attackTimeVector
T (Serial VectorSize Real) (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Field a, IntegerConstant a, RationalConstant a) =>
Exp a -> T (Serial n a)
SigPS.parabolaFadeInInf
(Int -> Exp Real
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
vectorSize Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
*
Exp Word -> Exp Real
forall i ir a ar.
(NativeInteger i ir, NativeFloating a ar) =>
Exp i -> Exp a
Expr.fromIntegral Exp Word
attackTimeVector)))
softString :: IO (Instrument Real (Stereo.T Vector))
softString :: IO (Instrument Real (T (T VectorSize Real)))
softString =
((SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO (Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr Real
freq) (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
1 SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Frequency Exp Real
freq) (SampleRate Exp Real
_sr) ->
let osci :: Exp Real -> T (Serial VectorSize Real)
osci Exp Real
d = (forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n t y.
(Vector n t, PseudoRing t, Fraction t, IntegerConstant t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> Exp t -> Exp t -> T y
SigPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw Exp Real
forall a. C a => a
zero (Exp Real
d Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
* Exp Real
freq)
in T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real))
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
-> T (T (Serial VectorSize Real))
forall a b c. (a -> b -> c) -> T a -> T b -> T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real)
forall a. a -> a -> T a
Stereo.cons
(Exp Real -> T (Serial VectorSize Real)
osci Exp Real
1.005 T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
+ Exp Real -> T (Serial VectorSize Real)
osci Exp Real
0.998)
(Exp Real -> T (Serial VectorSize Real)
osci Exp Real
1.002 T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
+ Exp Real -> T (Serial VectorSize Real)
osci Exp Real
0.995)))
IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
softStringReleaseEnvelope
softStringFM :: IO (PC.T (BM.T Real) -> Instrument Real (Stereo.T Vector))
softStringFM :: IO (T (T Real) -> Instrument Real (T (T VectorSize Real)))
softStringFM =
((SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO (T (T Real) -> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr (T (T Real)
fm, Real
freq)) (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
1 SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Modulation T (T (T RealValue))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
let osci :: Exp t -> T (Serial n t) (Serial n t)
osci Exp t
d = ((forall r. Serial n t -> CodeGenFunction r (Serial n t))
-> T (Serial n t, Serial n t) (Serial n t)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial n t -> CodeGenFunction r (Serial n t)
forall r. Serial n t -> CodeGenFunction r (Serial n t)
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw T (Serial n t, Serial n t) (Serial n t)
-> SignalOf T (Serial n t) -> T (Serial n t) (Serial n t)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial n t)
T (Serial n t)
forall a. C a => a
zero) T (Serial n t) (Serial n t)
-> T (Serial n t) (Serial n t) -> T (Serial n t) (Serial n t)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<< Exp t -> T (Serial n t) (Serial n t)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp t
d
in T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
(T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall a b c.
(a -> b -> c)
-> T (Serial VectorSize Real) a
-> T (Serial VectorSize Real) b
-> T (Serial VectorSize Real) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real)
forall a. a -> a -> T a
Stereo.cons
(Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {t} {n}.
(C t, Fraction t, Positive n, PseudoRing t, IntegerConstant t) =>
Exp t -> T (Serial n t) (Serial n t)
osci Exp Real
1.005 T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a -> a -> a
+ Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {t} {n}.
(C t, Fraction t, Positive n, PseudoRing t, IntegerConstant t) =>
Exp t -> T (Serial n t) (Serial n t)
osci Exp Real
0.998)
(Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {t} {n}.
(C t, Fraction t, Positive n, PseudoRing t, IntegerConstant t) =>
Exp t -> T (Serial n t) (Serial n t)
osci Exp Real
1.002 T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a -> a -> a
+ Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {t} {n}.
(C t, Fraction t, Positive n, PseudoRing t, IntegerConstant t) =>
Exp t -> T (Serial n t) (Serial n t)
osci Exp Real
0.995)
T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm)))
IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
softStringReleaseEnvelope
tineStereoFM ::
IO (Real -> Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
tineStereoFM :: IO
(Real
-> Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
tineStereoFM =
((SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr Real
vel (T (T Real)
fm, Real
freq)) (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
0 LazyTime
dur))
(DSL
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (Arg Number (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
vel) (Modulation T (T (T RealValue))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
time Exp Real
1 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
halfLife ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
(let chanOsci :: Exp t -> T (Serial n t, Serial n t) (Serial n t)
chanOsci Exp t
d =
(forall r. Serial n t -> CodeGenFunction r (Serial n t))
-> T (Serial n t, Serial n t) (Serial n t)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial n t -> CodeGenFunction r (Serial n t)
forall r. Serial n t -> CodeGenFunction r (Serial n t)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2
T (Serial n t, Serial n t) (Serial n t)
-> T (Serial n t, Serial n t) (Serial n t, Serial n t)
-> T (Serial n t, Serial n t) (Serial n t)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<< T (Serial n t) (Serial n t)
-> T (Serial n t, Serial n t) (Serial n t, Serial n t)
forall b c d. T b c -> T (d, b) (d, c)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (Exp t -> T (Serial n t) (Serial n t)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp t
d)
in T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(T (Serial VectorSize Real))
forall a b c.
(a -> b -> c)
-> T (Serial VectorSize Real, Serial VectorSize Real) a
-> T (Serial VectorSize Real, Serial VectorSize Real) b
-> T (Serial VectorSize Real, Serial VectorSize Real) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real)
forall a. a -> a -> T a
Stereo.cons (Exp Real
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall {t} {n}.
(C t, Positive n, PseudoRing t, IntegerConstant t, Fraction t) =>
Exp t -> T (Serial n t, Serial n t) (Serial n t)
chanOsci Exp Real
0.995) (Exp Real
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall {t} {n}.
(C t, Positive n, PseudoRing t, IntegerConstant t, Fraction t) =>
Exp t -> T (Serial n t, Serial n t) (Serial n t)
chanOsci Exp Real
1.005)
T (Serial VectorSize Real, Serial VectorSize Real)
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(((T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife (Exp Real
velExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
+Exp Real
1))
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<< ((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<< Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
2)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall b c c'. T b c -> T b c' -> T b (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id)
T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm)))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
_tineControlledProc, tineControlledFnProc ::
Sig.T (Const.T RealValue) ->
Sig.T (Const.T RealValue) ->
Exp Real ->
SampleRate (Exp Real) ->
Causal.T (Stereo.T VectorValue) (Stereo.T VectorValue)
_tineControlledProc :: T (T RealValue)
-> T (T RealValue)
-> Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
_tineControlledProc T (T RealValue)
index T (T RealValue)
depth Exp Real
vel = (SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
time Exp Real
1 ((Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \Exp Real
halfLife SampleRate (Exp Real)
_sr ->
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono ((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2)
T (T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real, Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
forall a b. (T a, T b) -> T (a, b)
Stereo.interleave
((T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real, Serial VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
(c -> d) -> a b c -> a b d
^<<
((T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
depth
T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
*
Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife (Exp Real
velExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
+Exp Real
1)))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono ((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
index))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real), T (Serial VectorSize Real))
forall b c c'. T b c -> T b c' -> T b (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id
tineControlledFnProc :: T (T RealValue)
-> T (T RealValue)
-> Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
tineControlledFnProc T (T RealValue)
index T (T RealValue)
depth Exp Real
vel = (SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
time Exp Real
1 ((Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \Exp Real
halfLife SampleRate (Exp Real)
_sr ->
Atom (T (Serial VectorSize Real))
-> (GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall pat inp out.
(MakeGuidedArguments pat, PatternArguments pat ~ inp) =>
pat -> (GuidedArguments (T inp) pat -> T inp out) -> T inp out
F.withGuidedArgs Atom (T (Serial VectorSize Real))
forall a. Atom a
F.atom ((GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> (GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
freq ->
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono ((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2)
T (T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real, Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$&
(T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real, Serial VectorSize Real))
forall a b c.
(a -> b -> c)
-> T (T (Serial VectorSize Real)) a
-> T (T (Serial VectorSize Real)) b
-> T (T (Serial VectorSize Real)) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 ((Serial VectorSize Real
-> Serial VectorSize Real
-> (Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
forall a b c. (a -> b -> c) -> T a -> T b -> T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,))
((T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
depth
T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
*
Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife (Exp Real
velExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
+Exp Real
1)))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono ((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
index)
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$&
GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
freq)
GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
freq
tineControlledFM ::
IO (Real -> Real ->
PC.T Real ->
PC.T Real -> PC.T Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
tineControlledFM :: IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
tineControlledFM =
((SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel T Real
detune T Real
index T Real
depth ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr (T Real
index, T Real
depth) Real
vel (T Real
detune, T (T Real)
fm, Real
freq))
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
0 LazyTime
dur))
(DSL
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped (((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> ((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Control T (T RealValue)
index, Control T (T RealValue)
depth)
(Number Exp Real
vel) (DetuneModulation (T (T RealValue), T (T (T RealValue)))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
(T (T RealValue)
-> T (T RealValue)
-> Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
tineControlledFnProc T (T RealValue)
index T (T RealValue)
depth Exp Real
vel SampleRate (Exp Real)
sr T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
Exp Real
-> (T (T RealValue), T (T (T RealValue)))
-> T (T (Serial VectorSize Real))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T (T RealValue), T (T (T RealValue)))
fm))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
fenderProc ::
Sig.T (Const.T RealValue) ->
Sig.T (Const.T RealValue) ->
Sig.T (Const.T RealValue) ->
Exp Real ->
SampleRate (Exp Real) ->
Causal.T (Stereo.T VectorValue) (Stereo.T VectorValue)
fenderProc :: T (T RealValue)
-> T (T RealValue)
-> T (T RealValue)
-> Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fenderProc T (T RealValue)
fade T (T RealValue)
index T (T RealValue)
depth Exp Real
vel = (SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
time Exp Real
1 ((Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \Exp Real
halfLife SampleRate (Exp Real)
_sr ->
Atom (T (Serial VectorSize Real))
-> (GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall pat inp out.
(MakeGuidedArguments pat, PatternArguments pat ~ inp) =>
pat -> (GuidedArguments (T inp) pat -> T inp out) -> T inp out
F.withGuidedArgs Atom (T (Serial VectorSize Real))
forall a. Atom a
F.atom ((GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> (GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
stereoFreq ->
let channel_n_1 ::
F.T VectorValue VectorValue ->
F.T VectorValue VectorValue
channel_n_1 :: T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
channel_n_1 T (Serial VectorSize Real) (Serial VectorSize Real)
freq =
(forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall b c a. T b c -> T a b -> T a c
$&
((T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
depth
T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
*
Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife (Exp Real
velExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
+Exp Real
1)))
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
index)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall b c a. T b c -> T a b -> T a c
$&
T (Serial VectorSize Real) (Serial VectorSize Real)
freq)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall a b c. T a b -> T a c -> T a (b, c)
&|&
T (Serial VectorSize Real) (Serial VectorSize Real)
freq
channel_1_2 ::
F.T VectorValue VectorValue ->
F.T VectorValue VectorValue
channel_1_2 :: T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
channel_1_2 T (Serial VectorSize Real) (Serial VectorSize Real)
freq =
(forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall b c a. T b c -> T a b -> T a c
$&
((T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
depth
T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
*
Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife (Exp Real
velExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
+Exp Real
1)))
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall b c a. T b c -> T a b -> T a c
$&
T (Serial VectorSize Real) (Serial VectorSize Real)
freq)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall a b c. T a b -> T a c -> T a (b, c)
&|&
(Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
2 T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall b c a. T b c -> T a b -> T a c
$& T (Serial VectorSize Real) (Serial VectorSize Real)
freq)
in (T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a b c.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
T (c, a) b -> T (c, T a) (T b)
Causal.stereoFromMonoControlled
(T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall v a.
(PseudoRing v, IntegerConstant v) =>
T a v -> T a v -> T (v, a) v
fadeProcess
(T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall inp out. T inp out -> T inp out
F.compile (T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
channel_n_1 (T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall inp out. T inp out -> T inp out
F.lift T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id)
(T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall inp out. T inp out -> T inp out
F.compile (T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
channel_1_2 (T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall inp out. T inp out -> T inp out
F.lift T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id))
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
fade)
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$&
GuidedArguments
(T (T (Serial VectorSize Real)))
(Atom (T (Serial VectorSize Real)))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
stereoFreq
fenderFM ::
IO (Real -> Real ->
PC.T Real ->
PC.T Real -> PC.T Real -> PC.T Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
fenderFM :: IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
fenderFM =
((SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel T Real
detune T Real
index T Real
depth T Real
fade ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr (T Real
index, T Real
depth) T Real
fade Real
vel (T Real
detune, T (T Real)
fm, Real
freq))
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
0 LazyTime
dur))
(DSL
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real)
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped (((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> ((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Control T (T RealValue)
index, Control T (T RealValue)
depth) (Control T (T RealValue)
fade)
(Number Exp Real
vel) (DetuneModulation (T (T RealValue), T (T (T RealValue)))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
(T (T RealValue)
-> T (T RealValue)
-> T (T RealValue)
-> Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fenderProc T (T RealValue)
fade T (T RealValue)
index T (T RealValue)
depth Exp Real
vel SampleRate (Exp Real)
sr T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
Exp Real
-> (T (T RealValue), T (T (T RealValue)))
-> T (T (Serial VectorSize Real))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T (T RealValue), T (T (T RealValue)))
fm))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
fmModulator ::
Exp Real ->
Exp Real ->
Sig.T (Const.T RealValue) ->
SampleRate (Exp Real) ->
Causal.T (Stereo.T VectorValue) (Stereo.T VectorValue)
fmModulator :: Exp Real
-> Exp Real
-> T (T RealValue)
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fmModulator Exp Real
vel Exp Real
n T (T RealValue)
depth = (SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
time Exp Real
1 ((Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \Exp Real
halfLife SampleRate (Exp Real)
_sr ->
(T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
depth
T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
*
Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife (Exp Real
velExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
+Exp Real
1)))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono ((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
Exp Real
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (T (Serial n a)) (T (Serial n a))
CausalPS.amplifyStereo Exp Real
n
tineModulatorBankFM ::
IO (Real -> Real ->
PC.T Real ->
PC.T Real -> PC.T Real -> PC.T Real -> PC.T Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
tineModulatorBankFM :: IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
tineModulatorBankFM =
((SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env
Real
dec Real
rel T Real
detune
T Real
depth1 T Real
depth2 T Real
depth3 T Real
depth4
ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr T Real
depth1 T Real
depth2 T Real
depth3 T Real
depth4 Real
vel (T Real
detune, T (T Real)
fm, Real
freq))
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
0 LazyTime
dur))
(DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
\(Control T (T RealValue)
depth1) (Control T (T RealValue)
depth2) (Control T (T RealValue)
depth3) (Control T (T RealValue)
depth4)
(Number Exp Real
vel) (DetuneModulation (T (T RealValue), T (T (T RealValue)))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
(T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
(T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono ((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2)
T (T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real, Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
forall a b. (T a, T b) -> T (a, b)
Stereo.interleave
((T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real, Serial VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
(c -> d) -> a b c -> a b d
^<<
[T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))]
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a. C a => [a] -> a
sumNested
[Exp Real
-> Exp Real
-> T (T RealValue)
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fmModulator Exp Real
vel Exp Real
1 T (T RealValue)
depth1 SampleRate (Exp Real)
sr,
Exp Real
-> Exp Real
-> T (T RealValue)
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fmModulator Exp Real
vel Exp Real
2 T (T RealValue)
depth2 SampleRate (Exp Real)
sr,
Exp Real
-> Exp Real
-> T (T RealValue)
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fmModulator Exp Real
vel Exp Real
3 T (T RealValue)
depth3 SampleRate (Exp Real)
sr,
Exp Real
-> Exp Real
-> T (T RealValue)
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fmModulator Exp Real
vel Exp Real
4 T (T RealValue)
depth4 SampleRate (Exp Real)
sr]
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real), T (Serial VectorSize Real))
forall b c c'. T b c -> T b c' -> T b (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
Exp Real
-> (T (T RealValue), T (T (T RealValue)))
-> T (T (Serial VectorSize Real))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T (T RealValue), T (T (T RealValue)))
fm)))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
tineBankFM ::
IO (Real -> Real ->
PC.T Real ->
PC.T Real -> PC.T Real -> PC.T Real -> PC.T Real ->
PC.T Real -> PC.T Real -> PC.T Real -> PC.T Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
tineBankFM :: IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
tineBankFM =
((SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env
Real
dec Real
rel T Real
detune
T Real
depth1 T Real
depth2 T Real
depth3 T Real
depth4
T Real
partial1 T Real
partial2 T Real
partial3 T Real
partial4
ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr T Real
depth1 T Real
depth2 T Real
depth3 T Real
depth4
T Real
partial1 T Real
partial2 T Real
partial3 T Real
partial4
Real
vel (T Real
detune, T (T Real)
fm, Real
freq))
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
0 LazyTime
dur))
(DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> T Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
\(Control T (T RealValue)
depth1) (Control T (T RealValue)
depth2) (Control T (T RealValue)
depth3) (Control T (T RealValue)
depth4)
(Control T (T RealValue)
partial1) (Control T (T RealValue)
partial2)
(Control T (T RealValue)
partial3) (Control T (T RealValue)
partial4)
(Number Exp Real
vel) (DetuneModulation (T (T RealValue), T (T (T RealValue)))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
sr ->
(let partial ::
VectorValue -> Int -> VectorValue ->
LLVM.CodeGenFunction r VectorValue
partial :: forall r.
Serial VectorSize Real
-> Int
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
partial Serial VectorSize Real
amp Int
n Serial VectorSize Real
t =
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r. PseudoRing a => a -> a -> CodeGenFunction r a
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
A.mul Serial VectorSize Real
amp (Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> CodeGenFunction r (Serial VectorSize Real)
-> CodeGenFunction r (Serial VectorSize Real)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<
(Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> Int
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall v r.
(Fraction v, PseudoRing v, IntegerConstant v) =>
(v -> CodeGenFunction r v) -> Int -> v -> CodeGenFunction r v
WaveL.partial Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 Int
n Serial VectorSize Real
t
in T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
(T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono
((forall r.
(Serial VectorSize Real,
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real)))
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T ((Serial VectorSize Real,
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))),
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall n t c y.
(Positive n, C t, Fraction t) =>
(forall r. c -> Serial n t -> CodeGenFunction r y)
-> T (c, (Serial n t, Serial n t)) y
CausalPS.shapeModOsci
(\(Serial VectorSize Real
p1,(Serial VectorSize Real
p2,(Serial VectorSize Real
p3,Serial VectorSize Real
p4))) Serial VectorSize Real
t -> do
Serial VectorSize Real
y1 <- Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r. PseudoRing a => a -> a -> CodeGenFunction r a
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
A.mul Serial VectorSize Real
p1 (Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> CodeGenFunction r (Serial VectorSize Real)
-> CodeGenFunction r (Serial VectorSize Real)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 Serial VectorSize Real
t
Serial VectorSize Real
y2 <- Serial VectorSize Real
-> Int
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> Int
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
partial Serial VectorSize Real
p2 Int
2 Serial VectorSize Real
t
Serial VectorSize Real
y3 <- Serial VectorSize Real
-> Int
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> Int
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
partial Serial VectorSize Real
p3 Int
3 Serial VectorSize Real
t
Serial VectorSize Real
y4 <- Serial VectorSize Real
-> Int
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> Int
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
partial Serial VectorSize Real
p4 Int
4 Serial VectorSize Real
t
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r. Additive a => a -> a -> CodeGenFunction r a
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
A.add Serial VectorSize Real
y1 (Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> CodeGenFunction r (Serial VectorSize Real)
-> CodeGenFunction r (Serial VectorSize Real)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r. Additive a => a -> a -> CodeGenFunction r a
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
A.add Serial VectorSize Real
y2 (Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> CodeGenFunction r (Serial VectorSize Real)
-> CodeGenFunction r (Serial VectorSize Real)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r. Additive a => a -> a -> CodeGenFunction r a
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
A.add Serial VectorSize Real
y3 Serial VectorSize Real
y4)
T ((Serial VectorSize Real,
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))),
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
-> SignalOf
T
(Serial VectorSize Real,
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real)))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$<
((Serial VectorSize Real
-> (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> (Serial VectorSize Real,
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf
T
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> SignalOf
T
(Serial VectorSize Real,
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real)))
forall a b c.
(a -> b -> c) -> SignalOf T a -> SignalOf T b -> SignalOf T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
partial1) (SignalOf
T
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> SignalOf
T
(Serial VectorSize Real,
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))))
-> SignalOf
T
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> SignalOf
T
(Serial VectorSize Real,
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
(Serial VectorSize Real
-> (Serial VectorSize Real, Serial VectorSize Real)
-> (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real)))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real, Serial VectorSize Real)
-> SignalOf
T
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
forall a b c.
(a -> b -> c) -> SignalOf T a -> SignalOf T b -> SignalOf T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
partial2) (SignalOf T (Serial VectorSize Real, Serial VectorSize Real)
-> SignalOf
T
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real)))
-> SignalOf T (Serial VectorSize Real, Serial VectorSize Real)
-> SignalOf
T
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$
(Serial VectorSize Real
-> Serial VectorSize Real
-> (Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
forall a b c. (a -> b -> c) -> T a -> T b -> T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
partial3)
(T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
partial4)))
T (T (Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real, Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
forall a b. (T a, T b) -> T (a, b)
Stereo.interleave
((T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real), T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real, Serial VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
(c -> d) -> a b c -> a b d
^<<
[T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))]
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a. C a => [a] -> a
sumNested
[Exp Real
-> Exp Real
-> T (T RealValue)
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fmModulator Exp Real
vel Exp Real
1 T (T RealValue)
depth1 SampleRate (Exp Real)
sr,
Exp Real
-> Exp Real
-> T (T RealValue)
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fmModulator Exp Real
vel Exp Real
2 T (T RealValue)
depth2 SampleRate (Exp Real)
sr,
Exp Real
-> Exp Real
-> T (T RealValue)
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fmModulator Exp Real
vel Exp Real
3 T (T RealValue)
depth3 SampleRate (Exp Real)
sr,
Exp Real
-> Exp Real
-> T (T RealValue)
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
fmModulator Exp Real
vel Exp Real
4 T (T RealValue)
depth4 SampleRate (Exp Real)
sr]
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real))
(T (Serial VectorSize Real), T (Serial VectorSize Real))
forall b c c'. T b c -> T b c' -> T b (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
Exp Real
-> (T (T RealValue), T (T (T RealValue)))
-> T (T (Serial VectorSize Real))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T (T RealValue), T (T (T RealValue)))
fm)))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
resonantFMSynthProc ::
Sig.T (Const.T RealValue) ->
Sig.T (Const.T RealValue) ->
Sig.T (Const.T RealValue) ->
Exp Real ->
SampleRate (Exp Real) ->
Causal.T (Stereo.T VectorValue) (Stereo.T VectorValue)
resonantFMSynthProc :: T (T RealValue)
-> T (T RealValue)
-> T (T RealValue)
-> Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
resonantFMSynthProc T (T RealValue)
reson T (T RealValue)
index T (T RealValue)
depth Exp Real
vel =
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
time Exp Real
1 ((Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \Exp Real
halfLife SampleRate (Exp Real)
_sr ->
T (Atom (Serial VectorSize Real))
-> (GuidedArguments
(T (T (Serial VectorSize Real)))
(T (Atom (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall pat inp out.
(MakeGuidedArguments pat, PatternArguments pat ~ inp) =>
pat -> (GuidedArguments (T inp) pat -> T inp out) -> T inp out
F.withGuidedArgs (Atom (Serial VectorSize Real)
-> Atom (Serial VectorSize Real)
-> T (Atom (Serial VectorSize Real))
forall a. a -> a -> T a
Stereo.cons Atom (Serial VectorSize Real)
forall a. Atom a
F.atom Atom (Serial VectorSize Real)
forall a. Atom a
F.atom) ((GuidedArguments
(T (T (Serial VectorSize Real)))
(T (Atom (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> (GuidedArguments
(T (T (Serial VectorSize Real)))
(T (Atom (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \GuidedArguments
(T (T (Serial VectorSize Real)))
(T (Atom (Serial VectorSize Real)))
stereoFreq ->
let chan :: F.T inp VectorValue -> F.T inp VectorValue
chan :: forall inp.
T inp (Serial VectorSize Real) -> T inp (Serial VectorSize Real)
chan T inp (Serial VectorSize Real)
freq =
(forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T inp (Serial VectorSize Real, Serial VectorSize Real)
-> T inp (Serial VectorSize Real)
forall b c a. T b c -> T a b -> T a c
$&
((T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
depth
T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
*
Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife (Exp Real
velExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
+Exp Real
1)))
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Parameter (MultiValuesOf (Exp Real)), Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Parameter (MultiValuesOf (Exp Real)), Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
Result (Serial VectorSize Real) -> Serial VectorSize Real
forall a. Result a -> a
UniFilter.lowpass
(Result (Serial VectorSize Real) -> Serial VectorSize Real)
-> T (Parameter (MultiValuesOf (Exp Real)), Serial VectorSize Real)
(Result (Serial VectorSize Real))
-> T (Parameter (MultiValuesOf (Exp Real)), Serial VectorSize Real)
(Serial VectorSize Real)
forall (a :: * -> * -> *) c d b.
Arrow a =>
(c -> d) -> a b c -> a b d
^<<
T (Parameter (MultiValuesOf (Exp Real)), Serial VectorSize Real)
(Result (Serial VectorSize Real))
forall parameter a b. C parameter a b => T (parameter, a) b
CtrlPS.process
T (Parameter (MultiValuesOf (Exp Real)), Serial VectorSize Real)
(Serial VectorSize Real)
-> T inp
(Parameter (MultiValuesOf (Exp Real)), Serial VectorSize Real)
-> T inp (Serial VectorSize Real)
forall b c a. T b c -> T a b -> T a c
$&
((Exp Real -> Exp Real -> Parameter (Exp Real))
-> T (RealValue, RealValue) (Parameter (MultiValuesOf (Exp Real)))
forall ae a be b ce c.
(Aggregate ae a, Aggregate be b, Aggregate ce c) =>
(ae -> be -> ce) -> T (a, b) c
Causal.zipWith Exp Real -> Exp Real -> Parameter (Exp Real)
forall a. C a => a -> a -> Parameter a
UniFilterL.parameter
T (RealValue, RealValue) (Parameter (MultiValuesOf (Exp Real)))
-> T (Serial VectorSize Real) (RealValue, RealValue)
-> T (Serial VectorSize Real)
(Parameter (MultiValuesOf (Exp Real)))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
SignalOf T RealValue -> T RealValue (RealValue, RealValue)
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (a, b)
CausalClass.feedFst (T (T RealValue) -> T RealValue
forall a. C a => T (T a) -> T a
piecewiseConstant T (T RealValue)
reson)
T RealValue (RealValue, RealValue)
-> T (Serial VectorSize Real) RealValue
-> T (Serial VectorSize Real) (RealValue, RealValue)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (RealValue, RealValue) RealValue
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (RealValue, RealValue) RealValue
-> SignalOf T RealValue -> T RealValue RealValue
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T RealValue
forall a. C a => T (T a) -> T a
piecewiseConstant T (T RealValue)
index)
T RealValue RealValue
-> T (Serial VectorSize Real) RealValue
-> T (Serial VectorSize Real) RealValue
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(Exp (T VectorSize Real) -> Exp Real)
-> T (Serial VectorSize Real) RealValue
forall ae a be b.
(Aggregate ae a, Aggregate be b) =>
(ae -> be) -> T a b
Causal.map Exp (T VectorSize Real) -> Exp Real
forall n a. (Positive n, C a) => Exp (T n a) -> Exp a
Serial.subsample
T (Serial VectorSize Real) (Parameter (MultiValuesOf (Exp Real)))
-> T inp (Serial VectorSize Real)
-> T inp (Parameter (MultiValuesOf (Exp Real)))
forall b c a. T b c -> T a b -> T a c
$&
T inp (Serial VectorSize Real)
freq)
T inp (Parameter (MultiValuesOf (Exp Real)))
-> T inp (Serial VectorSize Real)
-> T inp
(Parameter (MultiValuesOf (Exp Real)), Serial VectorSize Real)
forall a b c. T a b -> T a c -> T a (b, c)
&|&
(((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T inp (Serial VectorSize Real) -> T inp (Serial VectorSize Real)
forall b c a. T b c -> T a b -> T a c
$&
T inp (Serial VectorSize Real)
freq))
T inp (Serial VectorSize Real)
-> T inp (Serial VectorSize Real)
-> T inp (Serial VectorSize Real, Serial VectorSize Real)
forall a b c. T a b -> T a c -> T a (b, c)
&|&
T inp (Serial VectorSize Real)
freq
in (T (T (Serial VectorSize Real)) (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (Serial VectorSize Real))
-> T (T (T (Serial VectorSize Real)) (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> T a -> f (T b)
Trav.traverse T (T (Serial VectorSize Real)) (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (Serial VectorSize Real)
forall inp.
T inp (Serial VectorSize Real) -> T inp (Serial VectorSize Real)
chan T (T (T (Serial VectorSize Real)) (Serial VectorSize Real))
GuidedArguments
(T (T (Serial VectorSize Real)))
(T (Atom (Serial VectorSize Real)))
stereoFreq
resonantFMSynth ::
IO (Real -> Real ->
PC.T Real ->
PC.T Real -> PC.T Real -> PC.T Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
resonantFMSynth :: IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
resonantFMSynth =
((SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> T Real
-> T Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel T Real
detune T Real
reson T Real
index T Real
depth ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr (T Real
reson, T Real
index, T Real
depth) Real
vel (T Real
detune, T (T Real)
fm, Real
freq))
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
0 LazyTime
dur))
(DSL
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> (T Real, T Real, T Real)
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped (((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> ((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
((InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real),
InputArg (Control (T RealValue)) (Exp Real))
-> Arg Number (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
\(Control T (T RealValue)
reson, Control T (T RealValue)
index, Control T (T RealValue)
depth)
(Number Exp Real
vel) (DetuneModulation (T (T RealValue), T (T (T RealValue)))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
(T (T RealValue)
-> T (T RealValue)
-> T (T RealValue)
-> Exp Real
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
resonantFMSynthProc T (T RealValue)
reson T (T RealValue)
index T (T RealValue)
depth Exp Real
vel SampleRate (Exp Real)
sr T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
Exp Real
-> (T (T RealValue), T (T (T RealValue)))
-> T (T (Serial VectorSize Real))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T (T RealValue), T (T (T RealValue)))
fm))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
phaserOsci ::
(Exp Real -> Causal.T a VectorValue) ->
Causal.T a (Stereo.T VectorValue)
phaserOsci :: forall a.
(Exp Real -> T a (Serial VectorSize Real))
-> T a (T (Serial VectorSize Real))
phaserOsci Exp Real -> T a (Serial VectorSize Real)
osci =
Exp Real
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (T (Serial n a)) (T (Serial n a))
CausalPS.amplifyStereo Exp Real
0.25
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T a (T (Serial VectorSize Real))
-> T a (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real))
-> T a (Serial VectorSize Real)
-> T a (Serial VectorSize Real)
-> T a (T (Serial VectorSize Real))
forall a b c. (a -> b -> c) -> T a a -> T a b -> T a c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real)
forall a. a -> a -> T a
Stereo.cons
([T a (Serial VectorSize Real)] -> T a (Serial VectorSize Real)
forall a. C a => [a] -> a
sumNested ([T a (Serial VectorSize Real)] -> T a (Serial VectorSize Real))
-> [T a (Serial VectorSize Real)] -> T a (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ (Exp Real -> T a (Serial VectorSize Real))
-> [Exp Real] -> [T a (Serial VectorSize Real)]
forall a b. (a -> b) -> [a] -> [b]
map Exp Real -> T a (Serial VectorSize Real)
osci [Exp Real
1.0, -Exp Real
0.4, Exp Real
0.5, -Exp Real
0.7])
([T a (Serial VectorSize Real)] -> T a (Serial VectorSize Real)
forall a. C a => [a] -> a
sumNested ([T a (Serial VectorSize Real)] -> T a (Serial VectorSize Real))
-> [T a (Serial VectorSize Real)] -> T a (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ (Exp Real -> T a (Serial VectorSize Real))
-> [Exp Real] -> [T a (Serial VectorSize Real)]
forall a b. (a -> b) -> [a] -> [b]
map Exp Real -> T a (Serial VectorSize Real)
osci [Exp Real
0.4, -Exp Real
1.0, Exp Real
0.7, -Exp Real
0.5])
softStringDetuneFM ::
IO (Real ->
PC.T Real ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
softStringDetuneFM :: IO
(Real
-> T Real -> T (T Real) -> Instrument Real (T (T VectorSize Real)))
softStringDetuneFM =
((SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> T Real -> T (T Real) -> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
att T Real
det T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr T Real
det (T (T Real)
fm, Real
freq)) (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
att SampleRate Real
sr Real
vel LazyTime
dur))
(let osci :: Exp Real -> Causal.T (VectorValue, VectorValue) VectorValue
osci :: Exp Real
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
osci Exp Real
d =
((forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall b c d. T b c -> T (b, d) (c, d)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (b, d) (c, d)
first (T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a
one T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a -> a -> a
+ Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
d)
in DSL
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Control T (T RealValue)
det) (Modulation T (T (T RealValue))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
(T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((Exp Real
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(T (Serial VectorSize Real))
forall a.
(Exp Real -> T a (Serial VectorSize Real))
-> T a (T (Serial VectorSize Real))
phaserOsci Exp Real
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
osci
T (Serial VectorSize Real, Serial VectorSize Real)
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
det
T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm)))
IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
softStringReleaseEnvelope
softStringShapeFM, cosineStringStereoFM,
arcSineStringStereoFM, arcTriangleStringStereoFM,
arcSquareStringStereoFM, arcSawStringStereoFM ::
IO (Real ->
PC.T Real ->
PC.T Real ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
softStringShapeFM :: IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
softStringShapeFM =
(forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
softStringShapeCore Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(Field a, RationalConstant a, Real a) =>
a -> a -> CodeGenFunction r a
WaveL.rationalApproxSine1
cosineStringStereoFM :: IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
cosineStringStereoFM =
(forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
softStringShapeCore
(\Serial VectorSize Real
k Serial VectorSize Real
p -> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 (Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> CodeGenFunction r (Serial VectorSize Real)
-> CodeGenFunction r (Serial VectorSize Real)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, RationalConstant a, Fraction a) =>
a -> a -> CodeGenFunction r a
WaveL.replicate Serial VectorSize Real
k Serial VectorSize Real
p)
arcSawStringStereoFM :: IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
arcSawStringStereoFM = (forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
arcStringStereoFM Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw
arcSineStringStereoFM :: IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
arcSineStringStereoFM = (forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
arcStringStereoFM Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2
arcSquareStringStereoFM :: IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
arcSquareStringStereoFM = (forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
arcStringStereoFM Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.square
arcTriangleStringStereoFM :: IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
arcTriangleStringStereoFM = (forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
arcStringStereoFM Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, RationalConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.triangle
arcStringStereoFM ::
(forall r.
VectorValue ->
LLVM.CodeGenFunction r VectorValue) ->
IO (Real ->
PC.T Real ->
PC.T Real ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
arcStringStereoFM :: (forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
arcStringStereoFM forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
wave =
(forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
softStringShapeCore
(\Serial VectorSize Real
k Serial VectorSize Real
p ->
(Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> CodeGenFunction r (Serial VectorSize Real)
-> CodeGenFunction r (Serial VectorSize Real)
-> CodeGenFunction r (Serial VectorSize Real)
forall (m :: * -> *) a b c.
Monad m =>
(a -> b -> m c) -> m a -> m b -> m c
M.liftJoin2 Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r. PseudoRing a => a -> a -> CodeGenFunction r a
Frame.amplifyMono
(Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, RationalConstant a, Real a) =>
a -> CodeGenFunction r a
WaveL.approxSine4 (Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> CodeGenFunction r (Serial VectorSize Real)
-> CodeGenFunction r (Serial VectorSize Real)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, RationalConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.halfEnvelope Serial VectorSize Real
p)
(Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
wave (Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> CodeGenFunction r (Serial VectorSize Real)
-> CodeGenFunction r (Serial VectorSize Real)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, RationalConstant a, Fraction a) =>
a -> a -> CodeGenFunction r a
WaveL.replicate Serial VectorSize Real
k Serial VectorSize Real
p))
softStringShapeCore ::
(forall r.
VectorValue ->
VectorValue ->
LLVM.CodeGenFunction r VectorValue) ->
IO (Real ->
PC.T Real ->
PC.T Real ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
softStringShapeCore :: (forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
softStringShapeCore forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
wave =
((SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
att T Real
det T Real
dist T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr T Real
det T Real
dist (T (T Real)
fm, Real
freq)) (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
att SampleRate Real
sr Real
vel LazyTime
dur))
(let osci ::
Exp Real ->
Causal.T
(VectorValue,
(VectorValue, VectorValue)
)
VectorValue
osci :: Exp Real
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
osci Exp Real
d =
(forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall n t c y.
(Positive n, C t, Fraction t) =>
(forall r. c -> Serial n t -> CodeGenFunction r y)
-> T (c, (Serial n t, Serial n t)) y
CausalPS.shapeModOsci Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
wave
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
forall b c d. T b c -> T (d, b) (d, c)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second
(SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (a, b)
CausalClass.feedFst SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero
T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall b c d. T b c -> T (b, d) (c, d)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (b, d) (c, d)
first (T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a
one T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a -> a -> a
+ Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
d))
in DSL
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Control T (T RealValue)
det) (Control T (T RealValue)
dist) (Modulation T (T (T RealValue))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
(T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((Exp Real
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a.
(Exp Real -> T a (Serial VectorSize Real))
-> T a (T (Serial VectorSize Real))
phaserOsci Exp Real
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
osci
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
dist
T (Serial VectorSize Real, Serial VectorSize Real)
(T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
det
T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm)))
IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
softStringReleaseEnvelope
fmStringStereoFM ::
IO (Real ->
PC.T Real ->
PC.T Real ->
PC.T Real ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
fmStringStereoFM :: IO
(Real
-> T Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
fmStringStereoFM =
((SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> T Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
att T Real
det T Real
depth T Real
dist T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr T Real
det T Real
depth T Real
dist (T (T Real)
fm, Real
freq)) (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
att SampleRate Real
sr Real
vel LazyTime
dur))
(let osci ::
Exp Real ->
Causal.T
((VectorValue, VectorValue)
,
(VectorValue, VectorValue)
)
VectorValue
osci :: Exp Real
-> T ((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
osci Exp Real
d =
(forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real, Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real, Serial VectorSize Real)
forall b c d. T b c -> T (d, b) (d, c)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second
((forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall n t c y.
(Positive n, C t, Fraction t) =>
(forall r. c -> Serial n t -> CodeGenFunction r y)
-> T (c, (Serial n t, Serial n t)) y
CausalPS.shapeModOsci Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(Field a, RationalConstant a, Real a) =>
a -> a -> CodeGenFunction r a
WaveL.rationalApproxSine1
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<< T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
forall b c d. T b c -> T (d, b) (d, c)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (a, b)
CausalClass.feedFst SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero))
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real, Serial VectorSize Real)
-> (((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
-> (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real)))
-> T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^
(\((Serial VectorSize Real
dp, Serial VectorSize Real
ds), Serial VectorSize Real
f) -> (Serial VectorSize Real
dp, (Serial VectorSize Real
ds, Serial VectorSize Real
f))))
T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall b c c'. T b c -> T b c' -> T b (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& (((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
-> Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real)
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
-> Serial VectorSize Real
forall a b. (a, b) -> b
snd
T ((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real, Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T ((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
((Serial VectorSize Real, Serial VectorSize Real),
Serial VectorSize Real)
forall b c d. T b c -> T (d, b) (d, c)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<< T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall b c d. T b c -> T (b, d) (c, d)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (b, d) (c, d)
first (T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a
one T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a -> a -> a
+ Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
d))
in DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
\(Control T (T RealValue)
det) (Control T (T RealValue)
depth) (Control T (T RealValue)
dist) (Modulation T (T (T RealValue))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
(T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real)
(Serial VectorSize Real, T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real)
(Serial VectorSize Real, T (Serial VectorSize Real))
forall b c c'. T b c -> T b c' -> T b (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&&
((Exp Real
-> T ((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real))
-> T ((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a.
(Exp Real -> T a (Serial VectorSize Real))
-> T a (T (Serial VectorSize Real))
phaserOsci Exp Real
-> T ((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
osci
T ((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real)
((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
SignalOf T (Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (b, a)
CausalClass.feedSnd
((Serial VectorSize Real
-> Serial VectorSize Real
-> (Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
forall a b c. (a -> b -> c) -> T a -> T b -> T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,)
(T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
det)
(Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm))
T (Serial VectorSize Real, Serial VectorSize Real)
((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real)
((Serial VectorSize Real, Serial VectorSize Real),
(Serial VectorSize Real, Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (b, a)
CausalClass.feedSnd (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
dist)
T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
depth)))))
IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
softStringReleaseEnvelope
stereoNoise :: SampleRate (Exp Real) -> Sig.T (Stereo.T VectorValue)
stereoNoise :: SampleRate (Exp Real) -> T (T (Serial VectorSize Real))
stereoNoise =
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real) -> T (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
noiseReference Exp Real
20000 ((Exp Real
-> SampleRate (Exp Real) -> T (T (Serial VectorSize Real)))
-> SampleRate (Exp Real) -> T (T (Serial VectorSize Real)))
-> (Exp Real
-> SampleRate (Exp Real) -> T (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \Exp Real
noiseRef SampleRate (Exp Real)
_sr ->
(Exp Word32 -> T (Serial VectorSize Real))
-> T (Exp Word32) -> T (T (Serial VectorSize Real))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> T a -> f (T b)
traverse
(\Exp Word32
uid -> Exp Word32 -> Exp Real -> T (Serial VectorSize Real)
forall n a ar.
(NativeFloating n a ar, PseudoRing a, IntegerConstant a,
Algebraic a, RationalConstant a, Positive n,
Positive (n :*: D32)) =>
Exp Word32 -> Exp a -> T (Serial n a)
SigPS.noise Exp Word32
uid Exp Real
noiseRef)
(Exp Word32 -> Exp Word32 -> T (Exp Word32)
forall a. a -> a -> T a
Stereo.cons Exp Word32
13 Exp Word32
14)
windCore ::
Sig.T (Const.T RealValue) ->
Sig.T (Const.T (BM.T RealValue)) ->
SampleRate (Exp Real) ->
Sig.T (Stereo.T VectorValue)
windCore :: T (T RealValue)
-> T (T (T RealValue))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real))
windCore T (T RealValue)
reson T (T (T RealValue))
fm =
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real) -> T (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
0.2 ((Exp Real
-> SampleRate (Exp Real) -> T (T (Serial VectorSize Real)))
-> SampleRate (Exp Real) -> T (T (Serial VectorSize Real)))
-> (Exp Real
-> SampleRate (Exp Real) -> T (T (Serial VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
sr ->
T (Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a b c.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
T (c, a) b -> T (c, T a) (T b)
Causal.stereoFromMonoControlled T (Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)
(Serial VectorSize Real)
forall parameter a b. C parameter a b => T (parameter, a) b
CtrlPS.process
T (Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf
T (Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< ((Exp Real -> Exp Real -> Parameter (Pos Dec8 EndDesc) (Exp Real))
-> T (RealValue, RealValue)
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
forall ae a be b ce c.
(Aggregate ae a, Aggregate be b, Aggregate ce c) =>
(ae -> be -> ce) -> T (a, b) c
Causal.zipWith (Proxy (Pos Dec8 EndDesc)
-> Exp Real -> Exp Real -> Parameter (Pos Dec8 EndDesc) (Exp Real)
forall n a. (Natural n, C a) => Proxy n -> a -> a -> Parameter n a
MoogL.parameter Proxy (Pos Dec8 EndDesc)
TypeNum.d8)
T (RealValue, RealValue)
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
-> SignalOf T RealValue
-> T RealValue
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T RealValue
forall a. C a => T (T a) -> T a
piecewiseConstant T (T RealValue)
reson
T RealValue
(Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
-> SignalOf T RealValue
-> SignalOf
T (Parameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* ((Exp (T VectorSize Real) -> Exp Real)
-> T (Serial VectorSize Real) RealValue
forall ae a be b.
(Aggregate ae a, Aggregate be b) =>
(ae -> be) -> T a b
Causal.map Exp (T VectorSize Real) -> Exp Real
forall n a. (Positive n, C a) => Exp (T n a) -> Exp a
Serial.subsample T (Serial VectorSize Real) RealValue
-> SignalOf T (Serial VectorSize Real) -> SignalOf T RealValue
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* SampleRate (Exp Real) -> T (T (Serial VectorSize Real))
stereoNoise SampleRate (Exp Real)
sr
wind ::
IO (Real ->
PC.T Real ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
wind :: IO
(Real
-> T Real -> T (T Real) -> Instrument Real (T (T VectorSize Real)))
wind =
((SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> T Real -> T (T Real) -> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
att T Real
reson T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr T Real
reson (T (T Real)
fm, Real
freq)) (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
att SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Control T (T RealValue)
reson) (Modulation T (T (T RealValue))
fm) SampleRate (Exp Real)
sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$> T (T RealValue)
-> T (T (T RealValue))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real))
windCore T (T RealValue)
reson T (T (T RealValue))
fm SampleRate (Exp Real)
sr)
IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
softStringReleaseEnvelope
fadeProcess ::
(A.PseudoRing v, A.IntegerConstant v) =>
Causal.T a v ->
Causal.T a v ->
Causal.T (v, a) v
fadeProcess :: forall v a.
(PseudoRing v, IntegerConstant v) =>
T a v -> T a v -> T (v, a) v
fadeProcess T a v
proc0 T a v
proc1 =
let k :: T (c, b) c
k = ((c, b) -> c) -> T (c, b) c
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (c, b) -> c
forall a b. (a, b) -> a
fst
a0 :: T (v, a) v
a0 = T a v
proc0 T a v -> ((v, a) -> a) -> T (v, a) v
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ (v, a) -> a
forall a b. (a, b) -> b
snd
a1 :: T (v, a) v
a1 = T a v
proc1 T a v -> ((v, a) -> a) -> T (v, a) v
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ (v, a) -> a
forall a b. (a, b) -> b
snd
in (T (v, a) v
forall a. C a => a
oneT (v, a) v -> T (v, a) v -> T (v, a) v
forall a. C a => a -> a -> a
-T (v, a) v
forall {c} {b}. T (c, b) c
k)T (v, a) v -> T (v, a) v -> T (v, a) v
forall a. C a => a -> a -> a
*T (v, a) v
a0 T (v, a) v -> T (v, a) v -> T (v, a) v
forall a. C a => a -> a -> a
+ T (v, a) v
forall {c} {b}. T (c, b) c
kT (v, a) v -> T (v, a) v -> T (v, a) v
forall a. C a => a -> a -> a
*T (v, a) v
a1
windPhaser ::
IO (Real ->
PC.T Real ->
PC.T Real ->
PC.T Real ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
windPhaser :: IO
(Real
-> T Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
windPhaser =
((SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> T Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> T Real
-> T Real
-> T Real
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
att T Real
phaserMix T Real
phaserFreq T Real
reson T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr T Real
phaserMix T Real
phaserFreq T Real
reson (T (T Real)
fm, Real
freq))
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
att SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (FrequencyControl Real) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (FrequencyControl Real) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (FrequencyControl Real) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (FrequencyControl Real) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (FrequencyControl Real) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (FrequencyControl Real) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
\(Control T (T RealValue)
phaserMix) (FrequencyControl T (T RealValue)
phaserFreq)
(Control T (T RealValue)
reson) (Modulation T (T (T RealValue))
fm) SampleRate (Exp Real)
sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
(T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((T ((RealValue,
CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))),
Serial VectorSize Real)
(Serial VectorSize Real)
-> T ((RealValue,
CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))),
T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a b c.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
T (c, a) b -> T (c, T a) (T b)
Causal.stereoFromMonoControlled
(T (CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)
(Serial VectorSize Real)
-> T (CascadeParameter
(Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real,
(CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real))
(Serial VectorSize Real)
forall v a.
(PseudoRing v, IntegerConstant v) =>
T a v -> T a v -> T (v, a) v
fadeProcess (((CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)
-> Serial VectorSize Real)
-> T (CascadeParameter
(Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)
(Serial VectorSize Real)
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)
-> Serial VectorSize Real
forall a b. (a, b) -> b
snd) T (CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)
(Serial VectorSize Real)
forall parameter a b. C parameter a b => T (parameter, a) b
CtrlPS.process
T (Serial VectorSize Real,
(CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real))
(Serial VectorSize Real)
-> T ((RealValue,
CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))),
Serial VectorSize Real)
(Serial VectorSize Real,
(CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real))
-> T ((RealValue,
CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))),
Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T RealValue (Serial VectorSize Real)
-> T (RealValue,
(CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real))
(Serial VectorSize Real,
(CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real))
forall b c d. T b c -> T (b, d) (c, d)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (b, d) (c, d)
first ((Exp Real -> Exp (T VectorSize Real))
-> T RealValue (Serial VectorSize Real)
forall ae a be b.
(Aggregate ae a, Aggregate be b) =>
(ae -> be) -> T a b
Causal.map Exp Real -> Exp (T VectorSize Real)
forall n a. (Positive n, C a) => Exp a -> Exp (T n a)
Serial.upsample)
T (RealValue,
(CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real))
(Serial VectorSize Real,
(CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real))
-> (((RealValue,
CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))),
Serial VectorSize Real)
-> (RealValue,
(CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real)))
-> T ((RealValue,
CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))),
Serial VectorSize Real)
(Serial VectorSize Real,
(CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)),
Serial VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^
(\((RealValue
k,CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))
p),Serial VectorSize Real
x) -> (RealValue
k,(CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))
p,Serial VectorSize Real
x))))
T ((RealValue,
CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))),
T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> SignalOf
T
(RealValue,
CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< (RealValue
-> CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))
-> (RealValue,
CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))))
-> T RealValue
-> T (CascadeParameter
(Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
-> T (RealValue,
CascadeParameter (Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
forall a b c. (a -> b -> c) -> T a -> T b -> T c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,)
(T (T RealValue) -> T RealValue
forall a. C a => T (T a) -> T a
piecewiseConstant T (T RealValue)
phaserMix)
(T (T (CascadeParameter
(Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))))
-> T (CascadeParameter
(Pos Dec8 EndDesc) (MultiValuesOf (Exp Real)))
forall a. C a => T (T a) -> T a
piecewiseConstant
((Exp Real -> CascadeParameter (Pos Dec8 EndDesc) (Exp Real))
-> T (T RealValue)
(T (CascadeParameter
(Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))))
forall a am b bm.
(Aggregate a am, Aggregate b bm) =>
(a -> b) -> T (T am) (T bm)
Const.causalMap
(Proxy (Pos Dec8 EndDesc)
-> Exp Real -> CascadeParameter (Pos Dec8 EndDesc) (Exp Real)
forall a n.
(C a, Natural n) =>
Proxy n -> a -> CascadeParameter n a
Allpass.flangerParameter Proxy (Pos Dec8 EndDesc)
TypeNum.d8)
T (T RealValue)
(T (CascadeParameter
(Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))))
-> SignalOf T (T RealValue)
-> SignalOf
T
(T (CascadeParameter
(Pos Dec8 EndDesc) (MultiValuesOf (Exp Real))))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* SignalOf T (T RealValue)
T (T RealValue)
phaserFreq)))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
T (T RealValue)
-> T (T (T RealValue))
-> SampleRate (Exp Real)
-> T (T (Serial VectorSize Real))
windCore T (T RealValue)
reson T (T (T RealValue))
fm SampleRate (Exp Real)
sr)))
IO
(Real
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
softStringReleaseEnvelope
filterSawStereoFM ::
IO (Real -> Real ->
PC.T Real ->
Real -> Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
filterSawStereoFM :: IO
(Real
-> Real
-> T Real
-> Real
-> Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
filterSawStereoFM =
((SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> T Real
-> Real
-> Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> T Real
-> Real
-> Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel T Real
detune Real
bright Real
brightDecay ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr Real
bright Real
brightDecay (T Real
detune, T (T Real)
fm, Real
freq))
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(DSL
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> Real
-> (T Real, T (T Real), Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(Arg Frequency (Exp Real)
-> Arg Time (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> Arg Time (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Frequency (Exp Real)
-> Arg Time (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> Arg Time (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (Arg Frequency (Exp Real)
-> Arg Time (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> Arg Time (Exp Real)
-> InputArg (DetuneModulation Real) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Frequency Exp Real
bright) (Time Exp Real
brightDec) (DetuneModulation (T (T RealValue), T (T (T RealValue)))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
10 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
100 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
cutoff SampleRate (Exp Real)
_sr ->
(T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
(T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono
(Result (Serial VectorSize Real) -> Serial VectorSize Real
forall a. Result a -> a
UniFilter.lowpass
(Result (Serial VectorSize Real) -> Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Result (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall (a :: * -> * -> *) c d b.
Arrow a =>
(c -> d) -> a b c -> a b d
^<<
Exp Real
-> (Exp Real -> T (Parameter (MultiValuesOf (Exp Real))))
-> T (Serial VectorSize Real) (Result (Serial VectorSize Real))
forall parameter av bv n r.
(C parameter av bv, C parameter, Read av, n ~ Size av, Write bv,
n ~ Size bv, C r, RationalConstant r, Field r, Comparison r) =>
Exp r -> (Exp r -> T parameter) -> T av bv
CtrlPS.processCtrlRate Exp Real
100
(\Exp Real
k ->
(Exp Real -> Parameter (Exp Real))
-> T RealValue (Parameter (MultiValuesOf (Exp Real)))
forall ae a be b.
(Aggregate ae a, Aggregate be b) =>
(ae -> be) -> T a b
Causal.map (Exp Real -> Exp Real -> Parameter (Exp Real)
forall a. C a => a -> a -> Parameter a
UniFilterL.parameter Exp Real
10) T RealValue (Parameter (MultiValuesOf (Exp Real)))
-> SignalOf T RealValue
-> SignalOf T (Parameter (MultiValuesOf (Exp Real)))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
Exp Real -> Exp Real -> Exp Real -> T RealValue
forall a.
(C a, Real a, RationalConstant a, Transcendental a) =>
Exp a -> Exp a -> Exp a -> MV a
Sig.exponentialBounded2
Exp Real
cutoff (Exp Real
brightDecExp Real -> Exp Real -> Exp Real
forall a. Fractional a => a -> a -> a
/Exp Real
k) Exp Real
bright)
T (Serial VectorSize Real) (Result (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Result (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall n t y.
(Positive n, C t, Fraction t) =>
(forall r. Serial n t -> CodeGenFunction r y)
-> T (Serial n t, Serial n t) y
CausalPS.osci Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero)
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$* Exp Real
-> (T (T RealValue), T (T (T RealValue)))
-> T (T (Serial VectorSize Real))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T (T RealValue), T (T (T RealValue)))
fm)))
IO
(Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
pingReleaseEnvelope
adsr ::
IO (Real -> Real -> Real ->
Real -> Real ->
SigSt.ChunkSize ->
SampleRate Real -> Real -> Ev.LazyTime -> SigSt.T Vector)
adsr :: IO
(Real
-> Real
-> Real
-> Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
adsr =
((SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
-> (SampleRate Real
-> Real -> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
-> (ChunkSize
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> Real
-> Real
-> Real
-> Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real -> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
-> IO
(ChunkSize
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> Real
-> Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
forall (f :: * -> *) a b c d.
Applicative f =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
liftA3
(\SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real))
attack SampleRate Real
-> Real -> Real -> Real -> T LazySize (Vector (T VectorSize Real))
decay ChunkSize
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real)
release
Real
attackTime Real
attackPeak Real
attackHalfLife
Real
decayHalfLife Real
releaseHalfLife ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur ->
let amp :: Real
amp = Real -> Real
forall a. C a => a -> a
amplitudeFromVelocity Real
vel
(LazyTime
attackDur, LazyTime
decayDur) =
Int -> LazyTime -> (LazyTime, LazyTime)
forall sig. Transform sig => Int -> sig -> (sig, sig)
CutG.splitAt (Real -> Int
forall b. C b => Real -> b
forall a b. (C a, C b) => a -> b
round (Real
attackTime Real -> Real -> Real
forall a. C a => a -> a -> a
* SampleRate Real -> Real
forall a. C a => SampleRate a -> a
vectorRate SampleRate Real
sr)) LazyTime
dur
in Vector (T VectorSize Real)
-> (Real -> Vector (T VectorSize Real))
-> Vector (T VectorSize Real)
forall n a.
(Positive n, Vector a) =>
Vector (T n a) -> (a -> Vector (T n a)) -> Vector (T n a)
SigStL.continuePacked
(T LazySize (Vector (T VectorSize Real))
-> LazyTime -> Vector (T VectorSize Real)
forall b.
Storable b =>
T LazySize (Vector b) -> LazyTime -> Vector b
pioApplyToLazyTime
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real))
attack SampleRate Real
sr
Real
attackHalfLife
(Real
attackPeak Real -> Real -> Real
forall a. C a => a -> a -> a
* Real
amp Real -> Real -> Real
forall a. Fractional a => a -> a -> a
/ (Real
1 Real -> Real -> Real
forall a. C a => a -> a -> a
- Real
2Real -> Real -> Real
forall a. C a => a -> a -> a
^?(-Real
attackTimeReal -> Real -> Real
forall a. Fractional a => a -> a -> a
/Real
attackHalfLife))))
LazyTime
attackDur
Vector (T VectorSize Real)
-> Vector (T VectorSize Real) -> Vector (T VectorSize Real)
forall a. Semigroup a => a -> a -> a
<>
T LazySize (Vector (T VectorSize Real))
-> LazyTime -> Vector (T VectorSize Real)
forall b.
Storable b =>
T LazySize (Vector b) -> LazyTime -> Vector b
pioApplyToLazyTime
(SampleRate Real
-> Real -> Real -> Real -> T LazySize (Vector (T VectorSize Real))
decay SampleRate Real
sr
Real
decayHalfLife
((Real
attackPeakReal -> Real -> Real
forall a. C a => a -> a -> a
-Real
1)Real -> Real -> Real
forall a. C a => a -> a -> a
*Real
amp)
Real
amp)
LazyTime
decayDur)
(\Real
x -> ChunkSize
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real)
release ChunkSize
vcsize SampleRate Real
sr Real
releaseHalfLife Real
x))
(DSL
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real))))
-> DSL
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real)))
-> (Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \(Time Exp Real
halfLife) (Number Exp Real
amplitude) (SampleRate Exp Real
_sr) ->
SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall b a. SignalOf T b -> T a b
forall (process :: * -> * -> *) b a.
C process =>
SignalOf process b -> process a b
Causal.fromSignal (SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$
Exp Real -> T (Serial VectorSize Real)
forall n a. Vector n a => Exp a -> T (Serial n a)
SigPS.constant Exp Real
amplitude T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
- Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife Exp Real
amplitude)
(DSL
(SampleRate Real
-> Real -> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> Real
-> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> Real
-> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real -> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> Real
-> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> Real
-> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real
-> Real
-> Real
-> T LazySize (Vector (T VectorSize Real))))
-> DSL
(SampleRate Real
-> Real -> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> Real
-> Real
-> Real
-> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> Real
-> Real
-> Real
-> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> Real -> Real -> Real -> T LazySize (Vector (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ (Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real)))
-> (Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$
\(Time Exp Real
halfLife) (Number Exp Real
amplitude) (Number Exp Real
saturation)
(SampleRate Exp Real
_sr) ->
SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall b a. SignalOf T b -> T a b
forall (process :: * -> * -> *) b a.
C process =>
SignalOf process b -> process a b
Causal.fromSignal (SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$
Exp Real -> T (Serial VectorSize Real)
forall n a. Vector n a => Exp a -> T (Serial n a)
SigPS.constant Exp Real
saturation T (Serial VectorSize Real)
-> T (Serial VectorSize Real) -> T (Serial VectorSize Real)
forall a. C a => a -> a -> a
+ Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
halfLife Exp Real
amplitude)
(DSL (SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> IO
(Shape
(SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
forall f. Run f => DSL f -> IO (Shape f -> f)
Render.run (DSL
(SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> IO
(Shape
(SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real)))
-> DSL
(SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> IO
(Shape
(SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
-> SampleRate Real -> Real -> Real -> Vector (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real)))
-> (Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \(Time Exp Real
releaseHL) (Number Exp Real
amplitude) (SampleRate Exp Real
_sr) ->
let releaseTime :: Exp Real
releaseTime = Exp Real
releaseHL Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
* Exp Real
5 Exp Real -> Exp Real -> Exp Real
forall a. Fractional a => a -> a -> a
/ Int -> Exp Real
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
vectorSize
in Exp Word -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. Exp Word -> T a a
Causal.take (Exp Real -> Exp Word
forall i ir a ar.
(NativeInteger i ir, NativeFloating a ar) =>
Exp a -> Exp i
Expr.roundToIntFast Exp Real
releaseTime) T (Serial VectorSize Real) (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
Exp Real -> Exp Real -> T (Serial VectorSize Real)
forall n a.
(Vector n a, Transcendental a, RationalConstant a) =>
Exp a -> Exp a -> T (Serial n a)
SigPS.exponential2 Exp Real
releaseHL Exp Real
amplitude)
brass ::
IO (Real -> Real ->
Real -> Real -> Real -> Real ->
PC.T Real ->
PC.T Real ->
SigSt.ChunkSize ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
brass :: IO
(Real
-> Real
-> Real
-> Real
-> Real
-> Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
brass =
((SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (Real
-> Real
-> Real
-> Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> Real
-> Real
-> Real
-> Real
-> Real
-> Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(Real
-> Real
-> Real
-> Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
-> IO
(Real
-> Real
-> Real
-> Real
-> Real
-> Real
-> T Real
-> T Real
-> ChunkSize
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc Real
-> Real
-> Real
-> Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
attTime Real
attPeak Real
attHL
Real
dec Real
rel Real
emph T Real
det T Real
dist ChunkSize
vcsize T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr T Real
det T Real
dist (T (T Real)
fm, Real
freq)
(Real
-> Real
-> Real
-> Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
attTime Real
emph Real
attHL Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(Real
-> Real
-> Real
-> Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real)
env Real
attTime Real
attPeak Real
attHL Real
dec Real
rel ChunkSize
vcsize SampleRate Real
sr Real
vel LazyTime
dur))
(let osci ::
Exp Real ->
Causal.T
(VectorValue,
(VectorValue, VectorValue)
)
VectorValue
osci :: Exp Real
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
osci Exp Real
d =
(forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall n t c y.
(Positive n, C t, Fraction t) =>
(forall r. c -> Serial n t -> CodeGenFunction r y)
-> T (c, (Serial n t, Serial n t)) y
CausalPS.shapeModOsci Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall r.
Serial VectorSize Real
-> Serial VectorSize Real
-> CodeGenFunction r (Serial VectorSize Real)
forall a r.
(Field a, RationalConstant a, Real a) =>
a -> a -> CodeGenFunction r a
WaveL.rationalApproxSine1
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
forall b c d. T b c -> T (d, b) (d, c)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second
(SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (a, b)
CausalClass.feedFst SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
forall a. C a => a
zero
T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall b c d. T b c -> T (b, d) (c, d)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (b, d) (c, d)
first (T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a
one T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall a. C a => a -> a -> a
+ Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
d))
in DSL
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> T Real
-> T Real
-> (T (T Real), Real)
-> Vector (T VectorSize Real)
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Control (T RealValue)) (Exp Real)
-> InputArg (Modulation Real) (Exp Real)
-> InputArg (Signal (Serial VectorSize Real)) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
\(Control T (T RealValue)
det) (Control T (T RealValue)
dist) (Modulation T (T (T RealValue))
fm) (Signal T (Serial VectorSize Real)
emph) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
5 ((Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (Serial VectorSize Real, T (Serial VectorSize Real))
(T (T (T VectorSize Real)))
-> SignalOf T (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$>
((Exp Real
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real))
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
forall a.
(Exp Real -> T a (Serial VectorSize Real))
-> T a (T (Serial VectorSize Real))
phaserOsci Exp Real
-> T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(Serial VectorSize Real)
osci
T (Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
(T (Serial VectorSize Real))
-> T (Serial VectorSize Real)
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (a, b)
CausalClass.feedFst (T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
dist)
T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real,
(Serial VectorSize Real, Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (b, a)
CausalClass.feedSnd (Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm)
T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real)
(Serial VectorSize Real, Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (Serial VectorSize Real, Serial VectorSize Real)
(Serial VectorSize Real)
-> SignalOf T (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< T (T RealValue) -> T (Serial VectorSize Real)
piecewiseConstantVector T (T RealValue)
det)
T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> SignalOf T (T (Serial VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
process a b -> SignalOf process a -> SignalOf process b
$*
SignalOf T (Serial VectorSize Real)
T (Serial VectorSize Real)
emph))
IO
(Real
-> Real
-> Real
-> Real
-> Real
-> ChunkSize
-> SampleRate Real
-> Real
-> LazyTime
-> Vector (T VectorSize Real))
adsr
sampledSound ::
IO (Sample.T ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
sampledSound :: IO (T -> T (T Real) -> Instrument Real (T (T VectorSize Real)))
sampledSound =
((SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
-> T
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
-> IO (T -> T (T Real) -> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real))
freqMod T
smp T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
let fmSig :: SigSt.T Vector
fmSig :: Vector (T VectorSize Real)
fmSig =
T LazySize (Vector (T VectorSize Real))
-> LazyTime -> Vector (T VectorSize Real)
forall b.
Storable b =>
T LazySize (Vector b) -> LazyTime -> Vector b
pioApplyToLazyTime
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real))
freqMod SampleRate Real
sr (T (T Real)
fm, Real
freq Real -> Real -> Real
forall a. C a => a -> a -> a
* Positions -> Real
Sample.period Positions
pos))
(T (T Real) -> LazyTime
forall y. T y -> LazyTime
PC.duration T (T Real)
fm)
pos :: Positions
pos = T -> Positions
Sample.positions T
smp
amp :: Real
amp = Real
2 Real -> Real -> Real
forall a. C a => a -> a -> a
* Real -> Real
forall a. C a => a -> a
amplitudeFromVelocity Real
vel
(T Real
attack, T Real
sustain, T Real
release) = T -> (T Real, T Real, T Real)
Sample.parts T
smp
in (\Vector (T VectorSize Real) -> T (T (T VectorSize Real))
cont ->
(Vector (T VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real)
-> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
(Vector a -> Vector b)
-> T (Vector a) (Vector b) -> Vector a -> Vector b
pioApplyCont Vector (T VectorSize Real) -> T (T (T VectorSize Real))
cont
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr Real
amp
(T Real
attack T Real -> T Real -> T Real
forall a. Semigroup a => a -> a -> a
<>
T Real -> T Real
forall a. Storable a => Vector a -> Vector a
SVL.cycle (Int -> T Real -> T Real
forall a. Storable a => Int -> Vector a -> Vector a
SigSt.take (Positions -> Int
Sample.loopLength Positions
pos) T Real
sustain))
(LazyTime -> T ChunkSize
chunkSizesFromLazyTime LazyTime
dur))
Vector (T VectorSize Real)
fmSig)
((Vector (T VectorSize Real) -> T (T (T VectorSize Real)))
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real)
-> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
(Vector a -> Vector b)
-> T (Vector a) (Vector b) -> Vector a -> Vector b
pioApplyCont (T (T (T VectorSize Real))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b. a -> b -> a
const T (T (T VectorSize Real))
forall a. Storable a => Vector a
SigSt.empty)
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr Real
amp T Real
release ([ChunkSize] -> T ChunkSize
forall a. C a => [a] -> T a
NonNegChunky.fromChunks (ChunkSize -> [ChunkSize]
forall a. a -> [a]
repeat ChunkSize
1000)))))
(DSL
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T Real
-> T ChunkSize
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> InputArg (Signal (T ())) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> InputArg (Signal (T ())) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> InputArg (Signal (T ())) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> InputArg (Signal (T ())) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> InputArg (Signal (T ())) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> InputArg (Signal (T ())) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
amp) (Signal T RealValue
smp) (Signal T (T ())
dur) (SampleRate Exp Real
_sr) ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
Exp Real
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (T (Serial n a)) (T (Serial n a))
CausalPS.amplifyStereo Exp Real
amp
T (T (Serial VectorSize Real)) (T (T (T VectorSize Real)))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono
(T RealValue RealValue
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall va n a vb b.
(Read va, n ~ Size va, a ~ Element va, Write vb, n ~ Size vb,
b ~ Element vb) =>
T a b -> T va vb
CausalPS.pack (T RealValue -> T RealValue RealValue
forall a.
(PseudoRing a, IntegerConstant a, Comparison a, C a) =>
MV a -> MV a a
Causal.frequencyModulationLinear T RealValue
smp))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall a b c.
(a -> b -> c)
-> T (Serial VectorSize Real) a
-> T (Serial VectorSize Real) b
-> T (Serial VectorSize Real) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real)
forall a. a -> a -> T a
Stereo.cons
(Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
0.999)
(Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
1.001)
T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
((Serial VectorSize Real, ()) -> Serial VectorSize Real)
-> T (Serial VectorSize Real, ()) (Serial VectorSize Real)
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (Serial VectorSize Real, ()) -> Serial VectorSize Real
forall a b. (a, b) -> a
fst
T (Serial VectorSize Real, ()) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real, ())
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
SignalOf T ()
-> T (Serial VectorSize Real) (Serial VectorSize Real, ())
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (b, a)
CausalClass.feedSnd (T (T ()) -> T ()
forall a. C a => T (T a) -> T a
Const.flatten T (T ())
dur))
(DSL
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real))))
-> DSL
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real)))
-> (InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \(Modulation T (T (T RealValue))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real)
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
3 ((Exp Real
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> (Exp Real
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall b a. SignalOf T b -> T a b
forall (process :: * -> * -> *) b a.
C process =>
SignalOf process b -> process a b
Causal.fromSignal (SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm)
_sampledSoundLeaky ::
IO (Sample.T ->
PC.T (BM.T Real) ->
Instrument Real (Stereo.T Vector))
_sampledSoundLeaky :: IO (T -> T (T Real) -> Instrument Real (T (T VectorSize Real)))
_sampledSoundLeaky =
((SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> (SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
-> T
-> T (T Real)
-> Instrument Real (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
-> IO
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
-> IO (T -> T (T Real) -> Instrument Real (T (T VectorSize Real)))
forall a b c. (a -> b -> c) -> IO a -> IO b -> IO c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2
(\SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real))
freqMod T
smp T (T Real)
fm SampleRate Real
sr Real
vel Real
freq LazyTime
dur ->
let sustainFM, releaseFM :: SigSt.T Vector
(Vector (T VectorSize Real)
sustainFM, Vector (T VectorSize Real)
releaseFM) =
T ChunkSize
-> Vector (T VectorSize Real)
-> (Vector (T VectorSize Real), Vector (T VectorSize Real))
forall a.
Storable a =>
T ChunkSize -> Vector a -> (Vector a, Vector a)
SVP.splitAt (LazyTime -> T ChunkSize
chunkSizesFromLazyTime LazyTime
dur) (Vector (T VectorSize Real)
-> (Vector (T VectorSize Real), Vector (T VectorSize Real)))
-> Vector (T VectorSize Real)
-> (Vector (T VectorSize Real), Vector (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$
T LazySize (Vector (T VectorSize Real))
-> LazyTime -> Vector (T VectorSize Real)
forall b.
Storable b =>
T LazySize (Vector b) -> LazyTime -> Vector b
pioApplyToLazyTime
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real))
freqMod SampleRate Real
sr (T (T Real)
fm, Real
freq Real -> Real -> Real
forall a. C a => a -> a -> a
* Positions -> Real
Sample.period Positions
pos))
(T (T Real) -> LazyTime
forall y. T y -> LazyTime
PC.duration T (T Real)
fm)
pos :: Positions
pos = T -> Positions
Sample.positions T
smp
amp :: Real
amp = Real
2 Real -> Real -> Real
forall a. C a => a -> a -> a
* Real -> Real
forall a. C a => a -> a
amplitudeFromVelocity Real
vel
(T Real
attack, T Real
sustain, T Real
release) = T -> (T Real, T Real, T Real)
Sample.parts T
smp
in T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr Real
amp
(T Real
attack T Real -> T Real -> T Real
forall a. Semigroup a => a -> a -> a
<>
T Real -> T Real
forall a. Storable a => Vector a -> Vector a
SVL.cycle (Int -> T Real -> T Real
forall a. Storable a => Int -> Vector a -> Vector a
SigSt.take (Positions -> Int
Sample.loopLength Positions
pos) T Real
sustain)))
Vector (T VectorSize Real)
sustainFM
T (T (T VectorSize Real))
-> T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. Semigroup a => a -> a -> a
<>
T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
-> Vector (T VectorSize Real) -> T (T (T VectorSize Real))
forall a b.
(Storable a, Storable b) =>
T (Vector a) (Vector b) -> Vector a -> Vector b
pioApply (SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real)))
osc SampleRate Real
sr Real
amp T Real
release) Vector (T VectorSize Real)
releaseFM)
(DSL
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real)))))
-> DSL
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
(Element
(In
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
(Element
(Out
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real))
(Vector (T (T VectorSize Real))))))
-> IO
(SampleRate Real
-> Real
-> T Real
-> T (Vector (T VectorSize Real)) (Vector (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))))
-> (Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> InputArg (Signal RealValue) (Exp Real)
-> SampleRate (Exp Real)
-> T (Serial VectorSize Real) (T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
amp) (Signal T RealValue
smp) (SampleRate Exp Real
_sr) ->
T (Serial VectorSize Real) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (Serial VectorSize Real) -> T (T (T VectorSize Real)))
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (T (Serial VectorSize Real)) (T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
Exp Real
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (T (Serial n a)) (T (Serial n a))
CausalPS.amplifyStereo Exp Real
amp
T (T (Serial VectorSize Real)) (T (T (T VectorSize Real)))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (T (T VectorSize Real)))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono
(T RealValue RealValue
-> T (Serial VectorSize Real) (Serial VectorSize Real)
forall va n a vb b.
(Read va, n ~ Size va, a ~ Element va, Write vb, n ~ Size vb,
b ~ Element vb) =>
T a b -> T va vb
CausalPS.pack (T RealValue -> T RealValue RealValue
forall a.
(PseudoRing a, IntegerConstant a, Comparison a, C a) =>
MV a -> MV a a
Causal.frequencyModulationLinear T RealValue
smp))
T (T (Serial VectorSize Real)) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
<<<
(Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real))
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (Serial VectorSize Real)
-> T (Serial VectorSize Real) (T (Serial VectorSize Real))
forall a b c.
(a -> b -> c)
-> T (Serial VectorSize Real) a
-> T (Serial VectorSize Real) b
-> T (Serial VectorSize Real) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Serial VectorSize Real
-> Serial VectorSize Real -> T (Serial VectorSize Real)
forall a. a -> a -> T a
Stereo.cons
(Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
0.999)
(Exp Real -> T (Serial VectorSize Real) (Serial VectorSize Real)
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
1.001))
(DSL
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
forall f a al b bl.
(Run f, In f ~ a, Default a, Element a ~ al, Out f ~ b, Default b,
Element b ~ bl) =>
DSL f al bl -> IO f
CausalRender.run (DSL
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real))))
-> DSL
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
(Element
(In
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
(Element
(Out
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))))
-> IO
(SampleRate Real
-> (T (T Real), Real) -> T LazySize (Vector (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real)))
-> (InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> Unwrapped
(InputArg (Modulation Real) (Exp Real)
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \(Modulation T (T (T RealValue))
fm) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real)
forall a b c d.
(SampleRate a -> b -> c)
-> b -> (c -> SampleRate a -> d) -> SampleRate a -> d
constant SampleRate (Exp Real) -> Exp Real -> Exp Real
forall a. C a => SampleRate a -> a -> a
frequency Exp Real
3 ((Exp Real
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> (Exp Real
-> SampleRate (Exp Real) -> T () (Serial VectorSize Real))
-> SampleRate (Exp Real)
-> T () (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall b a. SignalOf T b -> T a b
forall (process :: * -> * -> *) b a.
C process =>
SignalOf process b -> process a b
Causal.fromSignal (SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real))
-> SignalOf T (Serial VectorSize Real)
-> T () (Serial VectorSize Real)
forall a b. (a -> b) -> a -> b
$ Exp Real -> T (T (T RealValue)) -> T (Serial VectorSize Real)
frequencyFromBendModulation Exp Real
speed T (T (T RealValue))
fm)