{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE Rank2Types #-}
module Synthesizer.LLVM.Server.CausalPacked.Instrument (
ping,
pingRelease,
helixSound,
pingStereoReleaseFM,
filterSawStereoFM,
tineStereoFM,
bellNoiseStereoFM,
wind,
windPhaser,
softStringShapeFM, cosineStringStereoFM,
arcSawStringStereoFM, arcSineStringStereoFM,
arcSquareStringStereoFM, arcTriangleStringStereoFM,
fmStringStereoFM,
sampledSound, sampledSoundMono,
Control, DetuneBendModControl, WithEnvelopeControl, StereoChunk,
Frequency, Time,
pingControlledEnvelope, stringControlledEnvelope,
reorderEnvelopeControl,
frequencyControl, zipEnvelope,
) where
import Synthesizer.LLVM.Server.Packed.Instrument (stereoNoise)
import Synthesizer.LLVM.Server.CausalPacked.Common (transposeModulation)
import Synthesizer.LLVM.Server.CommonPacked
import Synthesizer.LLVM.Server.Common hiding
(Instrument, Frequency, Time, Control, transposeModulation)
import Synthesizer.LLVM.Server.Common (Arg(Frequency, Time))
import qualified Synthesizer.LLVM.Server.SampledSound as Sample
import qualified Synthesizer.LLVM.Storable.Process as PSt
import qualified Synthesizer.MIDI.CausalIO.Process as MIO
import qualified Synthesizer.CausalIO.Gate as Gate
import qualified Synthesizer.CausalIO.Process as PIO
import qualified Synthesizer.LLVM.Filter.Universal as UniFilter
import qualified Synthesizer.LLVM.Filter.Allpass as Allpass
import qualified Synthesizer.LLVM.Filter.Moog as Moog
import qualified Synthesizer.LLVM.Causal.Exponential2 as Exp
import qualified Synthesizer.LLVM.Frame.Stereo as Stereo
import qualified Synthesizer.LLVM.Frame as Frame
import qualified Synthesizer.LLVM.Frame.SerialVector as Serial
import qualified Synthesizer.LLVM.Causal.Helix as Helix
import qualified Synthesizer.LLVM.Causal.Functional as F
import qualified Synthesizer.LLVM.Causal.ControlledPacked as CtrlPS
import qualified Synthesizer.LLVM.Causal.Render as CausalRender
import qualified Synthesizer.LLVM.Causal.ProcessPacked as CausalPS
import qualified Synthesizer.LLVM.Causal.Process as Causal
import qualified Synthesizer.LLVM.Generator.SignalPacked as SigPS
import qualified Synthesizer.LLVM.Generator.Render as Render
import qualified Synthesizer.LLVM.Generator.Signal as Sig
import qualified Synthesizer.LLVM.Interpolation as Interpolation
import qualified Synthesizer.LLVM.Wave as WaveL
import Synthesizer.LLVM.Causal.Functional (($&), (&|&))
import Synthesizer.LLVM.Causal.Process (($<), ($>), ($<#))
import qualified Synthesizer.LLVM.MIDI.BendModulation as BM
import qualified Synthesizer.LLVM.MIDI as MIDIL
import qualified Synthesizer.PiecewiseConstant.Signal as PC
import qualified Synthesizer.Causal.Class as CausalClass
import qualified Synthesizer.Generic.Cut as CutG
import qualified Synthesizer.Zip as Zip
import qualified Data.EventList.Relative.BodyTime as EventListBT
import qualified Synthesizer.Storable.Signal as SigSt
import qualified Data.StorableVector.Lazy as SVL
import qualified Data.StorableVector as SV
import qualified LLVM.DSL.Expression as Expr
import LLVM.DSL.Expression (Exp, (<=*), (>*))
import qualified LLVM.Extra.Multi.Value as MultiValue
import qualified LLVM.Extra.Tuple as Tuple
import qualified LLVM.Core as LLVM
import qualified Type.Data.Num.Decimal as TypeNum
import qualified Control.Applicative.HT as App
import qualified Control.Monad.HT as M
import Control.Arrow (Arrow, arr, first, second, (&&&), (<<^), (^<<))
import Control.Category (id, (.))
import Control.Applicative (liftA2, liftA3, (<$>))
import Control.Functor.HT (unzip)
import qualified Data.Traversable as Trav
import Data.Semigroup ((<>))
import Data.Monoid (mappend)
import Data.Tuple.HT (mapPair)
import qualified Number.DimensionTerm as DN
import NumericPrelude.Numeric
import NumericPrelude.Base hiding (id, unzip, (.))
type Instrument a sig = SampleRate a -> MIO.Instrument a sig
type Control = EventListBT.T PC.ShortStrictTime
type Time = DN.Time Real
type Frequency = DN.Frequency Real
type Chunk = SV.Vector Vector
type StereoChunk = SV.Vector (Stereo.T Vector)
type BendModControl = Control (BM.T Real)
type DetuneBendModControl = Zip.T (Control Real) (Control (BM.T Real))
type PIOId a = PIO.T a a
frequencyFromBendModulationPacked ::
Exp Real ->
F.T inp (MultiValue.T (BM.T Real)) ->
F.T inp VectorValue
frequencyFromBendModulationPacked :: forall inp.
Exp Real -> T inp (T (T Real)) -> T inp (T (T VectorSize Real))
frequencyFromBendModulationPacked Exp Real
speed T inp (T (T Real))
fm =
Exp Real -> T (T (T Real)) (T (T 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 (T Real)) (T (T VectorSize Real))
-> T inp (T (T Real)) -> T inp (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& (T (T Real) -> T (T Real)
forall a. T (T a) -> T (T a)
BM.unMultiValue (T (T Real) -> T (T Real))
-> T inp (T (T Real)) -> T inp (T (T Real))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> T inp (T (T Real))
fm)
stereoFrequenciesFromDetuneBendModulation ::
Exp Real ->
(F.T inp (MultiValue.T Real),
F.T inp (MultiValue.T (BM.T Real))) ->
F.T inp (Stereo.T VectorValue)
stereoFrequenciesFromDetuneBendModulation :: forall inp.
Exp Real
-> (T inp (T Real), T inp (T (T Real)))
-> T inp (T (T (T VectorSize Real)))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T inp (T Real)
detune, T inp (T (T Real))
freq) =
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T inp (T (T VectorSize Real), T (T (T VectorSize Real)))
-> T inp (T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
Exp Real -> T inp (T (T Real)) -> T inp (T (T VectorSize Real))
forall inp.
Exp Real -> T inp (T (T Real)) -> T inp (T (T VectorSize Real))
frequencyFromBendModulationPacked Exp Real
speed T inp (T (T Real))
freq
T inp (T (T VectorSize Real))
-> T inp (T (T (T VectorSize Real)))
-> T inp (T (T VectorSize Real), T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
((T (Exp Real) -> T (Exp (T VectorSize Real)))
-> T (T (T Real)) (T (T (T 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))
-> T (Exp Real) -> T (Exp (T VectorSize Real))
forall a b. (a -> b) -> T a -> T b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Exp Real -> Exp (T VectorSize Real)
forall n a. (Positive n, C a) => Exp a -> Exp (T n a)
Serial.upsample) T (T (T Real)) (T (T (T VectorSize Real)))
-> T inp (T (T Real)) -> T inp (T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
(T Real -> T Real -> T (T Real))
-> T inp (T Real) -> T inp (T Real) -> T inp (T (T Real))
forall a b c. (a -> b -> c) -> T inp a -> T inp b -> T inp c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 T Real -> T Real -> T (T Real)
forall a. a -> a -> T a
Stereo.cons (T inp (T Real)
forall a. C a => a
one T inp (T Real) -> T inp (T Real) -> T inp (T Real)
forall a. C a => a -> a -> a
+ T inp (T Real)
detune) (T inp (T Real)
forall a. C a => a
one T inp (T Real) -> T inp (T Real) -> T inp (T Real)
forall a. C a => a -> a -> a
- T inp (T Real)
detune))
frequencyFromSampleRate :: SampleRate a -> DN.Frequency a
frequencyFromSampleRate :: forall a. SampleRate a -> Frequency a
frequencyFromSampleRate (SampleRate a
sr) = a -> Frequency a
forall a. a -> Frequency a
DN.frequency a
sr
halfLifeControl ::
(Functor f) =>
SampleRate Real ->
f Time ->
f (Exp.ParameterPacked Vector)
halfLifeControl :: forall (f :: * -> *).
Functor f =>
SampleRate Real
-> f Time -> f (ParameterPacked (T VectorSize Real))
halfLifeControl SampleRate Real
sr =
(Time -> ParameterPacked (T VectorSize Real))
-> f Time -> f (ParameterPacked (T VectorSize Real))
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Real -> ParameterPacked (T VectorSize Real)
forall n a. (Positive n, C a) => a -> ParameterPacked (T n a)
Exp.parameterPackedPlain (Real -> ParameterPacked (T VectorSize Real))
-> (Time -> Real) -> Time -> ParameterPacked (T VectorSize Real)
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(Time -> Frequency -> Real) -> Frequency -> Time -> Real
forall a b c. (a -> b -> c) -> b -> a -> c
flip Time -> Frequency -> Real
forall u a. (C u, C a) => T u a -> T (Recip u) a -> a
DN.mulToScalar (SampleRate Real -> Frequency
forall a. SampleRate a -> Frequency a
frequencyFromSampleRate SampleRate Real
sr))
frequencyControl ::
(Functor f) =>
SampleRate Real ->
f Frequency ->
f Real
frequencyControl :: forall (f :: * -> *).
Functor f =>
SampleRate Real -> f Frequency -> f Real
frequencyControl SampleRate Real
sr =
(Frequency -> Real) -> f Frequency -> f Real
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Frequency -> Frequency -> Real) -> Frequency -> Frequency -> Real
forall a b c. (a -> b -> c) -> b -> a -> c
flip Frequency -> Frequency -> Real
forall u a. (C u, C a) => T u a -> T u a -> a
DN.divToScalar (Frequency -> Frequency -> Real) -> Frequency -> Frequency -> Real
forall a b. (a -> b) -> a -> b
$ SampleRate Real -> Frequency
forall a. SampleRate a -> Frequency a
frequencyFromSampleRate SampleRate Real
sr)
takeThreshold :: Exp Real -> Causal.T VectorValue VectorValue
takeThreshold :: Exp Real -> T (T (T VectorSize Real)) (T (T VectorSize Real))
takeThreshold Exp Real
threshold =
(Exp (T VectorSize Real) -> Exp Bool)
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall ae a. Aggregate ae a => (ae -> Exp Bool) -> T a a
Causal.takeWhile (\Exp (T VectorSize Real)
y -> Exp Real
threshold Exp Real -> Exp Real -> Exp Bool
forall a. Comparison a => Exp a -> Exp a -> Exp Bool
<=* Exp (T VectorSize Real) -> Exp Real
forall n a. (Positive n, C a) => Exp (T n a) -> Exp a
Serial.subsample Exp (T VectorSize Real)
y)
type EnvelopeControl =
Zip.T MIO.GateChunk
(Zip.T (Control Time) (Control Time))
type WithEnvelopeControl remainder =
Zip.T MIO.GateChunk
(Zip.T
(Zip.T (Control Time) (Control Time))
remainder)
reorderEnvelopeControl ::
(Arrow arrow, CutG.Read remainder) =>
arrow
(WithEnvelopeControl remainder)
(Zip.T EnvelopeControl remainder)
reorderEnvelopeControl :: forall (arrow :: * -> * -> *) remainder.
(Arrow arrow, Read remainder) =>
arrow (WithEnvelopeControl remainder) (T EnvelopeControl remainder)
reorderEnvelopeControl =
(WithEnvelopeControl remainder -> T EnvelopeControl remainder)
-> arrow
(WithEnvelopeControl remainder) (T EnvelopeControl remainder)
forall b c. (b -> c) -> arrow b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((WithEnvelopeControl remainder -> T EnvelopeControl remainder)
-> arrow
(WithEnvelopeControl remainder) (T EnvelopeControl remainder))
-> (WithEnvelopeControl remainder -> T EnvelopeControl remainder)
-> arrow
(WithEnvelopeControl remainder) (T EnvelopeControl remainder)
forall a b. (a -> b) -> a -> b
$ \(Zip.Cons GateChunk
gate (Zip.Cons T (Control Time) (Control Time)
times remainder
ctrl)) ->
String
-> EnvelopeControl -> remainder -> T EnvelopeControl remainder
forall a b. (Read a, Read b) => String -> a -> b -> T a b
Zip.consChecked String
"ping gate ctrl"
(String
-> GateChunk -> T (Control Time) (Control Time) -> EnvelopeControl
forall a b. (Read a, Read b) => String -> a -> b -> T a b
Zip.consChecked String
"ping gate times" GateChunk
gate T (Control Time) (Control Time)
times) remainder
ctrl
zipEnvelope ::
(Arrow arrow, CutG.Transform a, CutG.Transform b) =>
arrow EnvelopeControl a ->
arrow (WithEnvelopeControl b) (Zip.T a b)
zipEnvelope :: forall (arrow :: * -> * -> *) a b.
(Arrow arrow, Transform a, Transform b) =>
arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b)
zipEnvelope arrow EnvelopeControl a
env =
arrow EnvelopeControl a -> arrow (T EnvelopeControl b) (T a b)
forall (arrow :: * -> * -> *) b c a.
(Arrow arrow, Transform b, Transform c) =>
arrow a b -> arrow (T a c) (T b c)
Zip.arrowFirstShorten arrow EnvelopeControl a
env
arrow (T EnvelopeControl b) (T a b)
-> arrow (WithEnvelopeControl b) (T EnvelopeControl b)
-> arrow (WithEnvelopeControl b) (T a b)
forall b c a. arrow b c -> arrow a b -> arrow a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
arrow (WithEnvelopeControl b) (T EnvelopeControl b)
forall (arrow :: * -> * -> *) remainder.
(Arrow arrow, Read remainder) =>
arrow (WithEnvelopeControl remainder) (T EnvelopeControl remainder)
reorderEnvelopeControl
ping :: IO (Instrument Real Chunk)
ping :: IO (Instrument Real Chunk)
ping =
((SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)
-> Instrument Real Chunk)
-> IO (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)
-> IO (Instrument Real Chunk)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\SampleRate Real -> Real -> Real -> T (Vector ()) Chunk
proc SampleRate Real
sampleRate Real
vel Real
freq ->
SampleRate Real -> Real -> Real -> T (Vector ()) Chunk
proc SampleRate Real
sampleRate Real
vel Real
freq
T (Vector ()) Chunk -> T GateChunk (Vector ()) -> T GateChunk Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T GateChunk (Vector ())
forall a. T (Chunk a) (Vector ())
Gate.toStorableVector) (IO (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)
-> IO (Instrument Real Chunk))
-> IO (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)
-> IO (Instrument Real Chunk)
forall a b. (a -> b) -> a -> b
$
DSL
(SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)
(Element
(In (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)))
(Element
(Out (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)))
-> IO (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)
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 ()) Chunk)
(Element
(In (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)))
(Element
(Out (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)))
-> IO (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk))
-> DSL
(SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)
(Element
(In (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)))
(Element
(Out (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)))
-> IO (SampleRate Real -> Real -> Real -> T (Vector ()) Chunk)
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (T ()) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (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 (T ()) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (T ()) (T (T VectorSize Real))))
-> (Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (T ()) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (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 (T ()) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> T (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
0.2 ((Exp Real
-> SampleRate (Exp Real) -> T (T ()) (T (T VectorSize Real)))
-> SampleRate (Exp Real) -> T (T ()) (T (T VectorSize Real)))
-> (Exp Real
-> SampleRate (Exp Real) -> T (T ()) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T ()) (T (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \Exp Real
halfLife SampleRate (Exp Real)
_sr ->
SignalOf T (T (T VectorSize Real))
-> T (T ()) (T (T 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 (T (T VectorSize Real))
-> T (T ()) (T (T VectorSize Real)))
-> SignalOf T (T (T VectorSize Real))
-> T (T ()) (T (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$
Exp Real -> Exp Real -> T (T (T 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 -> Exp Real
forall a. C a => a -> a
amplitudeFromVelocity Exp Real
vel)
T (T (T VectorSize Real))
-> T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. C a => a -> a -> a
*
(forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> Exp Real -> Exp Real -> T (T (T 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 T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T 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
pingReleaseEnvelope ::
IO (Real -> Real ->
SampleRate Real -> Real ->
PIO.T MIO.GateChunk Chunk)
pingReleaseEnvelope :: IO (Real -> Real -> SampleRate Real -> Real -> T GateChunk Chunk)
pingReleaseEnvelope =
((SampleRate Real -> Real -> Real -> T LazySize Chunk)
-> (SampleRate Real -> Real -> Real -> T LazySize Chunk)
-> Real
-> Real
-> SampleRate Real
-> Real
-> T GateChunk Chunk)
-> IO (SampleRate Real -> Real -> Real -> T LazySize Chunk)
-> IO (SampleRate Real -> Real -> Real -> T LazySize Chunk)
-> IO
(Real -> Real -> SampleRate Real -> Real -> T GateChunk Chunk)
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 Chunk
sustain SampleRate Real -> Real -> Real -> T LazySize Chunk
release Real
dec Real
rel SampleRate Real
sr Real
vel ->
T GateChunk Chunk
-> (Real -> T GateChunk Chunk) -> T GateChunk Chunk
forall a b n.
(Transform a, Vector b, Positive n) =>
T a (Vector (T n b))
-> (b -> T a (Vector (T n b))) -> T a (Vector (T n b))
PSt.continuePacked
(SampleRate Real -> Real -> Real -> T LazySize Chunk
sustain SampleRate Real
sr Real
dec Real
vel
T LazySize Chunk -> T GateChunk LazySize -> T GateChunk Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T GateChunk LazySize
forall a. T (Chunk a) LazySize
Gate.toChunkySize)
(\Real
y ->
SampleRate Real -> Real -> Real -> T LazySize Chunk
release SampleRate Real
sr Real
rel Real
y
T LazySize Chunk -> T GateChunk LazySize -> T GateChunk Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T GateChunk LazySize
forall (arrow :: * -> * -> *) a.
Arrow arrow =>
arrow (Chunk a) LazySize
Gate.allToChunkySize))
(DSL
(SampleRate Real -> Real -> Real -> T LazySize Chunk)
(Element
(In (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
(Element
(Out (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
-> IO (SampleRate Real -> Real -> Real -> T LazySize Chunk)
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 Chunk)
(Element
(In (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
(Element
(Out (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
-> IO (SampleRate Real -> Real -> Real -> T LazySize Chunk))
-> DSL
(SampleRate Real -> Real -> Real -> T LazySize Chunk)
(Element
(In (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
(Element
(Out (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
-> IO (SampleRate Real -> Real -> Real -> T LazySize Chunk)
forall a b. (a -> b) -> a -> b
$
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (T (T 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 () (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (T (T VectorSize Real))))
-> (Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(Time Exp Real
decay) (Number Exp Real
vel) (SampleRate Exp Real
_sr) ->
SignalOf T (T (T VectorSize Real)) -> T () (T (T 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 (T (T VectorSize Real))
-> T () (T (T VectorSize Real)))
-> SignalOf T (T (T VectorSize Real))
-> T () (T (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$
Exp Real -> Exp Real -> T (T (T 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 -> Exp Real
forall a. C a => a -> a -> a
/ Int -> Exp Real
forall a b. (C a, C b) => a -> b
fromIntegral Int
vectorSize) (Exp Real -> Exp Real
forall a. C a => a -> a
amplitudeFromVelocity Exp Real
vel))
(DSL
(SampleRate Real -> Real -> Real -> T LazySize Chunk)
(Element
(In (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
(Element
(Out (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
-> IO (SampleRate Real -> Real -> Real -> T LazySize Chunk)
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 Chunk)
(Element
(In (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
(Element
(Out (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
-> IO (SampleRate Real -> Real -> Real -> T LazySize Chunk))
-> DSL
(SampleRate Real -> Real -> Real -> T LazySize Chunk)
(Element
(In (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
(Element
(Out (SampleRate Real -> Real -> Real -> T LazySize Chunk)))
-> IO (SampleRate Real -> Real -> Real -> T LazySize Chunk)
forall a b. (a -> b) -> a -> b
$
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (T (T 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 () (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (T (T VectorSize Real))))
-> (Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Time (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T () (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(Time Exp Real
releaseHL) (Number Exp Real
level) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real) -> T () (T (T VectorSize Real)))
-> SampleRate (Exp 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 () (T (T VectorSize Real)))
-> SampleRate (Exp Real) -> T () (T (T VectorSize Real)))
-> (Exp Real
-> SampleRate (Exp Real) -> T () (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> T () (T (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \Exp Real
releaseTime SampleRate (Exp Real)
_sr ->
Exp Word -> T (T (T VectorSize Real)) (T (T 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 -> Exp Word) -> Exp Real -> Exp Word
forall a b. (a -> b) -> a -> b
$ Exp Real
releaseTime Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
/ Int -> Exp Real
forall a b. (C a, C b) => a -> b
fromIntegral Int
vectorSize)
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T () (T (T VectorSize Real)) -> T () (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
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 (T VectorSize Real)) -> T () (T (T 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 (T (T 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
level))
pingRelease :: IO (Real -> Real -> Instrument Real Chunk)
pingRelease :: IO (Real -> Real -> Instrument Real Chunk)
pingRelease =
((SampleRate Real -> Real -> T Chunk Chunk)
-> (Real -> Real -> SampleRate Real -> Real -> T GateChunk Chunk)
-> Real
-> Real
-> Instrument Real Chunk)
-> IO (SampleRate Real -> Real -> T Chunk Chunk)
-> IO
(Real -> Real -> SampleRate Real -> Real -> T GateChunk Chunk)
-> IO (Real -> Real -> Instrument Real Chunk)
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 Chunk Chunk
osci Real -> Real -> SampleRate Real -> Real -> T GateChunk Chunk
envelope Real
dec Real
rel SampleRate Real
sr Real
vel Real
freq ->
SampleRate Real -> Real -> T Chunk Chunk
osci SampleRate Real
sr Real
freq
T Chunk Chunk -> T GateChunk Chunk -> T GateChunk Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
Real -> Real -> SampleRate Real -> Real -> T GateChunk Chunk
envelope Real
dec Real
rel SampleRate Real
sr Real
vel)
(DSL
(SampleRate Real -> Real -> T Chunk Chunk)
(Element (In (SampleRate Real -> Real -> T Chunk Chunk)))
(Element (Out (SampleRate Real -> Real -> T Chunk Chunk)))
-> IO (SampleRate Real -> Real -> T Chunk Chunk)
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 Chunk Chunk)
(Element (In (SampleRate Real -> Real -> T Chunk Chunk)))
(Element (Out (SampleRate Real -> Real -> T Chunk Chunk)))
-> IO (SampleRate Real -> Real -> T Chunk Chunk))
-> DSL
(SampleRate Real -> Real -> T Chunk Chunk)
(Element (In (SampleRate Real -> Real -> T Chunk Chunk)))
(Element (Out (SampleRate Real -> Real -> T Chunk Chunk)))
-> IO (SampleRate Real -> Real -> T Chunk Chunk)
forall a b. (a -> b) -> a -> b
$
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real)) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real)) (T (T VectorSize Real)))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real)) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real)) (T (T VectorSize Real))))
-> (Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real)) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Frequency (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real)) (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(Frequency Exp Real
freq) (SampleRate Exp Real
_sr) ->
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> SignalOf T (T (T VectorSize Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process b -> process a c
$> (forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> Exp Real -> Exp Real -> T (T (T 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 T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T 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 -> SampleRate Real -> Real -> T GateChunk Chunk)
pingReleaseEnvelope
pingControlledEnvelope ::
Maybe Real ->
IO (SampleRate Real -> Real ->
PIO.T EnvelopeControl Chunk)
pingControlledEnvelope :: Maybe Real
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
pingControlledEnvelope Maybe Real
threshold =
((SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
-> (SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
-> SampleRate Real
-> Real
-> T EnvelopeControl Chunk)
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
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 ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
sustain SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
release SampleRate Real
sr Real
vel ->
T EnvelopeControl Chunk
-> (Real -> T EnvelopeControl Chunk) -> T EnvelopeControl Chunk
forall a b n.
(Transform a, Vector b, Positive n) =>
T a (Vector (T n b))
-> (b -> T a (Vector (T n b))) -> T a (Vector (T n b))
PSt.continuePacked
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
sustain SampleRate Real
sr Real
vel
T (T ShortStrictTime (ParameterPacked (T VectorSize Real))) Chunk
-> T EnvelopeControl
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T EnvelopeControl Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T GateChunk
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall signal a. Transform signal => T (T (Chunk a) signal) signal
Gate.shorten
T (T GateChunk
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T EnvelopeControl
(T GateChunk
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
-> T EnvelopeControl
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (Control Time) (Control Time))
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T EnvelopeControl
(T GateChunk
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond ((T (Control Time) (Control Time)
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (T (Control Time) (Control Time))
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (SampleRate Real
-> Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall (f :: * -> *).
Functor f =>
SampleRate Real
-> f Time -> f (ParameterPacked (T VectorSize Real))
halfLifeControl SampleRate Real
sr (Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> (T (Control Time) (Control Time) -> Control Time)
-> T (Control Time) (Control Time)
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. T (Control Time) (Control Time) -> Control Time
forall a b. T a b -> a
Zip.first)))
(\Real
y ->
SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
release SampleRate Real
sr Real
y
T (T ShortStrictTime (ParameterPacked (T VectorSize Real))) Chunk
-> (EnvelopeControl
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T EnvelopeControl Chunk
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^
SampleRate Real
-> Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall (f :: * -> *).
Functor f =>
SampleRate Real
-> f Time -> f (ParameterPacked (T VectorSize Real))
halfLifeControl SampleRate Real
sr (Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> (EnvelopeControl -> Control Time)
-> EnvelopeControl
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. T (Control Time) (Control Time) -> Control Time
forall a b. T a b -> b
Zip.second (T (Control Time) (Control Time) -> Control Time)
-> (EnvelopeControl -> T (Control Time) (Control Time))
-> EnvelopeControl
-> Control Time
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. EnvelopeControl -> T (Control Time) (Control Time)
forall a b. T a b -> b
Zip.second))
(DSL
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
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 ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk))
-> DSL
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))))
-> (Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
vel) (SampleRate Exp Real
_sr) ->
Exp Real
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
forall a n.
(PseudoRing a, IntegerConstant a, Positive n, Vector n a, C a) =>
Exp a -> T (ParameterPacked (Value n a)) (Value n a)
Exp.causalPacked (Exp Real -> Exp Real
forall a. C a => a -> a
amplitudeFromVelocity Exp Real
vel)
T (ParameterPacked (T (T VectorSize Real))) (T (T VectorSize Real))
-> (T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real)))
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real))
forall a. T (ParameterPacked a) -> ParameterPacked (T a)
Exp.unMultiValueParameterPacked)
(DSL
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
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 ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk))
-> DSL
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))))
-> (Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
level) (SampleRate Exp Real
_sr) ->
let expo :: T (T (ParameterPacked (T VectorSize Real))) (T (T VectorSize Real))
expo = Exp Real
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
forall a n.
(PseudoRing a, IntegerConstant a, Positive n, Vector n a, C a) =>
Exp a -> T (ParameterPacked (Value n a)) (Value n a)
Exp.causalPacked Exp Real
level T (ParameterPacked (T (T VectorSize Real))) (T (T VectorSize Real))
-> (T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real)))
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real))
forall a. T (ParameterPacked a) -> ParameterPacked (T a)
Exp.unMultiValueParameterPacked
in case Maybe Real
threshold of
Just Real
y -> Exp Real -> T (T (T VectorSize Real)) (T (T VectorSize Real))
takeThreshold (Real -> Exp Real
forall a. C a => a -> Exp a
Expr.cons Real
y) T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. T (T (ParameterPacked (T VectorSize Real))) (T (T VectorSize Real))
expo
Maybe Real
Nothing -> T (T (ParameterPacked (T VectorSize Real))) (T (T VectorSize Real))
expo)
pingStereoReleaseFM ::
IO (SampleRate Real -> Real -> Real ->
PIO.T
(WithEnvelopeControl
(Zip.T
(Zip.T (Control Real) (Control Time))
(Zip.T
(Zip.T (Control Real) (Control Time))
DetuneBendModControl)))
StereoChunk)
pingStereoReleaseFM :: IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
StereoChunk)
pingStereoReleaseFM =
((SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)
-> (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
StereoChunk)
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
StereoChunk)
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 Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk
osc SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel Real
freq ->
SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk
osc SampleRate Real
sr
T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
(T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
-> T (T Chunk
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
(T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond
(T (T (Control Real) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
-> T (T (T (Control Real) (Control Time)) DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
-> T (T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
forall (arrow :: * -> * -> *) a c b d.
Arrow arrow =>
arrow a c -> arrow b d -> arrow (T a b) (T c d)
Zip.arrowSplit
(T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (T (Control Real) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (T (Control Real) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (T (Control Real) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ (Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
-> (Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall (f :: * -> *).
Functor f =>
SampleRate Real
-> f Time -> f (ParameterPacked (T VectorSize Real))
halfLifeControl SampleRate Real
sr)
((T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
-> T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
forall a b. (a -> b) -> a -> b
$ T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl)
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall a b. (a -> b) -> a -> b
$
(T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr Real
freq)
T (T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
-> T (T (T (Control Real) (Control Time)) DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
-> T (T (T (Control Real) (Control Time)) DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T (T (Control Real) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
-> T (T (T (Control Real) (Control Time)) DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T a c) (T b c)
Zip.arrowFirst (T (T (Control Real) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
-> T (T (T (Control Real) (Control Time)) DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
-> T (T (Control Real) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
-> T (T (T (Control Real) (Control Time)) DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
forall a b. (a -> b) -> a -> b
$ T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (T (Control Real) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (T (Control Real) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (T (Control Real) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
(Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
-> (Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall (f :: * -> *).
Functor f =>
SampleRate Real
-> f Time -> f (ParameterPacked (T VectorSize Real))
halfLifeControl SampleRate Real
sr)))
T (T Chunk
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
(T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
(T Chunk
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
(T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T EnvelopeControl Chunk
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
(T Chunk
(T (T (Control Real) (Control Time))
(T (T (Control Real) (Control Time)) DetuneBendModControl)))
forall (arrow :: * -> * -> *) a b.
(Arrow arrow, Transform a, Transform b) =>
arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b)
zipEnvelope (SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel))
(DSL
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)
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 Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk))
-> DSL
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)))
StereoChunk)
forall a b. (a -> b) -> a -> b
$
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T 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 (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
(T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
((T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue
T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
(T (T VectorSize Real), T (T (T 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
((Arguments
(T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments
(T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Arguments
(T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))))
((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \((T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T Real)
shape0,T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (ParameterPacked (T VectorSize Real)))
shapeDecay),((T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T Real)
phase,T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (ParameterPacked (T VectorSize Real)))
phaseDecay),(T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T Real),
T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T Real)))
fm)) ->
let shape :: T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
shape = (Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T Real)
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T Real)
shape0
shapeCtrl :: T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
shapeCtrl =
T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
1T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a. C a => a -> a -> a
/T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a. C a => a
pi T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a. C a => a -> a -> a
+ (T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
shapeT ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a. C a => a -> a -> a
-T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
1T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a. C a => a -> a -> a
/T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a. C a => a
pi) T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a. C a => a -> a -> a
*
(Exp Real
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
forall a n.
(PseudoRing a, IntegerConstant a, Positive n, Vector n a, C a) =>
Exp a -> T (ParameterPacked (Value n a)) (Value n a)
Exp.causalPacked Exp Real
1
T (ParameterPacked (T (T VectorSize Real))) (T (T VectorSize Real))
-> (T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real)))
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real))
forall a. T (ParameterPacked a) -> ParameterPacked (T a)
Exp.unMultiValueParameterPacked
T (T (ParameterPacked (T VectorSize Real))) (T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (ParameterPacked (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (ParameterPacked (T VectorSize Real)))
shapeDecay)
freqs :: T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
freqs = Exp Real
-> (T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T Real),
T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall inp.
Exp Real
-> (T inp (T Real), T inp (T (T Real)))
-> T inp (T (T (T VectorSize Real)))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T Real),
T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T Real)))
fm
expo :: T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
expo =
((Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T Real)
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T Real)
phase) T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a. C a => a -> a -> a
*
(Exp Real
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
forall a n.
(PseudoRing a, IntegerConstant a, Positive n, Vector n a, C a) =>
Exp a -> T (ParameterPacked (Value n a)) (Value n a)
Exp.causalPacked Exp Real
1 T (ParameterPacked (T (T VectorSize Real))) (T (T VectorSize Real))
-> (T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real)))
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real))
forall a. T (ParameterPacked a) -> ParameterPacked (T a)
Exp.unMultiValueParameterPacked
T (T (ParameterPacked (T VectorSize Real))) (T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (ParameterPacked (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (ParameterPacked (T VectorSize Real)))
phaseDecay)
osci ::
Causal.T
(VectorValue, (VectorValue, VectorValue)) VectorValue
osci :: T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
osci = (forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T 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 T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(Field a, RationalConstant a, Real a) =>
a -> a -> CodeGenFunction r a
WaveL.rationalApproxSine1
in (T (T VectorSize Real)
-> T (T VectorSize Real) -> T (T (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a b c.
(a -> b -> c)
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
a
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
b
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 T (T VectorSize Real)
-> T (T VectorSize Real) -> T (T (T VectorSize Real))
forall a. a -> a -> T a
Stereo.cons
(T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
osci T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
shapeCtrl T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real), T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|& (T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
expo T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real), T (T VectorSize Real))
forall a b c. T a b -> T a c -> T a (b, c)
&|& (T (T (T VectorSize Real)) -> T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a b.
(a -> b)
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
a
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap T (T (T VectorSize Real)) -> T (T VectorSize Real)
forall a. T a -> a
Stereo.left T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
freqs))
(T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
osci T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
shapeCtrl T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real), T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
(T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a. C a => a -> a
negate T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
expo T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real), T (T VectorSize Real))
forall a b c. T a b -> T a c -> T a (b, c)
&|& (T (T (T VectorSize Real)) -> T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real))
forall a b.
(a -> b)
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
a
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap T (T (T VectorSize Real)) -> T (T VectorSize Real)
forall a. T a -> a
Stereo.right T ((T Real, T (ParameterPacked (T VectorSize Real))),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
freqs)))))
(Maybe Real
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
pingControlledEnvelope (Real -> Maybe Real
forall a. a -> Maybe a
Just Real
0.01))
filterSawStereoFM ::
IO (SampleRate Real -> Real -> Real ->
PIO.T
(WithEnvelopeControl
(Zip.T
(Zip.T (Control Frequency) (Control Time))
DetuneBendModControl))
StereoChunk)
filterSawStereoFM :: IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
StereoChunk)
filterSawStereoFM =
((SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)
-> (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
StereoChunk)
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
StereoChunk)
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 Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk
osc SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel Real
freq ->
SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk
osc SampleRate Real
sr
T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk
-> T (WithEnvelopeControl
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
(T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T (Control Frequency) (Control Time)) DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
-> T (T Chunk
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
(T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond
(T (T (Control Frequency) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
-> T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Frequency) (Control Time))
DetuneBendModControl)
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl)
forall (arrow :: * -> * -> *) a c b d.
Arrow arrow =>
arrow a c -> arrow b d -> arrow (T a b) (T c d)
Zip.arrowSplit
(T (Control Frequency) (Control Real)
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (T (Control Frequency) (Control Time))
(T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
forall (arrow :: * -> * -> *) a c b d.
Arrow arrow =>
arrow a c -> arrow b d -> arrow (T a b) (T c d)
Zip.arrowSplit
((Control Frequency -> Control Real)
-> T (Control Frequency) (Control Real)
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((Control Frequency -> Control Real)
-> T (Control Frequency) (Control Real))
-> (Control Frequency -> Control Real)
-> T (Control Frequency) (Control Real)
forall a b. (a -> b) -> a -> b
$ SampleRate Real -> Control Frequency -> Control Real
forall (f :: * -> *).
Functor f =>
SampleRate Real -> f Frequency -> f Real
frequencyControl SampleRate Real
sr)
((Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
-> (Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (Control Time)
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall (f :: * -> *).
Functor f =>
SampleRate Real
-> f Time -> f (ParameterPacked (T VectorSize Real))
halfLifeControl SampleRate Real
sr))
(T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl)
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall a b. (a -> b) -> a -> b
$
(T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr Real
freq))
T (T Chunk
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
(T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
(T Chunk
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
(T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T EnvelopeControl Chunk
-> T (WithEnvelopeControl
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
(T Chunk
(T (T (Control Frequency) (Control Time)) DetuneBendModControl))
forall (arrow :: * -> * -> *) a b.
(Arrow arrow, Transform a, Transform b) =>
arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b)
zipEnvelope (SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel))
(DSL
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)
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 Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk))
-> DSL
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real)
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
DetuneBendModControl))
StereoChunk)
forall a b. (a -> b) -> a -> b
$
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T 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 (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T 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 (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T 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 (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
lowerFreq SampleRate (Exp Real)
_sr ->
((T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue
T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
(T (T VectorSize Real), T (T (T 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
((Arguments
(T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments
(T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> (Arguments
(T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real))))
((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \((T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T Real)
cutoff,T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (ParameterPacked (T VectorSize Real)))
cutoffDecay),(T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T Real),
T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T Real)))
fm) ->
let freqs :: T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real)))
freqs = Exp Real
-> (T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T Real),
T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall inp.
Exp Real
-> (T inp (T Real), T inp (T (T Real)))
-> T inp (T (T (T VectorSize Real)))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T Real),
T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T Real)))
fm
expo :: T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T VectorSize Real))
expo =
Exp Real -> T (T (T VectorSize Real)) (T (T VectorSize Real))
takeThreshold Exp Real
lowerFreq T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$&
((Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T Real)
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T Real)
cutoff) T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T VectorSize Real))
forall a. C a => a -> a -> a
*
(Exp Real
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
forall a n.
(PseudoRing a, IntegerConstant a, Positive n, Vector n a, C a) =>
Exp a -> T (ParameterPacked (Value n a)) (Value n a)
Exp.causalPacked Exp Real
1 T (ParameterPacked (T (T VectorSize Real))) (T (T VectorSize Real))
-> (T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real)))
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real))
forall a. T (ParameterPacked a) -> ParameterPacked (T a)
Exp.unMultiValueParameterPacked
T (T (ParameterPacked (T VectorSize Real))) (T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (ParameterPacked (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (ParameterPacked (T VectorSize Real)))
cutoffDecay)
in T (Parameter (T Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (Parameter (T Real), T (T (T VectorSize Real)))
(T (T (T 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
(Result (T (T VectorSize Real)) -> T (T VectorSize Real)
forall a. Result a -> a
UniFilter.lowpass (Result (T (T VectorSize Real)) -> T (T VectorSize Real))
-> T (Parameter (T Real), T (T VectorSize Real))
(Result (T (T VectorSize Real)))
-> T (Parameter (T Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
(c -> d) -> a b c -> a b d
^<< T (Parameter (T Real), T (T VectorSize Real))
(Result (T (T VectorSize Real)))
forall parameter a b. C parameter a b => T (parameter, a) b
CtrlPS.process)
T (Parameter (T Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(Parameter (T Real), T (T (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
((T (T (T VectorSize Real)) (Parameter (T Real))
-> T (T Real, T (T VectorSize Real)) (Parameter (T 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 (T VectorSize Real) -> Parameter (Exp Real))
-> T (T (T VectorSize Real)) (Parameter (T 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
UniFilter.parameter Exp Real
10
(Exp Real -> Parameter (Exp Real))
-> (Exp (T VectorSize Real) -> Exp Real)
-> Exp (T VectorSize Real)
-> Parameter (Exp Real)
forall b c a. (b -> c) -> (a -> b) -> a -> c
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
forall n a. (Positive n, C a) => Exp (T n a) -> Exp a
Serial.subsample))
T (T Real, T (T VectorSize Real)) (Parameter (T Real))
-> Real -> T (T (T VectorSize Real)) (Parameter (T Real))
forall (process :: * -> * -> *) a b c.
(C process, C a) =>
process (T a, b) c -> a -> process b c
$<# (Real
100 Real -> Real -> Real
forall a. C a => a -> a -> a
/ Int -> Real
forall a b. (C a, C b) => a -> b
fromIntegral Int
vectorSize :: Real))
T (T (T VectorSize Real)) (Parameter (T Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T VectorSize Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(Parameter (T Real))
forall b c a. T b c -> T a b -> T a c
$&
T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T VectorSize Real))
expo)
T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(Parameter (T Real))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(Parameter (T Real), T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
(T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T (T VectorSize Real))) (T (T (T 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.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T 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 T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> SignalOf T (T (T VectorSize Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (T (T VectorSize Real))
T (T (T VectorSize Real))
forall a. C a => a
zero) T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real)))
-> T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
T ((T Real, T (ParameterPacked (T VectorSize Real))),
(T Real, T (T Real)))
(T (T (T VectorSize Real)))
freqs))))
(Maybe Real
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
pingControlledEnvelope (Real -> Maybe Real
forall a. a -> Maybe a
Just Real
0.01))
tineStereoFM ::
IO (SampleRate Real -> Real -> Real ->
PIO.T
(WithEnvelopeControl
(Zip.T
(Zip.T (Control Real) (Control Real))
DetuneBendModControl))
StereoChunk)
tineStereoFM :: IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
tineStereoFM =
((SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
-> (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
-> IO
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
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 Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
osc SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel Real
freq ->
SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
osc SampleRate Real
sr Real
vel
T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl)))
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall a b. (a -> b) -> a -> b
$ T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
forall a b. (a -> b) -> a -> b
$
T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl)
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall a b. (a -> b) -> a -> b
$
(T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr Real
freq)
T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T EnvelopeControl Chunk
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall (arrow :: * -> * -> *) a b.
(Arrow arrow, Transform a, Transform b) =>
arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b)
zipEnvelope (SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel))
(DSL
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
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 Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk))
-> DSL
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))))
-> (Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
vel) ->
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T 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 (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T 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 (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T 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 (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
halfLife SampleRate (Exp Real)
_sr ->
((T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue
T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T (T 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
((Arguments
(T ((T Real, T Real), (T Real, T (T Real))))
((T Real, T Real), (T Real, T (T Real)))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments
(T ((T Real, T Real), (T Real, T (T Real))))
((T Real, T Real), (T Real, T (T Real)))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> (Arguments
(T ((T Real, T Real), (T Real, T (T Real))))
((T Real, T Real), (T Real, T (T Real)))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \((T ((T Real, T Real), (T Real, T (T Real))) (T Real)
index0,T ((T Real, T Real), (T Real, T (T Real))) (T Real)
depth0), (T ((T Real, T Real), (T Real, T (T Real))) (T Real),
T ((T Real, T Real), (T Real, T (T Real))) (T (T Real)))
fm) ->
let freqs :: T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
freqs = Exp Real
-> (T ((T Real, T Real), (T Real, T (T Real))) (T Real),
T ((T Real, T Real), (T Real, T (T Real))) (T (T Real)))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall inp.
Exp Real
-> (T inp (T Real), T inp (T (T Real)))
-> T inp (T (T (T VectorSize Real)))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T ((T Real, T Real), (T Real, T (T Real))) (T Real),
T ((T Real, T Real), (T Real, T (T Real))) (T (T Real)))
fm
index :: T ((T Real, T Real), (T Real, T (T Real))) (T (T VectorSize Real))
index = (Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T ((T Real, T Real), (T Real, T (T Real))) (T Real)
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T Real, T Real), (T Real, T (T Real))) (T Real)
index0
depth :: T ((T Real, T Real), (T Real, T (T Real))) (T (T VectorSize Real))
depth = (Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T ((T Real, T Real), (T Real, T (T Real))) (T Real)
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T Real, T Real), (T Real, T (T Real))) (T Real)
depth0
expo :: T inp (T (T VectorSize Real))
expo = T (T (T VectorSize Real)) -> T inp (T (T VectorSize Real))
forall out inp. T out -> T inp out
F.fromSignal (T (T (T VectorSize Real)) -> T inp (T (T VectorSize Real)))
-> T (T (T VectorSize Real)) -> T inp (T (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$ Exp Real -> Exp Real -> T (T (T 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
1 Exp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
+ Exp Real
vel)
osci :: T a (T (T VectorSize Real), T (T VectorSize Real))
-> T a (T (T VectorSize Real)) -> T a (T (T VectorSize Real))
osci T a (T (T VectorSize Real), T (T VectorSize Real))
indexDepth T a (T (T VectorSize Real))
freq =
case T a (T (T VectorSize Real), T (T VectorSize Real))
-> (T a (T (T VectorSize Real)), T a (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => f (a, b) -> (f a, f b)
unzip T a (T (T VectorSize Real), T (T VectorSize Real))
indexDepth of
(T a (T (T VectorSize Real))
index1,T a (T (T VectorSize Real))
depth1) ->
(forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T 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 T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T a (T (T VectorSize Real), T (T VectorSize Real))
-> T a (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$&
T a (T (T VectorSize Real))
forall {inp}. T inp (T (T VectorSize Real))
expo T a (T (T VectorSize Real))
-> T a (T (T VectorSize Real)) -> T a (T (T VectorSize Real))
forall a. C a => a -> a -> a
* T a (T (T VectorSize Real))
depth1 T a (T (T VectorSize Real))
-> T a (T (T VectorSize Real)) -> T a (T (T VectorSize Real))
forall a. C a => a -> a -> a
*
((forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T 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 T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T a (T (T VectorSize Real), T (T VectorSize Real))
-> T a (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T a (T (T VectorSize Real))
forall a. C a => a
zero T a (T (T VectorSize Real))
-> T a (T (T VectorSize Real))
-> T a (T (T VectorSize Real), T (T VectorSize Real))
forall a b c. T a b -> T a c -> T a (b, c)
&|& T a (T (T VectorSize Real))
index1T a (T (T VectorSize Real))
-> T a (T (T VectorSize Real)) -> T a (T (T VectorSize Real))
forall a. C a => a -> a -> a
*T a (T (T VectorSize Real))
freq)
T a (T (T VectorSize Real))
-> T a (T (T VectorSize Real))
-> T a (T (T VectorSize Real), T (T VectorSize Real))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
T a (T (T VectorSize Real))
freq
in (forall inp0.
T inp0 (T (T VectorSize Real), T (T VectorSize Real))
-> T inp0 (T (T VectorSize Real))
-> T inp0 (T (T VectorSize Real)))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T VectorSize Real), T (T VectorSize Real))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall a b c inp.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
(forall inp0. T inp0 c -> T inp0 a -> T inp0 b)
-> T inp c -> T inp (T a) -> T inp (T b)
stereoFromMonoControlled T inp0 (T (T VectorSize Real), T (T VectorSize Real))
-> T inp0 (T (T VectorSize Real)) -> T inp0 (T (T VectorSize Real))
forall inp0.
T inp0 (T (T VectorSize Real), T (T VectorSize Real))
-> T inp0 (T (T VectorSize Real)) -> T inp0 (T (T VectorSize Real))
osci (T ((T Real, T Real), (T Real, T (T Real))) (T (T VectorSize Real))
indexT ((T Real, T Real), (T Real, T (T Real))) (T (T VectorSize Real))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T VectorSize Real))
-> T ((T Real, T Real), (T Real, T (T Real)))
(T (T VectorSize Real), T (T VectorSize Real))
forall a b c. T a b -> T a c -> T a (b, c)
&|&T ((T Real, T Real), (T Real, T (T Real))) (T (T VectorSize Real))
depth) T ((T Real, T Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
freqs)))
(Maybe Real
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
pingControlledEnvelope (Real -> Maybe Real
forall a. a -> Maybe a
Just Real
0.01))
stereoFromMonoControlled,
_stereoFromMonoControlledArgs,
_stereoFromMonoControlledGrounded,
_stereoFromMonoControlledGuided,
_stereoFromMonoControlledPrepared,
_stereoFromMonoControlledPrepared2 ::
(Tuple.Phi a, Tuple.Phi b, Tuple.Phi c) =>
(Tuple.Undefined a, Tuple.Undefined b, Tuple.Undefined c) =>
(forall inp0. F.T inp0 c -> F.T inp0 a -> F.T inp0 b) ->
F.T inp c -> F.T inp (Stereo.T a) -> F.T inp (Stereo.T b)
stereoFromMonoControlled :: forall a b c inp.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
(forall inp0. T inp0 c -> T inp0 a -> T inp0 b)
-> T inp c -> T inp (T a) -> T inp (T b)
stereoFromMonoControlled forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc T inp c
ctrl T inp (T a)
stereo =
T (c, a) b -> T (c, T a) (T b)
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 (c, a) b -> T (c, a) b
forall inp out. T inp out -> T inp out
F.compile (T (c, a) b -> T (c, a) b) -> T (c, a) b -> T (c, a) b
forall a b. (a -> b) -> a -> b
$ (T (c, a) c -> T (c, a) a -> T (c, a) b)
-> (T (c, a) c, T (c, a) a) -> T (c, a) b
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry T (c, a) c -> T (c, a) a -> T (c, a) b
forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc ((T (c, a) c, T (c, a) a) -> T (c, a) b)
-> (T (c, a) c, T (c, a) a) -> T (c, a) b
forall a b. (a -> b) -> a -> b
$ T (c, a) (c, a) -> (T (c, a) c, T (c, a) a)
forall (f :: * -> *) a b. Functor f => f (a, b) -> (f a, f b)
unzip (T (c, a) (c, a) -> (T (c, a) c, T (c, a) a))
-> T (c, a) (c, a) -> (T (c, a) c, T (c, a) a)
forall a b. (a -> b) -> a -> b
$ T (c, a) (c, a) -> T (c, a) (c, a)
forall inp out. T inp out -> T inp out
F.lift T (c, a) (c, a)
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id)
T (c, T a) (T b) -> T inp (c, T a) -> T inp (T b)
forall b c a. T b c -> T a b -> T a c
$&
T inp c
ctrl T inp c -> T inp (T a) -> T inp (c, T a)
forall a b c. T a b -> T a c -> T a (b, c)
&|& T inp (T a)
stereo
_stereoFromMonoControlledArgs :: forall a b c inp.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
(forall inp0. T inp0 c -> T inp0 a -> T inp0 b)
-> T inp c -> T inp (T a) -> T inp (T b)
_stereoFromMonoControlledArgs forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc T inp c
ctrl T inp (T a)
stereo =
T (c, a) b -> T (c, T a) (T b)
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
((Arguments (T (AnyArg c, AnyArg a)) (AnyArg c, AnyArg a)
-> T (AnyArg c, AnyArg a) b)
-> T (AnyArg c, AnyArg a) b
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((T (AnyArg c, AnyArg a) c
-> T (AnyArg c, AnyArg a) a -> T (AnyArg c, AnyArg a) b)
-> (T (AnyArg c, AnyArg a) c, T (AnyArg c, AnyArg a) a)
-> T (AnyArg c, AnyArg a) b
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry T (AnyArg c, AnyArg a) c
-> T (AnyArg c, AnyArg a) a -> T (AnyArg c, AnyArg a) b
forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc) T (AnyArg c, AnyArg a) b
-> ((c, a) -> (AnyArg c, AnyArg a)) -> T (c, a) b
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ (c -> AnyArg c, a -> AnyArg a) -> (c, a) -> (AnyArg c, AnyArg a)
forall a c b d. (a -> c, b -> d) -> (a, b) -> (c, d)
mapPair (c -> AnyArg c
forall a. a -> AnyArg a
F.AnyArg, a -> AnyArg a
forall a. a -> AnyArg a
F.AnyArg))
T (c, T a) (T b) -> T inp (c, T a) -> T inp (T b)
forall b c a. T b c -> T a b -> T a c
$&
T inp c
ctrl T inp c -> T inp (T a) -> T inp (c, T a)
forall a b c. T a b -> T a c -> T a (b, c)
&|& T inp (T a)
stereo
_stereoFromMonoControlledGrounded :: forall a b c inp.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
(forall inp0. T inp0 c -> T inp0 a -> T inp0 b)
-> T inp c -> T inp (T a) -> T inp (T b)
_stereoFromMonoControlledGrounded forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc T inp c
ctrl T inp (T a)
stereo =
T (c, a) b -> T (c, T a) (T b)
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
(((Ground (T (c, a)) c, Ground (T (c, a)) a) -> T (c, a) b)
-> T (c, a) b
forall inp args out.
(MakeGroundArguments (T inp) args, GroundArguments args ~ inp) =>
(args -> T inp out) -> T inp out
F.withGroundArgs (((Ground (T (c, a)) c, Ground (T (c, a)) a) -> T (c, a) b)
-> T (c, a) b)
-> ((Ground (T (c, a)) c, Ground (T (c, a)) a) -> T (c, a) b)
-> T (c, a) b
forall a b. (a -> b) -> a -> b
$ \(F.Ground T (c, a) c
c, F.Ground T (c, a) a
s) -> T (c, a) c -> T (c, a) a -> T (c, a) b
forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc T (c, a) c
c T (c, a) a
s)
T (c, T a) (T b) -> T inp (c, T a) -> T inp (T b)
forall b c a. T b c -> T a b -> T a c
$&
T inp c
ctrl T inp c -> T inp (T a) -> T inp (c, T a)
forall a b c. T a b -> T a c -> T a (b, c)
&|& T inp (T a)
stereo
_stereoFromMonoControlledGuided :: forall a b c inp.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
(forall inp0. T inp0 c -> T inp0 a -> T inp0 b)
-> T inp c -> T inp (T a) -> T inp (T b)
_stereoFromMonoControlledGuided forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc T inp c
ctrl T inp (T a)
stereo =
T (c, a) b -> T (c, T a) (T b)
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
((Atom c, Atom a)
-> (GuidedArguments (T (c, a)) (Atom c, Atom a) -> T (c, a) b)
-> T (c, a) b
forall pat inp out.
(MakeGuidedArguments pat, PatternArguments pat ~ inp) =>
pat -> (GuidedArguments (T inp) pat -> T inp out) -> T inp out
F.withGuidedArgs (Atom c
forall a. Atom a
F.atom, Atom a
forall a. Atom a
F.atom) ((T (c, a) c -> T (c, a) a -> T (c, a) b)
-> (T (c, a) c, T (c, a) a) -> T (c, a) b
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry T (c, a) c -> T (c, a) a -> T (c, a) b
forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc))
T (c, T a) (T b) -> T inp (c, T a) -> T inp (T b)
forall b c a. T b c -> T a b -> T a c
$&
T inp c
ctrl T inp c -> T inp (T a) -> T inp (c, T a)
forall a b c. T a b -> T a c -> T a (b, c)
&|& T inp (T a)
stereo
_stereoFromMonoControlledPrepared :: forall a b c inp.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
(forall inp0. T inp0 c -> T inp0 a -> T inp0 b)
-> T inp c -> T inp (T a) -> T inp (T b)
_stereoFromMonoControlledPrepared forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc T inp c
ctrl T inp (T a)
stereo =
T (c, a) b -> T (c, T a) (T b)
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
(PrepareArguments (T (c, a)) (c, a) (T (c, a) c, T (c, a) a)
-> ((T (c, a) c, T (c, a) a) -> T (c, a) b) -> T (c, a) b
forall inp a out.
PrepareArguments (T inp) inp a -> (a -> T inp out) -> T inp out
F.withPreparedArgs (PrepareArguments (T (c, a)) c (T (c, a) c)
-> PrepareArguments (T (c, a)) a (T (c, a) a)
-> PrepareArguments (T (c, a)) (c, a) (T (c, a) c, T (c, a) a)
forall (f :: * -> *) a0 b0 a1 b1.
Functor f =>
PrepareArguments f a0 b0
-> PrepareArguments f a1 b1 -> PrepareArguments f (a0, a1) (b0, b1)
F.pairArgs PrepareArguments (T (c, a)) c (T (c, a) c)
forall (f :: * -> *) a. PrepareArguments f a (f a)
F.atomArg PrepareArguments (T (c, a)) a (T (c, a) a)
forall (f :: * -> *) a. PrepareArguments f a (f a)
F.atomArg) ((T (c, a) c -> T (c, a) a -> T (c, a) b)
-> (T (c, a) c, T (c, a) a) -> T (c, a) b
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry T (c, a) c -> T (c, a) a -> T (c, a) b
forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc))
T (c, T a) (T b) -> T inp (c, T a) -> T inp (T b)
forall b c a. T b c -> T a b -> T a c
$&
T inp c
ctrl T inp c -> T inp (T a) -> T inp (c, T a)
forall a b c. T a b -> T a c -> T a (b, c)
&|& T inp (T a)
stereo
_stereoFromMonoControlledPrepared2 :: forall a b c inp.
(Phi a, Phi b, Phi c, Undefined a, Undefined b, Undefined c) =>
(forall inp0. T inp0 c -> T inp0 a -> T inp0 b)
-> T inp c -> T inp (T a) -> T inp (T b)
_stereoFromMonoControlledPrepared2 forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc T inp c
ctrl T inp (T a)
stereo =
T (c, a) b -> T (c, T a) (T b)
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
(PrepareArguments (T (c, a)) c (T (c, a) c)
-> PrepareArguments (T (c, a)) a (T (c, a) a)
-> (T (c, a) c -> T (c, a) a -> T (c, a) b)
-> T (c, a) b
forall inp0 inp1 a b out.
PrepareArguments (T (inp0, inp1)) inp0 a
-> PrepareArguments (T (inp0, inp1)) inp1 b
-> (a -> b -> T (inp0, inp1) out)
-> T (inp0, inp1) out
F.withPreparedArgs2 PrepareArguments (T (c, a)) c (T (c, a) c)
forall (f :: * -> *) a. PrepareArguments f a (f a)
F.atomArg PrepareArguments (T (c, a)) a (T (c, a) a)
forall (f :: * -> *) a. PrepareArguments f a (f a)
F.atomArg T (c, a) c -> T (c, a) a -> T (c, a) b
forall inp0. T inp0 c -> T inp0 a -> T inp0 b
proc)
T (c, T a) (T b) -> T inp (c, T a) -> T inp (T b)
forall b c a. T b c -> T a b -> T a c
$&
T inp c
ctrl T inp c -> T inp (T a) -> T inp (c, T a)
forall a b c. T a b -> T a c -> T a (b, c)
&|& T inp (T a)
stereo
type RealValue = MultiValue.T Real
bellNoiseStereoFM ::
IO (SampleRate Real -> Real -> Real ->
PIO.T
(WithEnvelopeControl
(Zip.T
(Zip.T (Control Real) (Control Real))
DetuneBendModControl))
StereoChunk)
bellNoiseStereoFM :: IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
bellNoiseStereoFM =
((SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
-> (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
-> IO
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
forall (f :: * -> *) a b c d.
Applicative f =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
liftA3
(\SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
osc SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real -> Real -> T EnvelopeControl Chunk
envInf SampleRate Real
sr Real
vel Real
freq ->
SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
osc SampleRate Real
sr
T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl)))
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall a b. (a -> b) -> a -> b
$ T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
forall a b. (a -> b) -> a -> b
$
T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl)
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall a b. (a -> b) -> a -> b
$
(T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr Real
freq)
T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T EnvelopeControl (T Chunk (T Chunk Chunk))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall (arrow :: * -> * -> *) a b.
(Arrow arrow, Transform a, Transform b) =>
arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b)
zipEnvelope
(T EnvelopeControl Chunk
-> T EnvelopeControl (T Chunk Chunk)
-> T EnvelopeControl (T Chunk (T Chunk Chunk))
forall (arrow :: * -> * -> *) a b c.
(Arrow arrow, Transform a, Transform b, Transform c) =>
arrow a b -> arrow a c -> arrow a (T b c)
Zip.arrowFanoutShorten
(SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr (Real
velReal -> Real -> Real
forall a. C a => a -> a -> a
*Real
0.5))
(let shortenTimes ::
Real ->
PIOId (Zip.T (Control Time) (Control Time))
shortenTimes :: Real -> PIOId (T (Control Time) (Control Time))
shortenTimes Real
n =
let rn :: Real
rn = Real -> Real
forall a. C a => a -> a
recip Real
n
in (T (Control Time) (Control Time)
-> PIOId (T (Control Time) (Control Time))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T a c) (T b c)
Zip.arrowFirst (T (Control Time) (Control Time)
-> PIOId (T (Control Time) (Control Time)))
-> T (Control Time) (Control Time)
-> PIOId (T (Control Time) (Control Time))
forall a b. (a -> b) -> a -> b
$ (Control Time -> Control Time) -> T (Control Time) (Control Time)
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((Control Time -> Control Time) -> T (Control Time) (Control Time))
-> (Control Time -> Control Time)
-> T (Control Time) (Control Time)
forall a b. (a -> b) -> a -> b
$ (Time -> Time) -> Control Time -> Control Time
forall a b. (a -> b) -> T ShortStrictTime a -> T ShortStrictTime b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Time -> Time) -> Control Time -> Control Time)
-> (Time -> Time) -> Control Time -> Control Time
forall a b. (a -> b) -> a -> b
$ Real -> Time -> Time
forall u a. (C u, C a) => a -> T u a -> T u a
DN.scale Real
rn)
PIOId (T (Control Time) (Control Time))
-> PIOId (T (Control Time) (Control Time))
-> PIOId (T (Control Time) (Control Time))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T (Control Time) (Control Time)
-> PIOId (T (Control Time) (Control Time))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (Control Time) (Control Time)
-> PIOId (T (Control Time) (Control Time)))
-> T (Control Time) (Control Time)
-> PIOId (T (Control Time) (Control Time))
forall a b. (a -> b) -> a -> b
$ (Control Time -> Control Time) -> T (Control Time) (Control Time)
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((Control Time -> Control Time) -> T (Control Time) (Control Time))
-> (Control Time -> Control Time)
-> T (Control Time) (Control Time)
forall a b. (a -> b) -> a -> b
$ (Time -> Time) -> Control Time -> Control Time
forall a b. (a -> b) -> T ShortStrictTime a -> T ShortStrictTime b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Time -> Time) -> Control Time -> Control Time)
-> (Time -> Time) -> Control Time -> Control Time
forall a b. (a -> b) -> a -> b
$ Real -> Time -> Time
forall u a. (C u, C a) => a -> T u a -> T u a
DN.scale Real
rn)
in T EnvelopeControl Chunk
-> T EnvelopeControl Chunk -> T EnvelopeControl (T Chunk Chunk)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow a c -> arrow a (T b c)
PIO.zip
(SampleRate Real -> Real -> T EnvelopeControl Chunk
envInf SampleRate Real
sr (Real
velReal -> Real -> Real
forall a. C a => a -> a -> a
*Real
2)
T EnvelopeControl Chunk
-> T EnvelopeControl EnvelopeControl -> T EnvelopeControl Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
PIOId (T (Control Time) (Control Time))
-> T EnvelopeControl EnvelopeControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (Real -> PIOId (T (Control Time) (Control Time))
shortenTimes Real
4))
(SampleRate Real -> Real -> T EnvelopeControl Chunk
envInf SampleRate Real
sr (Real
velReal -> Real -> Real
forall a. C a => a -> a -> a
*Real
4)
T EnvelopeControl Chunk
-> T EnvelopeControl EnvelopeControl -> T EnvelopeControl Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
PIOId (T (Control Time) (Control Time))
-> T EnvelopeControl EnvelopeControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (Real -> PIOId (T (Control Time) (Control Time))
shortenTimes Real
7)))))
(DSL
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
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 (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk))
-> DSL
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T (T Chunk (T Chunk Chunk))
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
forall a b. (a -> b) -> a -> b
$
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T 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 ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T 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 ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T 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 ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
((Arguments
(T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real)))))
((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments
(T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real)))))
((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Arguments
(T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real)))))
((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \((T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env1,(T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env4,T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env7)),((T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
noiseAmp0,T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
noiseReson),(T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real),
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T Real)))
fm)) ->
let noiseAmp :: T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
noiseAmp = (Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
noiseAmp0
noiseParam ::
Causal.T
(RealValue, RealValue)
(Moog.Parameter TypeNum.D8 RealValue)
noiseParam :: T (T Real, T Real) (Parameter D8 (T Real))
noiseParam =
T (T Real, T Real) (Parameter D8 (T Real))
-> T (T Real, (T Real, T Real)) (Parameter D8 (T 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 D8 (Exp Real))
-> T (T Real, T Real) (Parameter D8 (T 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 D8 -> Exp Real -> Exp Real -> Parameter D8 (Exp Real)
forall n a. (Natural n, C a) => Proxy n -> a -> a -> Parameter n a
Moog.parameter Proxy D8
TypeNum.d8))
T (T Real, (T Real, T Real)) (Parameter D8 (T Real))
-> Real -> T (T Real, T Real) (Parameter D8 (T Real))
forall (process :: * -> * -> *) a b c.
(C process, C a) =>
process (T a, b) c -> a -> process b c
$<# (Real
100 Real -> Real -> Real
forall a. C a => a -> a -> a
/ Int -> Real
forall a b. (C a, C b) => a -> b
fromIntegral Int
vectorSize :: Real)
noise :: T inp (T (T VectorSize Real))
noise = T (T (T VectorSize Real)) -> T inp (T (T VectorSize Real))
forall out inp. T out -> T inp out
F.fromSignal (Exp Word32 -> Exp Real -> T (T (T 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)
freqs :: T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
freqs = Exp Real
-> (T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real),
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall inp.
Exp Real
-> (T inp (T Real), T inp (T (T Real)))
-> T inp (T (T (T VectorSize Real)))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed (T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real),
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T Real)))
fm
osci :: Exp Real
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> Exp Real
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
osci Exp Real
amp T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env Exp Real
n =
Exp Real
-> T (T (T (T VectorSize Real))) (T (T (T 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 (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
(T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T (T VectorSize Real))) (T (T (T 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.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T 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 T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, RationalConstant a, Real a) =>
a -> CodeGenFunction r a
WaveL.approxSine4 T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> SignalOf T (T (T VectorSize Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (T (T VectorSize Real))
T (T (T VectorSize Real))
forall a. C a => a
zero)
T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
Exp Real
-> T (T (T (T VectorSize Real))) (T (T (T 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
T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
freqs)
in T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
(T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
(T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
noiseAmp T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
forall a. C a => a -> a -> a
* T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env1)
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
(T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b.
Applicative f =>
(f a -> f b) -> f (T a) -> f (T b)
Stereo.liftApplicative
(\T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
freq ->
T (Parameter D8 (T Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall parameter a b. C parameter a b => T (parameter, a) b
CtrlPS.process T (Parameter D8 (T Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(Parameter D8 (T Real), T (T VectorSize Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$&
(T (T Real, T Real) (Parameter D8 (T Real))
noiseParam T (T Real, T Real) (Parameter D8 (T Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real, T Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(Parameter D8 (T Real))
forall b c a. T b c -> T a b -> T a c
$& T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
noiseReson T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real, T Real)
forall a b c. T a b -> T a c -> T a (b, c)
&|&
((Exp (T VectorSize Real) -> Exp Real)
-> T (T (T VectorSize Real)) (T Real)
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 (T (T VectorSize Real)) (T Real)
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
forall b c a. T b c -> T a b -> T a c
$& T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
freq))
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(Parameter D8 (T Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(Parameter D8 (T Real), T (T VectorSize Real))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
forall {inp}. T inp (T (T VectorSize Real))
noise)
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
freqs)
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a. C a => a -> a -> a
+ Exp Real
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> Exp Real
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
osci Exp Real
1.00 T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env1 Exp Real
1
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a. C a => a -> a -> a
+ Exp Real
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> Exp Real
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
osci Exp Real
0.10 T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env4 Exp Real
4
T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a. C a => a -> a -> a
+ Exp Real
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> Exp Real
-> T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
osci Exp Real
0.01 T ((T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env7 Exp Real
7))
(Maybe Real
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
pingControlledEnvelope (Real -> Maybe Real
forall a. a -> Maybe a
Just Real
0.01))
(Maybe Real
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
pingControlledEnvelope Maybe Real
forall a. Maybe a
Nothing)
stringControlledEnvelope ::
IO (SampleRate Real -> Real ->
PIO.T EnvelopeControl Chunk)
stringControlledEnvelope :: IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
stringControlledEnvelope =
((SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
-> (SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
-> (SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
-> SampleRate Real
-> Real
-> T EnvelopeControl Chunk)
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
forall (f :: * -> *) a b c d.
Applicative f =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
liftA3
(\SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
attack SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
sustain SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
release SampleRate Real
sr Real
vel ->
let amp :: Real
amp = Real -> Real
forall a. C a => a -> a
amplitudeFromVelocity Real
vel
in T EnvelopeControl Chunk
-> (Real -> T EnvelopeControl Chunk) -> T EnvelopeControl Chunk
forall a b n.
(Transform a, Vector b, Positive n) =>
T a (Vector (T n b))
-> (b -> T a (Vector (T n b))) -> T a (Vector (T n b))
PSt.continuePacked
((SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
attack SampleRate Real
sr Real
amp T (T ShortStrictTime (ParameterPacked (T VectorSize Real))) Chunk
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
forall a. Semigroup a => a -> a -> a
<>
SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
sustain SampleRate Real
sr Real
amp)
T (T ShortStrictTime (ParameterPacked (T VectorSize Real))) Chunk
-> T EnvelopeControl
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T EnvelopeControl Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T GateChunk
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall signal a. Transform signal => T (T (Chunk a) signal) signal
Gate.shorten
T (T GateChunk
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T EnvelopeControl
(T GateChunk
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
-> T EnvelopeControl
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (Control Time) (Control Time))
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T EnvelopeControl
(T GateChunk
(T ShortStrictTime (ParameterPacked (T VectorSize Real))))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond ((T (Control Time) (Control Time)
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T (T (Control Time) (Control Time))
(T ShortStrictTime (ParameterPacked (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (SampleRate Real
-> Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall (f :: * -> *).
Functor f =>
SampleRate Real
-> f Time -> f (ParameterPacked (T VectorSize Real))
halfLifeControl SampleRate Real
sr (Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> (T (Control Time) (Control Time) -> Control Time)
-> T (Control Time) (Control Time)
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. T (Control Time) (Control Time) -> Control Time
forall a b. T a b -> a
Zip.first)))
(\Real
y ->
SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk
release SampleRate Real
sr Real
y
T (T ShortStrictTime (ParameterPacked (T VectorSize Real))) Chunk
-> (EnvelopeControl
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> T EnvelopeControl Chunk
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^
SampleRate Real
-> Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall (f :: * -> *).
Functor f =>
SampleRate Real
-> f Time -> f (ParameterPacked (T VectorSize Real))
halfLifeControl SampleRate Real
sr (Control Time
-> T ShortStrictTime (ParameterPacked (T VectorSize Real)))
-> (EnvelopeControl -> Control Time)
-> EnvelopeControl
-> T ShortStrictTime (ParameterPacked (T VectorSize Real))
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. T (Control Time) (Control Time) -> Control Time
forall a b. T a b -> b
Zip.second (T (Control Time) (Control Time) -> Control Time)
-> (EnvelopeControl -> T (Control Time) (Control Time))
-> EnvelopeControl
-> Control Time
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. EnvelopeControl -> T (Control Time) (Control Time)
forall a b. T a b -> b
Zip.second))
(DSL
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
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 ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk))
-> DSL
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))))
-> (Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
amp) (SampleRate Exp Real
_sr) ->
SignalOf T (T (T VectorSize Real))
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T 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 -> T (T (T VectorSize Real))
forall n a. Vector n a => Exp a -> T (Serial n a)
SigPS.constant Exp Real
amp)
T (ParameterPacked (T (T VectorSize Real))) (T (T VectorSize Real))
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
forall a. C a => a -> a -> a
-
Exp Real -> T (T (T VectorSize Real)) (T (T VectorSize Real))
takeThreshold Exp Real
1e-4
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
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 (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
forall a n.
(PseudoRing a, IntegerConstant a, Positive n, Vector n a, C a) =>
Exp a -> T (ParameterPacked (Value n a)) (Value n a)
Exp.causalPacked Exp Real
amp T (ParameterPacked (T (T VectorSize Real))) (T (T VectorSize Real))
-> (T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real)))
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real))
forall a. T (ParameterPacked a) -> ParameterPacked (T a)
Exp.unMultiValueParameterPacked)
(DSL
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
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 ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk))
-> DSL
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))))
-> (Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
amp) (SampleRate Exp Real
_sr) ->
SignalOf T (T (T VectorSize Real))
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T 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 -> T (T (T VectorSize Real))
forall n a. Vector n a => Exp a -> T (Serial n a)
SigPS.constant Exp Real
amp))
(DSL
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
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 ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk))
-> DSL
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
(Element
(In
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
(Element
(Out
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)))
-> IO
(SampleRate Real
-> Real
-> T (T ShortStrictTime (ParameterPacked (T VectorSize Real)))
Chunk)
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))))
-> (Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(Number Exp Real
level) (SampleRate Exp Real
_sr) ->
Exp Real -> T (T (T VectorSize Real)) (T (T VectorSize Real))
takeThreshold Exp Real
0.01
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
-> T (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
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 (ParameterPacked (T (T VectorSize Real)))
(T (T VectorSize Real))
forall a n.
(PseudoRing a, IntegerConstant a, Positive n, Vector n a, C a) =>
Exp a -> T (ParameterPacked (Value n a)) (Value n a)
Exp.causalPacked Exp Real
level T (ParameterPacked (T (T VectorSize Real))) (T (T VectorSize Real))
-> (T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real)))
-> T (T (ParameterPacked (T VectorSize Real)))
(T (T VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ T (ParameterPacked (T VectorSize Real))
-> ParameterPacked (T (T VectorSize Real))
forall a. T (ParameterPacked a) -> ParameterPacked (T a)
Exp.unMultiValueParameterPacked)
windCore ::
F.T a (MultiValue.T Real) ->
F.T a (MultiValue.T (BM.T Real)) ->
SampleRate (Exp Real) ->
F.T a (Stereo.T VectorValue)
windCore :: forall a.
T a (T Real)
-> T a (T (T Real))
-> SampleRate (Exp Real)
-> T a (T (T (T VectorSize Real)))
windCore T a (T Real)
reson T a (T (T Real))
fm =
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real) -> T a (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T a (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
0.2 ((Exp Real
-> SampleRate (Exp Real) -> T a (T (T (T VectorSize Real))))
-> SampleRate (Exp Real) -> T a (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real) -> T a (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T a (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
sr ->
let modu :: T a (T Real)
modu =
(Exp (T VectorSize Real) -> Exp Real)
-> T (T (T VectorSize Real)) (T Real)
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 (T (T VectorSize Real)) (T Real)
-> T a (T (T VectorSize Real)) -> T a (T Real)
forall b c a. T b c -> T a b -> T a c
$&
((T (T VectorSize Real) -> T (T VectorSize Real))
-> T a (T (T VectorSize Real)) -> T a (T (T VectorSize Real))
forall a b. (a -> b) -> T a a -> T a b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (T (T VectorSize Real)
-> T (T VectorSize Real) -> T (T VectorSize Real)
forall a. a -> a -> a
`asTypeOf` (T (T VectorSize Real)
forall a. HasCallStack => a
undefined :: VectorValue)) (T a (T (T VectorSize Real)) -> T a (T (T VectorSize Real)))
-> T a (T (T VectorSize Real)) -> T a (T (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$
Exp Real -> T a (T (T Real)) -> T a (T (T VectorSize Real))
forall inp.
Exp Real -> T inp (T (T Real)) -> T inp (T (T VectorSize Real))
frequencyFromBendModulationPacked Exp Real
speed T a (T (T Real))
fm)
in T (Parameter D8 (MultiValuesOf (Exp Real)), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (Parameter D8 (MultiValuesOf (Exp Real)),
T (T (T VectorSize Real)))
(T (T (T 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 D8 (MultiValuesOf (Exp Real)), T (T VectorSize Real))
(T (T VectorSize Real))
forall parameter a b. C parameter a b => T (parameter, a) b
CtrlPS.process T (Parameter D8 (MultiValuesOf (Exp Real)),
T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T a
(Parameter D8 (MultiValuesOf (Exp Real)),
T (T (T VectorSize Real)))
-> T a (T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
((Exp Real -> Exp Real -> Parameter D8 (Exp Real))
-> T (T Real, T Real) (Parameter D8 (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 D8 -> Exp Real -> Exp Real -> Parameter D8 (Exp Real)
forall n a. (Natural n, C a) => Proxy n -> a -> a -> Parameter n a
Moog.parameter Proxy D8
TypeNum.d8) T (T Real, T Real) (Parameter D8 (MultiValuesOf (Exp Real)))
-> T a (T Real, T Real)
-> T a (Parameter D8 (MultiValuesOf (Exp Real)))
forall b c a. T b c -> T a b -> T a c
$& T a (T Real)
reson T a (T Real) -> T a (T Real) -> T a (T Real, T Real)
forall a b c. T a b -> T a c -> T a (b, c)
&|& T a (T Real)
modu)
T a (Parameter D8 (MultiValuesOf (Exp Real)))
-> T a (T (T (T VectorSize Real)))
-> T a
(Parameter D8 (MultiValuesOf (Exp Real)),
T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
T (T (T (T VectorSize Real))) -> T a (T (T (T VectorSize Real)))
forall out inp. T out -> T inp out
F.fromSignal (SampleRate (Exp Real) -> T (T (T (T VectorSize Real)))
stereoNoise SampleRate (Exp Real)
sr)
wind ::
IO (SampleRate Real -> Real -> Real ->
PIO.T
(WithEnvelopeControl DetuneBendModControl)
StereoChunk)
wind :: IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl DetuneBendModControl) StereoChunk)
wind =
((SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)
-> (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl DetuneBendModControl) StereoChunk)
-> IO
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl DetuneBendModControl) StereoChunk)
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 Chunk DetuneBendModControl) StereoChunk
osc SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel Real
freq ->
SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk
osc SampleRate Real
sr
T (T Chunk DetuneBendModControl) StereoChunk
-> T (WithEnvelopeControl DetuneBendModControl)
(T Chunk DetuneBendModControl)
-> T (WithEnvelopeControl DetuneBendModControl) StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T DetuneBendModControl DetuneBendModControl
-> T (T Chunk DetuneBendModControl) (T Chunk DetuneBendModControl)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T DetuneBendModControl DetuneBendModControl
-> T (T Chunk DetuneBendModControl) (T Chunk DetuneBendModControl))
-> T DetuneBendModControl DetuneBendModControl
-> T (T Chunk DetuneBendModControl) (T Chunk DetuneBendModControl)
forall a b. (a -> b) -> a -> b
$ T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl)
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall a b. (a -> b) -> a -> b
$
(T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr Real
freq)
T (T Chunk DetuneBendModControl) (T Chunk DetuneBendModControl)
-> T (WithEnvelopeControl DetuneBendModControl)
(T Chunk DetuneBendModControl)
-> T (WithEnvelopeControl DetuneBendModControl)
(T Chunk DetuneBendModControl)
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T EnvelopeControl Chunk
-> T (WithEnvelopeControl DetuneBendModControl)
(T Chunk DetuneBendModControl)
forall (arrow :: * -> * -> *) a b.
(Arrow arrow, Transform a, Transform b) =>
arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b)
zipEnvelope (SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel))
(DSL
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)
(Element
(In
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)))
(Element
(Out
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)))
-> IO
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)
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 Chunk DetuneBendModControl) StereoChunk)
(Element
(In
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)))
(Element
(Out
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)))
-> IO
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk))
-> DSL
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)
(Element
(In
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)))
(Element
(Out
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)))
-> IO
(SampleRate Real -> T (T Chunk DetuneBendModControl) StereoChunk)
forall a b. (a -> b) -> a -> b
$ \SampleRate (Exp Real)
sr ->
(Arguments
(T (T (T VectorSize Real), (T Real, T (T Real))))
(T (T VectorSize Real), (T Real, T (T Real)))
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments
(T (T (T VectorSize Real), (T Real, T (T Real))))
(T (T VectorSize Real), (T Real, T (T Real)))
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> (Arguments
(T (T (T VectorSize Real), (T Real, T (T Real))))
(T (T VectorSize Real), (T Real, T (T Real)))
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T (T VectorSize Real))))
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T VectorSize Real))
env,(T (T (T VectorSize Real), (T Real, T (T Real))) (T Real)
reson,T (T (T VectorSize Real), (T Real, T (T Real))) (T (T Real))
fm)) ->
T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$& T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T VectorSize Real))
env T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T VectorSize Real))
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T VectorSize Real), T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|& T (T (T VectorSize Real), (T Real, T (T Real))) (T Real)
-> T (T (T VectorSize Real), (T Real, T (T Real))) (T (T Real))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real), (T Real, T (T Real)))
(T (T (T VectorSize Real)))
forall a.
T a (T Real)
-> T a (T (T Real))
-> SampleRate (Exp Real)
-> T a (T (T (T VectorSize Real)))
windCore T (T (T VectorSize Real), (T Real, T (T Real))) (T Real)
reson T (T (T VectorSize Real), (T Real, T (T Real))) (T (T Real))
fm SampleRate (Exp Real)
sr)
IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
stringControlledEnvelope
windPhaser ::
IO (SampleRate Real -> Real -> Real ->
PIO.T
(WithEnvelopeControl
(Zip.T (Control Real)
(Zip.T (Control Frequency) DetuneBendModControl)))
StereoChunk)
windPhaser :: IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
StereoChunk)
windPhaser =
((SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)
-> (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
StereoChunk)
-> IO
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
StereoChunk)
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 Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk
osc SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel Real
freq ->
SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk
osc SampleRate Real
sr
T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk
-> T (WithEnvelopeControl
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
(T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
-> T (WithEnvelopeControl
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T (T (Control Real) (T (Control Frequency) DetuneBendModControl))
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl))
-> T (T Chunk
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
(T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T (Control Real) (T (Control Frequency) DetuneBendModControl))
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl))
-> T (T Chunk
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
(T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl))))
-> T (T (Control Real)
(T (Control Frequency) DetuneBendModControl))
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl))
-> T (T Chunk
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
(T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
forall a b. (a -> b) -> a -> b
$ T (T (Control Frequency) DetuneBendModControl)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)
-> T (T (Control Real)
(T (Control Frequency) DetuneBendModControl))
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T (Control Frequency) DetuneBendModControl)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)
-> T (T (Control Real)
(T (Control Frequency) DetuneBendModControl))
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
-> T (T (Control Frequency) DetuneBendModControl)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)
-> T (T (Control Real)
(T (Control Frequency) DetuneBendModControl))
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl))
forall a b. (a -> b) -> a -> b
$
T (Control Frequency)
(T ShortStrictTime (CascadeParameter D8 Real))
-> T DetuneBendModControl DetuneBendModControl
-> T (T (Control Frequency) DetuneBendModControl)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)
forall (arrow :: * -> * -> *) a c b d.
Arrow arrow =>
arrow a c -> arrow b d -> arrow (T a b) (T c d)
Zip.arrowSplit
((Control Frequency -> T ShortStrictTime (CascadeParameter D8 Real))
-> T (Control Frequency)
(T ShortStrictTime (CascadeParameter D8 Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((Control Frequency
-> T ShortStrictTime (CascadeParameter D8 Real))
-> T (Control Frequency)
(T ShortStrictTime (CascadeParameter D8 Real)))
-> (Control Frequency
-> T ShortStrictTime (CascadeParameter D8 Real))
-> T (Control Frequency)
(T ShortStrictTime (CascadeParameter D8 Real))
forall a b. (a -> b) -> a -> b
$ (Real -> CascadeParameter D8 Real)
-> Control Real -> T ShortStrictTime (CascadeParameter D8 Real)
forall a b. (a -> b) -> T ShortStrictTime a -> T ShortStrictTime b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Proxy D8 -> Real -> CascadeParameter D8 Real
forall a n.
(C a, Natural n) =>
Proxy n -> a -> CascadeParameter n a
Allpass.flangerParameter Proxy D8
TypeNum.d8) (Control Real -> T ShortStrictTime (CascadeParameter D8 Real))
-> (Control Frequency -> Control Real)
-> Control Frequency
-> T ShortStrictTime (CascadeParameter D8 Real)
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
SampleRate Real -> Control Frequency -> Control Real
forall (f :: * -> *).
Functor f =>
SampleRate Real -> f Frequency -> f Real
frequencyControl SampleRate Real
sr)
(T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl)
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall a b. (a -> b) -> a -> b
$
(T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr Real
freq))
T (T Chunk
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
(T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
-> T (WithEnvelopeControl
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
(T Chunk
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
-> T (WithEnvelopeControl
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
(T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T EnvelopeControl Chunk
-> T (WithEnvelopeControl
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
(T Chunk
(T (Control Real) (T (Control Frequency) DetuneBendModControl)))
forall (arrow :: * -> * -> *) a b.
(Arrow arrow, Transform a, Transform b) =>
arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b)
zipEnvelope (SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel))
(DSL
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)
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 Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk))
-> DSL
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (Control Real)
(T (T ShortStrictTime (CascadeParameter D8 Real))
DetuneBendModControl)))
StereoChunk)
forall a b. (a -> b) -> a -> b
$ \SampleRate (Exp Real)
sr ->
((Arguments
(T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real))))))
(T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real))))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments
(T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real))))))
(T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real))))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real))))
-> (Arguments
(T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real))))))
(T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real))))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
env,(T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T Real)
phaserMix0,(T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (CascadeParameter D8 Real))
phaserFreq,(T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T Real)
reson,T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T Real))
fm)))) ->
let phaserMix :: T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
phaserMix = (Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T Real)
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T Real)
phaserMix0
noise :: T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
noise = T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T Real)
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T Real))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall a.
T a (T Real)
-> T a (T (T Real))
-> SampleRate (Exp Real)
-> T a (T (T (T VectorSize Real)))
windCore T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T Real)
reson T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T Real))
fm SampleRate (Exp Real)
sr
in T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
env T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
((T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$& (T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
1 T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
forall a. C a => a -> a -> a
- T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
phaserMix) T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|& T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
noise)
T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall a. C a => a -> a -> a
+
(T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
phaserMix T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
(T (CascadeParameter D8 (T Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (CascadeParameter D8 (T Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall (arrow :: * -> * -> *) c a b.
Arrow arrow =>
arrow (c, a) b -> arrow (c, T a) (T b)
Stereo.arrowFromMonoControlled T (CascadeParameter D8 (T Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall parameter a b. C parameter a b => T (parameter, a) b
CtrlPS.process T (CascadeParameter D8 (T Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(CascadeParameter D8 (T Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
(T (CascadeParameter D8 Real) -> CascadeParameter D8 (T Real)
forall n a. T (CascadeParameter n a) -> CascadeParameter n (T a)
Allpass.cascadeParameterUnMultiValue (T (CascadeParameter D8 Real) -> CascadeParameter D8 (T Real))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (CascadeParameter D8 Real))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(CascadeParameter D8 (T Real))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (CascadeParameter D8 Real))
phaserFreq)
T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(CascadeParameter D8 (T Real))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(CascadeParameter D8 (T Real), T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|& T (T (T VectorSize Real),
(T Real, (T (CascadeParameter D8 Real), (T Real, T (T Real)))))
(T (T (T VectorSize Real)))
noise)))))
IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
stringControlledEnvelope
phaserOsci ::
(Exp Real -> Exp Real -> Causal.T a VectorValue) ->
Causal.T a (Stereo.T VectorValue)
phaserOsci :: forall a.
(Exp Real -> Exp Real -> T a (T (T VectorSize Real)))
-> T a (T (T (T VectorSize Real)))
phaserOsci Exp Real -> Exp Real -> T a (T (T VectorSize Real))
osci =
Exp Real
-> T (T (T (T VectorSize Real))) (T (T (T 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 (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T a (T (T (T VectorSize Real)))
-> T a (T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
([T a (T (T VectorSize Real))] -> T a (T (T VectorSize Real)))
-> T [T a (T (T VectorSize Real))]
-> T a (T (T (T 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 a (T (T VectorSize Real))] -> T a (T (T VectorSize Real))
forall a. C a => [a] -> a
sumNested
([T a (T (T VectorSize Real))]
-> [T a (T (T VectorSize Real))] -> T [T a (T (T VectorSize Real))]
forall a. a -> a -> T a
Stereo.cons
((Exp Real -> Exp Real -> T a (T (T VectorSize Real)))
-> [Exp Real] -> [Exp Real] -> [T a (T (T VectorSize Real))]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith Exp Real -> Exp Real -> T a (T (T VectorSize Real))
osci [Exp Real
0.1, Exp Real
0.7, Exp Real
0.2, Exp Real
0.3] [Exp Real
1.0, -Exp Real
0.4, Exp Real
0.5, -Exp Real
0.7])
((Exp Real -> Exp Real -> T a (T (T VectorSize Real)))
-> [Exp Real] -> [Exp Real] -> [T a (T (T VectorSize Real))]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith Exp Real -> Exp Real -> T a (T (T VectorSize Real))
osci [Exp Real
0.4, Exp Real
0.9, Exp Real
0.6, Exp Real
0.5] [Exp Real
0.4, -Exp Real
1.0, Exp Real
0.7, -Exp Real
0.5]))
type
StringInstrument =
SampleRate Real -> Real -> Real ->
PIO.T
(WithEnvelopeControl
(Zip.T (Control Real) DetuneBendModControl))
StereoChunk
softStringShapeCore ::
(forall r.
VectorValue ->
VectorValue ->
LLVM.CodeGenFunction r VectorValue) ->
IO StringInstrument
softStringShapeCore :: (forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> IO StringInstrument
softStringShapeCore forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
wave =
((SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl)) StereoChunk)
-> (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> StringInstrument)
-> IO
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl)) StereoChunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> IO StringInstrument
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 Chunk (T (Control Real) DetuneBendModControl)) StereoChunk
osc SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel Real
freq ->
SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl)) StereoChunk
osc SampleRate Real
sr
T (T Chunk (T (Control Real) DetuneBendModControl)) StereoChunk
-> T (WithEnvelopeControl (T (Control Real) DetuneBendModControl))
(T Chunk (T (Control Real) DetuneBendModControl))
-> T (WithEnvelopeControl (T (Control Real) DetuneBendModControl))
StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T (T (Control Real) DetuneBendModControl)
(T (Control Real) DetuneBendModControl)
-> T (T Chunk (T (Control Real) DetuneBendModControl))
(T Chunk (T (Control Real) DetuneBendModControl))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T (Control Real) DetuneBendModControl)
(T (Control Real) DetuneBendModControl)
-> T (T Chunk (T (Control Real) DetuneBendModControl))
(T Chunk (T (Control Real) DetuneBendModControl)))
-> T (T (Control Real) DetuneBendModControl)
(T (Control Real) DetuneBendModControl)
-> T (T Chunk (T (Control Real) DetuneBendModControl))
(T Chunk (T (Control Real) DetuneBendModControl))
forall a b. (a -> b) -> a -> b
$ T DetuneBendModControl DetuneBendModControl
-> T (T (Control Real) DetuneBendModControl)
(T (Control Real) DetuneBendModControl)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T DetuneBendModControl DetuneBendModControl
-> T (T (Control Real) DetuneBendModControl)
(T (Control Real) DetuneBendModControl))
-> T DetuneBendModControl DetuneBendModControl
-> T (T (Control Real) DetuneBendModControl)
(T (Control Real) DetuneBendModControl)
forall a b. (a -> b) -> a -> b
$
T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl)
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall a b. (a -> b) -> a -> b
$
(T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr Real
freq)
T (T Chunk (T (Control Real) DetuneBendModControl))
(T Chunk (T (Control Real) DetuneBendModControl))
-> T (WithEnvelopeControl (T (Control Real) DetuneBendModControl))
(T Chunk (T (Control Real) DetuneBendModControl))
-> T (WithEnvelopeControl (T (Control Real) DetuneBendModControl))
(T Chunk (T (Control Real) DetuneBendModControl))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T EnvelopeControl Chunk
-> T (WithEnvelopeControl (T (Control Real) DetuneBendModControl))
(T Chunk (T (Control Real) DetuneBendModControl))
forall (arrow :: * -> * -> *) a b.
(Arrow arrow, Transform a, Transform b) =>
arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b)
zipEnvelope (SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel))
(DSL
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl)) StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl)) StereoChunk)
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 Chunk (T (Control Real) DetuneBendModControl)) StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl))
StereoChunk))
-> DSL
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl)) StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk (T (Control Real) DetuneBendModControl)) StereoChunk)
forall a b. (a -> b) -> a -> b
$
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real), (T Real, (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real), (T Real, (T Real, T (T 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 (T (T VectorSize Real), (T Real, (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real), (T Real, (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real), (T Real, (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real), (T Real, (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
((T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue
T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), (T Real, (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), (T Real, (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), (T Real, (T Real, T (T Real))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), (T Real, (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T Real, (T Real, T (T Real))) (T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), (T Real, (T Real, T (T Real))))
(T (T VectorSize Real), T (T (T 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
((Arguments
(T (T Real, (T Real, T (T Real)))) (T Real, (T Real, T (T Real)))
-> T (T Real, (T Real, T (T Real))) (T (T (T VectorSize Real))))
-> T (T Real, (T Real, T (T Real))) (T (T (T VectorSize Real)))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments
(T (T Real, (T Real, T (T Real)))) (T Real, (T Real, T (T Real)))
-> T (T Real, (T Real, T (T Real))) (T (T (T VectorSize Real))))
-> T (T Real, (T Real, T (T Real))) (T (T (T VectorSize Real))))
-> (Arguments
(T (T Real, (T Real, T (T Real)))) (T Real, (T Real, T (T Real)))
-> T (T Real, (T Real, T (T Real))) (T (T (T VectorSize Real))))
-> T (T Real, (T Real, T (T Real))) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(T (T Real, (T Real, T (T Real))) (T Real)
shape0,(T (T Real, (T Real, T (T Real))) (T Real)
det0,T (T Real, (T Real, T (T Real))) (T (T Real))
fm)) ->
let det :: T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
det = (Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T (T Real, (T Real, T (T Real))) (T Real)
-> T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T (T Real, (T Real, T (T Real))) (T Real)
det0
shape :: T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
shape = (Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T (T Real, (T Real, T (T Real))) (T Real)
-> T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T (T Real, (T Real, T (T Real))) (T Real)
shape0
modu :: T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
modu = Exp Real
-> T (T Real, (T Real, T (T Real))) (T (T Real))
-> T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
forall inp.
Exp Real -> T inp (T (T Real)) -> T inp (T (T VectorSize Real))
frequencyFromBendModulationPacked Exp Real
speed T (T Real, (T Real, T (T Real))) (T (T Real))
fm
osci ::
Exp Real ->
Exp Real ->
Causal.T
(VectorValue,
(VectorValue, VectorValue)
)
VectorValue
osci :: Exp Real
-> Exp Real
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
osci Exp Real
p Exp Real
d =
(forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T 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 T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
wave
T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real),
(T (T VectorSize Real), T (T 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 (T (T VectorSize Real))
-> T (T (T VectorSize Real))
(T (T VectorSize Real), T (T VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (a, b)
CausalClass.feedFst (Exp Real -> T (T (T VectorSize Real))
forall n a. Vector n a => Exp a -> T (Serial n a)
SigPS.constant Exp Real
p)
T (T (T VectorSize Real))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real), T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real), T (T 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 (T (T VectorSize Real)) (T (T VectorSize Real))
forall a. C a => a
one T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall a. C a => a -> a -> a
+ Exp Real -> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
d))
in (Exp Real
-> Exp Real
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a.
(Exp Real -> Exp Real -> T a (T (T VectorSize Real)))
-> T a (T (T (T VectorSize Real)))
phaserOsci Exp Real
-> Exp Real
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
osci T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T Real, (T Real, T (T Real)))
(T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
-> T (T Real, (T Real, T (T Real))) (T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$& T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
shape T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
-> T (T Real, (T Real, T (T Real)))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T Real, (T Real, T (T Real)))
(T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|& T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
det T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
-> T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
-> T (T Real, (T Real, T (T Real)))
(T (T VectorSize Real), T (T VectorSize Real))
forall a b c. T a b -> T a c -> T a (b, c)
&|& T (T Real, (T Real, T (T Real))) (T (T VectorSize Real))
modu)))
IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
stringControlledEnvelope
arcStringStereoFM ::
(forall r.
VectorValue ->
LLVM.CodeGenFunction r VectorValue) ->
IO StringInstrument
arcStringStereoFM :: (forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> IO StringInstrument
arcStringStereoFM forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
wave =
(forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> IO StringInstrument
softStringShapeCore
(\T (T VectorSize Real)
k T (T VectorSize Real)
p ->
(T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> CodeGenFunction r (T (T VectorSize Real))
-> CodeGenFunction r (T (T VectorSize Real))
-> CodeGenFunction r (T (T VectorSize Real))
forall (m :: * -> *) a b c.
Monad m =>
(a -> b -> m c) -> m a -> m b -> m c
M.liftJoin2 T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
forall a r. PseudoRing a => a -> a -> CodeGenFunction r a
Frame.amplifyMono
(T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, RationalConstant a, Real a) =>
a -> CodeGenFunction r a
WaveL.approxSine4 (T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> CodeGenFunction r (T (T VectorSize Real))
-> CodeGenFunction r (T (T VectorSize Real))
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, RationalConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.halfEnvelope T (T VectorSize Real)
p)
(T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
wave (T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> CodeGenFunction r (T (T VectorSize Real))
-> CodeGenFunction r (T (T VectorSize Real))
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, RationalConstant a, Fraction a) =>
a -> a -> CodeGenFunction r a
WaveL.replicate T (T VectorSize Real)
k T (T VectorSize Real)
p))
softStringShapeFM, cosineStringStereoFM,
arcSawStringStereoFM, arcSineStringStereoFM,
arcSquareStringStereoFM, arcTriangleStringStereoFM ::
IO StringInstrument
softStringShapeFM :: IO StringInstrument
softStringShapeFM =
(forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> IO StringInstrument
softStringShapeCore T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(Field a, RationalConstant a, Real a) =>
a -> a -> CodeGenFunction r a
WaveL.rationalApproxSine1
cosineStringStereoFM :: IO StringInstrument
cosineStringStereoFM =
(forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> IO StringInstrument
softStringShapeCore
(\T (T VectorSize Real)
k T (T VectorSize Real)
p -> T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2 (T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> CodeGenFunction r (T (T VectorSize Real))
-> CodeGenFunction r (T (T VectorSize Real))
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, RationalConstant a, Fraction a) =>
a -> a -> CodeGenFunction r a
WaveL.replicate T (T VectorSize Real)
k T (T VectorSize Real)
p)
arcSawStringStereoFM :: IO StringInstrument
arcSawStringStereoFM = (forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> IO StringInstrument
arcStringStereoFM T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, IntegerConstant a) =>
a -> CodeGenFunction r a
WaveL.saw
arcSineStringStereoFM :: IO StringInstrument
arcSineStringStereoFM = (forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> IO StringInstrument
arcStringStereoFM T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2
arcSquareStringStereoFM :: IO StringInstrument
arcSquareStringStereoFM = (forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> IO StringInstrument
arcStringStereoFM T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.square
arcTriangleStringStereoFM :: IO StringInstrument
arcTriangleStringStereoFM = (forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> IO StringInstrument
arcStringStereoFM T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, RationalConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.triangle
fmStringStereoFM ::
IO (SampleRate Real -> Real -> Real ->
PIO.T
(WithEnvelopeControl
(Zip.T
(Zip.T (Control Real) (Control Real))
DetuneBendModControl))
StereoChunk)
fmStringStereoFM :: IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
fmStringStereoFM =
((SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
-> (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
-> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
-> IO
(SampleRate Real
-> Real
-> Real
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
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 Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
osc SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel Real
freq ->
SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
osc SampleRate Real
sr
T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl)))
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall a b. (a -> b) -> a -> b
$ T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T DetuneBendModControl DetuneBendModControl
-> T (T (T (Control Real) (Control Real)) DetuneBendModControl)
(T (T (Control Real) (Control Real)) DetuneBendModControl)
forall a b. (a -> b) -> a -> b
$
T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl)
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall a b. (a -> b) -> a -> b
$
(T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr Real
freq)
T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T EnvelopeControl Chunk
-> T (WithEnvelopeControl
(T (T (Control Real) (Control Real)) DetuneBendModControl))
(T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
forall (arrow :: * -> * -> *) a b.
(Arrow arrow, Transform a, Transform b) =>
arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b)
zipEnvelope (SampleRate Real -> Real -> T EnvelopeControl Chunk
env SampleRate Real
sr Real
vel))
(DSL
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
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 Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk))
-> DSL
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
(Element
(In
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
(Element
(Out
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)))
-> IO
(SampleRate Real
-> T (T Chunk
(T (T (Control Real) (Control Real)) DetuneBendModControl))
StereoChunk)
forall a b. (a -> b) -> a -> b
$
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T 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 (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
((Arguments
(T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real)))))
(T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments
(T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real)))))
(T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> (Arguments
(T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real)))))
(T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real))))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \(T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env,((T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T Real)
depth0,T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T Real)
shape0),(T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T Real)
det0,T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T Real))
fm))) ->
let det :: T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
det = (Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T Real)
det0
shape :: T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
shape = (Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T Real)
shape0
depth :: T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
depth =
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$&
T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T VectorSize Real))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
((Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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 (T Real) (T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T Real)
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
$& T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T Real)
depth0)
modu :: T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
modu = Exp Real
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
forall inp.
Exp Real -> T inp (T (T Real)) -> T inp (T (T VectorSize Real))
frequencyFromBendModulationPacked Exp Real
speed T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T Real))
fm
osci ::
Exp Real ->
Exp Real ->
Causal.T
((VectorValue, VectorValue)
,
(VectorValue, VectorValue)
)
VectorValue
osci :: Exp Real
-> Exp Real
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
osci Exp Real
p Exp Real
d =
(forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T 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 T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real) -> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(PseudoRing a, IntegerConstant a, Fraction a) =>
a -> CodeGenFunction r a
WaveL.approxSine2
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real), T (T VectorSize Real))
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
((T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall a. PseudoRing a => T (a, a) a
Causal.envelope
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real), T (T 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.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T 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 T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
forall r.
T (T VectorSize Real)
-> T (T VectorSize Real)
-> CodeGenFunction r (T (T VectorSize Real))
forall a r.
(Field a, RationalConstant a, Real a) =>
a -> a -> CodeGenFunction r a
WaveL.rationalApproxSine1
T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. T (T (T VectorSize Real))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real),
(T (T VectorSize Real), T (T 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 (T (T VectorSize Real))
-> T (T (T VectorSize Real))
(T (T VectorSize Real), T (T VectorSize Real))
forall (process :: * -> * -> *) a b.
C process =>
SignalOf process a -> process b (a, b)
CausalClass.feedFst (Exp Real -> T (T (T VectorSize Real))
forall n a. Vector n a => Exp a -> T (Serial n a)
SigPS.constant Exp Real
p)))
T (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
-> (((T (T VectorSize Real), T (T VectorSize Real)),
T (T VectorSize Real))
-> (T (T VectorSize Real),
(T (T VectorSize Real), T (T VectorSize Real))))
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
T (T VectorSize Real))
(T (T VectorSize Real))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^
(\((T (T VectorSize Real)
dp, T (T VectorSize Real)
ds), T (T VectorSize Real)
f) -> (T (T VectorSize Real)
dp, (T (T VectorSize Real)
ds, T (T VectorSize Real)
f))))
T ((T (T VectorSize Real), T (T VectorSize Real)),
T (T VectorSize Real))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
T (T VectorSize Real))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
T (T VectorSize Real))
(T (T VectorSize Real), T (T 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 VectorSize Real), T (T VectorSize Real)),
T (T VectorSize Real))
-> T (T VectorSize Real))
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
T (T VectorSize Real))
(T (T VectorSize Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T (T VectorSize Real), T (T VectorSize Real)),
T (T VectorSize Real))
-> T (T VectorSize Real)
forall a b. (a, b) -> b
snd)
T ((T (T VectorSize Real), T (T VectorSize Real)),
T (T VectorSize Real))
(T (T VectorSize Real), T (T VectorSize Real))
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
((T (T VectorSize Real), T (T VectorSize Real)),
T (T VectorSize Real))
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real), T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
((T (T VectorSize Real), T (T VectorSize Real)),
T (T 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 (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall a. PseudoRing a => T (a, a) a
Causal.envelope T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real), T (T 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 (T (T VectorSize Real)) (T (T VectorSize Real))
forall a. C a => a
one T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall a. C a => a -> a -> a
+ Exp Real -> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
d))
in T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a. PseudoRing a => T (a, T a) (T a)
Causal.envelopeStereo T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$&
T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
env T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|&
((Exp Real
-> Exp Real
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real)))
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall a.
(Exp Real -> Exp Real -> T a (T (T VectorSize Real)))
-> T a (T (T (T VectorSize Real)))
phaserOsci Exp Real
-> Exp Real
-> T ((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T VectorSize Real))
osci T ((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
$& (T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
depth T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T VectorSize Real))
forall a b c. T a b -> T a c -> T a (b, c)
&|& T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
shape) T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
((T (T VectorSize Real), T (T VectorSize Real)),
(T (T VectorSize Real), T (T VectorSize Real)))
forall a b c. T a b -> T a c -> T a (b, c)
&|& (T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
det T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
-> T (T (T VectorSize Real),
((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real), T (T VectorSize Real))
forall a b c. T a b -> T a c -> T a (b, c)
&|& T (T (T VectorSize Real), ((T Real, T Real), (T Real, T (T Real))))
(T (T VectorSize Real))
modu))))
IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
stringControlledEnvelope
sampledSound ::
IO (Sample.T ->
SampleRate Real -> Real -> Real ->
PIO.T
(Zip.T MIO.GateChunk DetuneBendModControl)
StereoChunk)
sampledSound :: IO
(T
-> SampleRate Real
-> Real
-> Real
-> T (T GateChunk DetuneBendModControl) StereoChunk)
sampledSound =
((SampleRate Real
-> (Real, Vector Real) -> T StereoChunk StereoChunk)
-> (SampleRate Real -> T DetuneBendModControl StereoChunk)
-> T
-> SampleRate Real
-> Real
-> Real
-> T (T GateChunk DetuneBendModControl) StereoChunk)
-> IO
(SampleRate Real
-> (Real, Vector Real) -> T StereoChunk StereoChunk)
-> IO (SampleRate Real -> T DetuneBendModControl StereoChunk)
-> IO
(T
-> SampleRate Real
-> Real
-> Real
-> T (T GateChunk DetuneBendModControl) StereoChunk)
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, Vector Real) -> T StereoChunk StereoChunk
osc SampleRate Real -> T DetuneBendModControl StereoChunk
freqMod T
smp SampleRate Real
sr Real
vel Real
freq ->
let pos :: Positions
pos = T -> Positions
Sample.positions T
smp
in (SampleRate Real
-> (Real, Vector Real) -> T StereoChunk StereoChunk)
-> T
-> SampleRate Real
-> Real
-> T (T GateChunk StereoChunk) StereoChunk
forall a b gate.
(Transform a, Transform b) =>
(SampleRate Real -> (Real, Vector Real) -> T a b)
-> T -> SampleRate Real -> Real -> T (T (Chunk gate) a) b
assembleParts SampleRate Real -> (Real, Vector Real) -> T StereoChunk StereoChunk
osc T
smp SampleRate Real
sr Real
vel
T (T GateChunk StereoChunk) StereoChunk
-> T (T GateChunk DetuneBendModControl) (T GateChunk StereoChunk)
-> T (T GateChunk DetuneBendModControl) StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T DetuneBendModControl StereoChunk
-> T (T GateChunk DetuneBendModControl) (T GateChunk StereoChunk)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond
((T StereoChunk StereoChunk
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id :: PIOId StereoChunk)
T StereoChunk StereoChunk
-> T DetuneBendModControl StereoChunk
-> T DetuneBendModControl StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
SampleRate Real -> T DetuneBendModControl StereoChunk
freqMod SampleRate Real
sr
T DetuneBendModControl StereoChunk
-> T DetuneBendModControl DetuneBendModControl
-> T DetuneBendModControl StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl)
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall a b. (a -> b) -> a -> b
$ (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$
SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr (Real
freq Real -> Real -> Real
forall a. C a => a -> a -> a
* Positions -> Real
Sample.period Positions
pos))))
(DSL
(SampleRate Real
-> (Real, Vector Real) -> T StereoChunk StereoChunk)
(T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (Real, Vector Real) -> T StereoChunk StereoChunk)
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, Vector Real) -> T StereoChunk StereoChunk)
(T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (Real, Vector Real) -> T StereoChunk StereoChunk))
-> DSL
(SampleRate Real
-> (Real, Vector Real) -> T StereoChunk StereoChunk)
(T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> (Real, Vector Real) -> T StereoChunk StereoChunk)
forall a b. (a -> b) -> a -> b
$ \SampleRate (Exp Real)
sr (Exp Real
amp, T (T Real)
smp) ->
T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue
(T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
forall (a :: * -> * -> *) c d b.
Arrow a =>
(c -> d) -> a b c -> a b d
^<<
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
forall a b.
(Phi a, Undefined a, Phi b, Undefined b) =>
T a b -> T (T a) (T b)
Causal.stereoFromMono (SampleRate (Exp Real)
-> (Exp Real, T (T Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
resamplingProc SampleRate (Exp Real)
sr (Exp Real
amp, T (T Real)
smp))
T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> (T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^
T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.unMultiValue)
(DSL
(SampleRate Real -> T DetuneBendModControl StereoChunk)
(Element
(In (SampleRate Real -> T DetuneBendModControl StereoChunk)))
(Element
(Out (SampleRate Real -> T DetuneBendModControl StereoChunk)))
-> IO (SampleRate Real -> T DetuneBendModControl StereoChunk)
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 DetuneBendModControl StereoChunk)
(Element
(In (SampleRate Real -> T DetuneBendModControl StereoChunk)))
(Element
(Out (SampleRate Real -> T DetuneBendModControl StereoChunk)))
-> IO (SampleRate Real -> T DetuneBendModControl StereoChunk))
-> DSL
(SampleRate Real -> T DetuneBendModControl StereoChunk)
(Element
(In (SampleRate Real -> T DetuneBendModControl StereoChunk)))
(Element
(Out (SampleRate Real -> T DetuneBendModControl StereoChunk)))
-> IO (SampleRate Real -> T DetuneBendModControl StereoChunk)
forall a b. (a -> b) -> a -> b
$
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T Real, T (T 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
3 ((Exp Real
-> SampleRate (Exp Real)
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
(T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall a b.
(a -> b) -> T (T Real, T (T Real)) a -> T (T Real, T (T Real)) b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (T Real, T (T Real)) (T (T (T VectorSize Real)))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
(Arguments (T (T Real, T (T Real))) (T Real, T (T Real))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments (T (T Real, T (T Real))) (T Real, T (T Real))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> (Arguments (T (T Real, T (T Real))) (T Real, T (T Real))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ Exp Real
-> (T (T Real, T (T Real)) (T Real),
T (T Real, T (T Real)) (T (T Real)))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall inp.
Exp Real
-> (T inp (T Real), T inp (T (T Real)))
-> T inp (T (T (T VectorSize Real)))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed)
sampledSoundMono ::
IO (Sample.T ->
SampleRate Real -> Real -> Real ->
PIO.T (Zip.T MIO.GateChunk BendModControl) Chunk)
sampledSoundMono :: IO
(T
-> SampleRate Real
-> Real
-> Real
-> T (T GateChunk (T ShortStrictTime (T Real))) Chunk)
sampledSoundMono =
((SampleRate Real -> (Real, Vector Real) -> T Chunk Chunk)
-> (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)
-> T
-> SampleRate Real
-> Real
-> Real
-> T (T GateChunk (T ShortStrictTime (T Real))) Chunk)
-> IO (SampleRate Real -> (Real, Vector Real) -> T Chunk Chunk)
-> IO (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)
-> IO
(T
-> SampleRate Real
-> Real
-> Real
-> T (T GateChunk (T ShortStrictTime (T Real))) Chunk)
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, Vector Real) -> T Chunk Chunk
osc SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk
freqMod T
smp SampleRate Real
sr Real
vel Real
freq ->
let pos :: Positions
pos = T -> Positions
Sample.positions T
smp
in (SampleRate Real -> (Real, Vector Real) -> T Chunk Chunk)
-> T -> SampleRate Real -> Real -> T (T GateChunk Chunk) Chunk
forall a b gate.
(Transform a, Transform b) =>
(SampleRate Real -> (Real, Vector Real) -> T a b)
-> T -> SampleRate Real -> Real -> T (T (Chunk gate) a) b
assembleParts SampleRate Real -> (Real, Vector Real) -> T Chunk Chunk
osc T
smp SampleRate Real
sr Real
vel
T (T GateChunk Chunk) Chunk
-> T (T GateChunk (T ShortStrictTime (T Real))) (T GateChunk Chunk)
-> T (T GateChunk (T ShortStrictTime (T Real))) Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T ShortStrictTime (T Real)) Chunk
-> T (T GateChunk (T ShortStrictTime (T Real))) (T GateChunk Chunk)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond
((T Chunk Chunk
forall a. T a a
forall {k} (cat :: k -> k -> *) (a :: k). Category cat => cat a a
id :: PIOId Chunk)
T Chunk Chunk
-> T (T ShortStrictTime (T Real)) Chunk
-> T (T ShortStrictTime (T Real)) Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk
freqMod SampleRate Real
sr
T (T ShortStrictTime (T Real)) Chunk
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr (Real
freq Real -> Real -> Real
forall a. C a => a -> a -> a
* Positions -> Real
Sample.period Positions
pos))))
(DSL
(SampleRate Real -> (Real, Vector Real) -> T Chunk Chunk)
(T (T VectorSize Real))
(T (T VectorSize Real))
-> IO (SampleRate Real -> (Real, Vector Real) -> T Chunk Chunk)
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, Vector Real) -> T Chunk Chunk)
(T (T VectorSize Real))
(T (T VectorSize Real))
SampleRate (Exp Real)
-> (Exp Real, T (T Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
resamplingProc)
(DSL
(SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)
(Element
(In (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)))
(Element
(Out (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)))
-> IO (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)
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 ShortStrictTime (T Real)) Chunk)
(Element
(In (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)))
(Element
(Out (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)))
-> IO (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk))
-> DSL
(SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)
(Element
(In (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)))
(Element
(Out (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)))
-> IO (SampleRate Real -> T (T ShortStrictTime (T Real)) Chunk)
forall a b. (a -> b) -> a -> b
$
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real) -> T (T (T Real)) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (T Real)) (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
3 ((Exp Real
-> SampleRate (Exp Real) -> T (T (T Real)) (T (T VectorSize Real)))
-> SampleRate (Exp Real) -> T (T (T Real)) (T (T VectorSize Real)))
-> (Exp Real
-> SampleRate (Exp Real) -> T (T (T Real)) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> T (T (T Real)) (T (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
(Arguments (T (T (T Real))) (T (T Real))
-> T (T (T Real)) (T (T VectorSize Real)))
-> T (T (T Real)) (T (T VectorSize Real))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments (T (T (T Real))) (T (T Real))
-> T (T (T Real)) (T (T VectorSize Real)))
-> T (T (T Real)) (T (T VectorSize Real)))
-> (Arguments (T (T (T Real))) (T (T Real))
-> T (T (T Real)) (T (T VectorSize Real)))
-> T (T (T Real)) (T (T VectorSize Real))
forall a b. (a -> b) -> a -> b
$ Exp Real
-> T (T (T Real)) (T (T Real))
-> T (T (T Real)) (T (T VectorSize Real))
forall inp.
Exp Real -> T inp (T (T Real)) -> T inp (T (T VectorSize Real))
frequencyFromBendModulationPacked Exp Real
speed)
assembleParts ::
(CutG.Transform a, CutG.Transform b) =>
(SampleRate Real -> (Real, SVL.Vector Real) -> PIO.T a b) ->
Sample.T -> SampleRate Real -> Real ->
PIO.T (Zip.T (Gate.Chunk gate) a) b
assembleParts :: forall a b gate.
(Transform a, Transform b) =>
(SampleRate Real -> (Real, Vector Real) -> T a b)
-> T -> SampleRate Real -> Real -> T (T (Chunk gate) a) b
assembleParts SampleRate Real -> (Real, Vector Real) -> T a b
osc T
smp SampleRate Real
sr Real
vel =
let 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
(Vector Real
attack, Vector Real
sustain, Vector Real
release) = T -> (Vector Real, Vector Real, Vector Real)
Sample.parts T
smp
osci :: Vector Real -> T a b
osci Vector Real
smpBody = SampleRate Real -> (Real, Vector Real) -> T a b
osc SampleRate Real
sr (Real
amp, Vector Real
smpBody)
in T (T (Chunk gate) a) b
-> T (T (Chunk gate) a) b -> T (T (Chunk gate) a) b
forall a. Monoid a => a -> a -> a
mappend
(Vector Real -> T a b
osci
(Vector Real
attack Vector Real -> Vector Real -> Vector Real
forall a. Storable a => Vector a -> Vector a -> Vector a
`SigSt.append`
Vector Real -> Vector Real
forall a. Storable a => Vector a -> Vector a
SVL.cycle (Int -> Vector Real -> Vector Real
forall a. Storable a => Int -> Vector a -> Vector a
SigSt.take (Positions -> Int
Sample.loopLength Positions
pos) Vector Real
sustain))
T a b -> T (T (Chunk gate) a) a -> T (T (Chunk gate) a) b
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (Chunk gate) a) a
forall signal a. Transform signal => T (T (Chunk a) signal) signal
Gate.shorten)
(Vector Real -> T a b
osci Vector Real
release T a b -> (T (Chunk gate) a -> a) -> T (T (Chunk gate) a) b
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ T (Chunk gate) a -> a
forall a b. T a b -> b
Zip.second)
resamplingProc ::
SampleRate (Exp Real) ->
(Exp Real, Sig.T (MultiValue.T Real)) ->
Causal.T VectorValue VectorValue
resamplingProc :: SampleRate (Exp Real)
-> (Exp Real, T (T Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
resamplingProc SampleRate (Exp Real)
_sr (Exp Real
amp, T (T Real)
smp) =
Exp Real -> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall n a.
(Positive n, PseudoRing a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.amplify Exp Real
amp
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T Real) (T Real)
-> T (T (T VectorSize Real)) (T (T 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 (T Real) -> T (T Real) (T Real)
forall a.
(PseudoRing a, IntegerConstant a, Comparison a, C a) =>
MV a -> MV a a
Causal.frequencyModulationLinear
T (T Real)
smp
)
helixSound ::
IO (Sample.T ->
SampleRate Real -> Real -> Real ->
PIO.T
(Zip.T MIO.GateChunk
(Zip.T (Control Real) DetuneBendModControl))
StereoChunk)
helixSound :: IO
(T
-> SampleRate Real
-> Real
-> Real
-> T (T GateChunk (T (Control Real) DetuneBendModControl))
StereoChunk)
helixSound =
((SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk)
-> (SampleRate Real
-> (Real, Real, Real) -> T (Control Real) Chunk)
-> (SampleRate Real -> (Real, Real) -> T (Control Real) Chunk)
-> (SampleRate Real -> T DetuneBendModControl StereoChunk)
-> T
-> SampleRate Real
-> Real
-> Real
-> T (T GateChunk (T (Control Real) DetuneBendModControl))
StereoChunk)
-> IO
(SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk)
-> IO
(SampleRate Real -> (Real, Real, Real) -> T (Control Real) Chunk)
-> IO (SampleRate Real -> (Real, Real) -> T (Control Real) Chunk)
-> IO (SampleRate Real -> T DetuneBendModControl StereoChunk)
-> IO
(T
-> SampleRate Real
-> Real
-> Real
-> T (T GateChunk (T (Control Real) DetuneBendModControl))
StereoChunk)
forall (m :: * -> *) a b c d r.
Applicative m =>
(a -> b -> c -> d -> r) -> m a -> m b -> m c -> m d -> m r
App.lift4
(\SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk
helix SampleRate Real -> (Real, Real, Real) -> T (Control Real) Chunk
zigZag SampleRate Real -> (Real, Real) -> T (Control Real) Chunk
integrate SampleRate Real -> T DetuneBendModControl StereoChunk
freqMod T
smp SampleRate Real
sr Real
vel Real
freq ->
let 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
rateFactor :: Real
rateFactor =
Frequency -> Frequency -> Real
forall u a. (C u, C a) => T u a -> T u a -> a
DN.divToScalar
(T -> Frequency
Sample.sampleRate T
smp)
(SampleRate Real -> Frequency
forall a. SampleRate a -> Frequency a
frequencyFromSampleRate SampleRate Real
sr)
releaseStart :: Real
releaseStart =
Int -> Real
forall a b. (C a, C b) => a -> b
fromIntegral (Int -> Real) -> Int -> Real
forall a b. (a -> b) -> a -> b
$
Positions -> Int
Sample.loopStart Positions
pos Int -> Int -> Int
forall a. C a => a -> a -> a
+ Positions -> Int
Sample.loopLength Positions
pos
releaseStop :: Real
releaseStop =
Int -> Real
forall a b. (C a, C b) => a -> b
fromIntegral (Int -> Real) -> Int -> Real
forall a b. (a -> b) -> a -> b
$
Positions -> Int
Sample.start Positions
pos Int -> Int -> Int
forall a. C a => a -> a -> a
+ Positions -> Int
Sample.length Positions
pos
poss :: (Real, Real, Real)
poss =
(Int -> Real
forall a b. (C a, C b) => a -> b
fromIntegral (Int -> Real) -> Int -> Real
forall a b. (a -> b) -> a -> b
$ Positions -> Int
Sample.start Positions
pos,
Int -> Real
forall a b. (C a, C b) => a -> b
fromIntegral (Int -> Real) -> Int -> Real
forall a b. (a -> b) -> a -> b
$ Positions -> Int
Sample.loopStart Positions
pos,
Int -> Real
forall a b. (C a, C b) => a -> b
fromIntegral (Int -> Real) -> Int -> Real
forall a b. (a -> b) -> a -> b
$ Positions -> Int
Sample.loopLength Positions
pos)
in SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk
helix SampleRate Real
sr Real
amp (Positions -> Real
Sample.period Positions
pos)
(Vector Real -> Buffer Real
forall a. Vector a -> Buffer a
Render.buffer (Vector Real -> Buffer Real) -> Vector Real -> Buffer Real
forall a b. (a -> b) -> a -> b
$ [Vector Real] -> Vector Real
forall a. Storable a => [Vector a] -> Vector a
SV.concat ([Vector Real] -> Vector Real) -> [Vector Real] -> Vector Real
forall a b. (a -> b) -> a -> b
$ Vector Real -> [Vector Real]
forall a. Vector a -> [Vector a]
SVL.chunks (Vector Real -> [Vector Real]) -> Vector Real -> [Vector Real]
forall a b. (a -> b) -> a -> b
$ T -> Vector Real
Sample.body T
smp)
T (T Chunk StereoChunk) StereoChunk
-> T (T GateChunk (T (Control Real) DetuneBendModControl))
(T Chunk StereoChunk)
-> T (T GateChunk (T (Control Real) DetuneBendModControl))
StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T GateChunk (Control Real)) Chunk
-> T (T (T GateChunk (Control Real)) StereoChunk)
(T Chunk StereoChunk)
forall (arrow :: * -> * -> *) b c a.
(Arrow arrow, Transform b, Transform c) =>
arrow a b -> arrow (T a c) (T b c)
Zip.arrowFirstShorten
(T (T GateChunk (Control Real)) Chunk
-> T (T GateChunk (Control Real)) Chunk
-> T (T GateChunk (Control Real)) Chunk
forall a. Monoid a => a -> a -> a
mappend
(SampleRate Real -> (Real, Real, Real) -> T (Control Real) Chunk
zigZag SampleRate Real
sr (Real, Real, Real)
poss T (Control Real) Chunk
-> T (T GateChunk (Control Real)) (Control Real)
-> T (T GateChunk (Control Real)) Chunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. T (T GateChunk (Control Real)) (Control Real)
forall signal a. Transform signal => T (T (Chunk a) signal) signal
Gate.shorten)
(SampleRate Real -> (Real, Real) -> T (Control Real) Chunk
integrate SampleRate Real
sr (Real
releaseStart, Real
releaseStop)
T (Control Real) Chunk
-> (T GateChunk (Control Real) -> Control Real)
-> T (T GateChunk (Control Real)) Chunk
forall (a :: * -> * -> *) c d b.
Arrow a =>
a c d -> (b -> c) -> a b d
<<^ T GateChunk (Control Real) -> Control Real
forall a b. T a b -> b
Zip.second))
T (T (T GateChunk (Control Real)) StereoChunk)
(T Chunk StereoChunk)
-> T (T GateChunk (T (Control Real) DetuneBendModControl))
(T (T GateChunk (Control Real)) StereoChunk)
-> T (T GateChunk (T (Control Real) DetuneBendModControl))
(T Chunk StereoChunk)
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T DetuneBendModControl StereoChunk
-> T (T (T GateChunk (Control Real)) DetuneBendModControl)
(T (T GateChunk (Control Real)) StereoChunk)
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond
(SampleRate Real -> T DetuneBendModControl StereoChunk
freqMod SampleRate Real
sr
T DetuneBendModControl StereoChunk
-> T DetuneBendModControl DetuneBendModControl
-> T DetuneBendModControl StereoChunk
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall (arrow :: * -> * -> *) a b c.
Arrow arrow =>
arrow a b -> arrow (T c a) (T c b)
Zip.arrowSecond (T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl)
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
-> T DetuneBendModControl DetuneBendModControl
forall a b. (a -> b) -> a -> b
$ (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr ((T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real)))
-> (T ShortStrictTime (T Real) -> T ShortStrictTime (T Real))
-> T (T ShortStrictTime (T Real)) (T ShortStrictTime (T Real))
forall a b. (a -> b) -> a -> b
$ SampleRate Real
-> Real -> T ShortStrictTime (T Real) -> T ShortStrictTime (T Real)
forall (stream :: * -> *).
Functor stream =>
SampleRate Real -> Real -> stream (T Real) -> stream (T Real)
transposeModulation SampleRate Real
sr Real
freq))
T (T (T GateChunk (Control Real)) DetuneBendModControl)
(T (T GateChunk (Control Real)) StereoChunk)
-> T (T GateChunk (T (Control Real) DetuneBendModControl))
(T (T GateChunk (Control Real)) DetuneBendModControl)
-> T (T GateChunk (T (Control Real) DetuneBendModControl))
(T (T GateChunk (Control Real)) StereoChunk)
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(T GateChunk (T (Control Real) DetuneBendModControl)
-> T (T GateChunk (Control Real)) DetuneBendModControl)
-> T (T GateChunk (T (Control Real) DetuneBendModControl))
(T (T GateChunk (Control Real)) DetuneBendModControl)
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (\(Zip.Cons GateChunk
gate (Zip.Cons Control Real
speed DetuneBendModControl
fm)) ->
T GateChunk (Control Real)
-> DetuneBendModControl
-> T (T GateChunk (Control Real)) DetuneBendModControl
forall a b. a -> b -> T a b
Zip.Cons (GateChunk -> Control Real -> T GateChunk (Control Real)
forall a b. a -> b -> T a b
Zip.Cons GateChunk
gate ((Real -> Real) -> Control Real -> Control Real
forall a b. (a -> b) -> T ShortStrictTime a -> T ShortStrictTime b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Real
rateFactorReal -> Real -> Real
forall a. C a => a -> a -> a
*) Control Real
speed)) DetuneBendModControl
fm))
IO
(SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk)
makeHelix
IO
(SampleRate Real -> (Real, Real, Real) -> T (Control Real) Chunk)
makeZigZag
IO (SampleRate Real -> (Real, Real) -> T (Control Real) Chunk)
makeIntegrate
(DSL
(SampleRate Real -> T DetuneBendModControl StereoChunk)
(Element
(In (SampleRate Real -> T DetuneBendModControl StereoChunk)))
(Element
(Out (SampleRate Real -> T DetuneBendModControl StereoChunk)))
-> IO (SampleRate Real -> T DetuneBendModControl StereoChunk)
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 DetuneBendModControl StereoChunk)
(Element
(In (SampleRate Real -> T DetuneBendModControl StereoChunk)))
(Element
(Out (SampleRate Real -> T DetuneBendModControl StereoChunk)))
-> IO (SampleRate Real -> T DetuneBendModControl StereoChunk))
-> DSL
(SampleRate Real -> T DetuneBendModControl StereoChunk)
(Element
(In (SampleRate Real -> T DetuneBendModControl StereoChunk)))
(Element
(Out (SampleRate Real -> T DetuneBendModControl StereoChunk)))
-> IO (SampleRate Real -> T DetuneBendModControl StereoChunk)
forall a b. (a -> b) -> a -> b
$
(SampleRate (Exp Real) -> Exp Real -> Exp Real)
-> Exp Real
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T Real, T (T 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
3 ((Exp Real
-> SampleRate (Exp Real)
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> (Exp Real
-> SampleRate (Exp Real)
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ \Exp Real
speed SampleRate (Exp Real)
_sr ->
(T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall a b.
(a -> b) -> T (T Real, T (T Real)) a -> T (T Real, T (T Real)) b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue (T (T Real, T (T Real)) (T (T (T VectorSize Real)))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
(Arguments (T (T Real, T (T Real))) (T Real, T (T Real))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall inp out.
MakeArguments inp =>
(Arguments (T inp) inp -> T inp out) -> T inp out
F.withArgs ((Arguments (T (T Real, T (T Real))) (T Real, T (T Real))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> (Arguments (T (T Real, T (T Real))) (T Real, T (T Real))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real))))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$ Exp Real
-> (T (T Real, T (T Real)) (T Real),
T (T Real, T (T Real)) (T (T Real)))
-> T (T Real, T (T Real)) (T (T (T VectorSize Real)))
forall inp.
Exp Real
-> (T inp (T Real), T inp (T (T Real)))
-> T inp (T (T (T VectorSize Real)))
stereoFrequenciesFromDetuneBendModulation Exp Real
speed)
makeHelix ::
IO (SampleRate Real -> Real -> Real -> Render.Buffer Real ->
PIO.T (Zip.T Chunk StereoChunk) StereoChunk)
makeHelix :: IO
(SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk)
makeHelix =
DSL
(SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk)
(T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk)
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
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk)
(T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk))
-> DSL
(SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk)
(T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> IO
(SampleRate Real
-> Real
-> Real
-> Buffer Real
-> T (T Chunk StereoChunk) StereoChunk)
forall a b. (a -> b) -> a -> b
$
(Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> Exp (StorableVector Real)
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> Exp (StorableVector Real)
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real))))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped ((Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> Exp (StorableVector Real)
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> Exp (StorableVector Real)
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))))
-> (Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> Exp (StorableVector Real)
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real))))
-> SampleRate (Exp Real)
-> Unwrapped
(Arg Number (Exp Real)
-> Arg Number (Exp Real)
-> SampleRate (Exp Real)
-> Exp (StorableVector Real)
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real))))
forall a b. (a -> b) -> a -> b
$
\(Number Exp Real
amp) (Number Exp Real
per) (SampleRate Exp Real
_sr) Exp (StorableVector Real)
smp ->
(T (T (T VectorSize Real)) -> T (T (T VectorSize Real)))
-> T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.multiValue
T (T (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
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 (T (T VectorSize Real))) (T (T (T 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 (T (T VectorSize Real))) (T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (T (T (T VectorSize Real), T (T VectorSize Real)))
(T (T (T 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.
T r Nodes02 (T (T VectorSize Real)) (T (T VectorSize Real)))
-> (forall r.
T r Nodes02 (T (T VectorSize Real)) (T (T VectorSize Real)))
-> Exp Int
-> Exp Real
-> Exp (StorableVector Real)
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall (nodesStep :: * -> *) (nodesLeap :: * -> *) vh ve v n a ar.
(C nodesStep, C nodesLeap, C vh, T vh ~ ve, Element v ~ ve,
Size (nodesLeap (nodesStep v)) ~ n,
Write (nodesLeap (nodesStep v)),
Element (nodesLeap (nodesStep v))
~ nodesLeap (nodesStep (Element v)),
Positive n, C a, Field a, Real a, Fraction a, RationalConstant a,
NativeFloating n a ar) =>
(forall r. T r nodesLeap (Value n a) v)
-> (forall r. T r nodesStep (Value n a) v)
-> Exp Int
-> Exp a
-> Exp (StorableVector vh)
-> T (Value n a, Value n a) v
Helix.staticPacked
T r Nodes02 (T (T VectorSize Real)) (T (T VectorSize Real))
forall r.
T r Nodes02 (T (T VectorSize Real)) (T (T VectorSize Real))
forall a r. (PseudoRing a, IntegerConstant a) => T r Nodes02 a a
Interpolation.linear
T r Nodes02 (T (T VectorSize Real)) (T (T VectorSize Real))
forall r.
T r Nodes02 (T (T VectorSize Real)) (T (T VectorSize Real))
forall a r. (PseudoRing a, IntegerConstant a) => T r Nodes02 a a
Interpolation.linear
(Exp Real -> Exp Int
forall i ir a ar.
(NativeInteger i ir, NativeFloating a ar) =>
Exp a -> Exp i
Expr.roundToIntFast Exp Real
per) Exp Real
per
Exp (StorableVector Real)
smp
T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real), T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real), T (T 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 (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
forall n t.
(Positive n, C t, Fraction t) =>
T (Serial n t, Serial n t) (Serial n t)
CausalPS.osciCore T (T (T VectorSize Real), T (T VectorSize Real))
(T (T VectorSize Real))
-> SignalOf T (T (T VectorSize Real))
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall (process :: * -> * -> *) a b c.
C process =>
process (a, b) c -> SignalOf process a -> process b c
$< SignalOf T (T (T VectorSize Real))
T (T (T VectorSize Real))
0))
T (T (T (T VectorSize Real), T (T VectorSize Real)))
(T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real), T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real)))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
((T (T VectorSize Real), T (T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T VectorSize Real)))
-> T (T (T VectorSize Real), T (T (T VectorSize Real)))
(T (T (T VectorSize Real), T (T VectorSize Real)))
forall b c. (b -> c) -> T b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (\(T (T VectorSize Real)
shape, T (T (T VectorSize Real))
freq) -> (,) T (T VectorSize Real)
shape (T (T VectorSize Real)
-> (T (T VectorSize Real), T (T VectorSize Real)))
-> T (T (T VectorSize Real))
-> T (T (T VectorSize Real), T (T VectorSize Real))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> T (T (T VectorSize Real)) -> T (T (T VectorSize Real))
forall a. T (T a) -> T (T a)
Stereo.unMultiValue T (T (T VectorSize Real))
freq)
makeZigZag ::
IO (SampleRate Real -> (Real, Real, Real) ->
PIO.T (Control Real) Chunk)
makeZigZag :: IO
(SampleRate Real -> (Real, Real, Real) -> T (Control Real) Chunk)
makeZigZag =
DSL
(SampleRate Real -> (Real, Real, Real) -> T (Control Real) Chunk)
(T Real)
(T (T VectorSize Real))
-> IO
(SampleRate Real -> (Real, Real, Real) -> T (Control Real) Chunk)
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 (Control Real) Chunk)
(T Real)
(T (T VectorSize Real))
-> IO
(SampleRate Real -> (Real, Real, Real) -> T (Control Real) Chunk))
-> DSL
(SampleRate Real -> (Real, Real, Real) -> T (Control Real) Chunk)
(T Real)
(T (T VectorSize Real))
-> IO
(SampleRate Real -> (Real, Real, Real) -> T (Control Real) Chunk)
forall a b. (a -> b) -> a -> b
$
((Arg Number (Exp Real), Arg Number (Exp Real),
Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
((Arg Number (Exp Real), Arg Number (Exp Real),
Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real)))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped (((Arg Number (Exp Real), Arg Number (Exp Real),
Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
((Arg Number (Exp Real), Arg Number (Exp Real),
Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real))))
-> ((Arg Number (Exp Real), Arg Number (Exp Real),
Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
((Arg Number (Exp Real), Arg Number (Exp Real),
Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
\(Number Exp Real
start, Number Exp Real
loopStart, Number Exp Real
loopLength) (SampleRate Exp Real
_sr) ->
Exp Real -> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall n a.
(Positive n, Additive a) =>
Exp a -> T (Serial n a) (Serial n a)
CausalPS.raise Exp Real
start
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T Real) (T (T VectorSize Real))
-> T (T Real) (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
Exp Real
-> Exp Real -> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall n a.
(Vector n a, Field a, Fraction a, RationalConstant a, Select a,
Comparison a) =>
Exp a -> Exp a -> T (Value n a) (Value n a)
Helix.zigZagLongPacked (Exp Real
loopStartExp Real -> Exp Real -> Exp Real
forall a. C a => a -> a -> a
-Exp Real
start) Exp Real
loopLength
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T Real) (T (T VectorSize Real))
-> T (T Real) (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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
makeIntegrate ::
IO (SampleRate Real -> (Real, Real) ->
PIO.T (Control Real) Chunk)
makeIntegrate :: IO (SampleRate Real -> (Real, Real) -> T (Control Real) Chunk)
makeIntegrate =
DSL
(SampleRate Real -> (Real, Real) -> T (Control Real) Chunk)
(T Real)
(T (T VectorSize Real))
-> IO (SampleRate Real -> (Real, Real) -> T (Control Real) Chunk)
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 (Control Real) Chunk)
(T Real)
(T (T VectorSize Real))
-> IO (SampleRate Real -> (Real, Real) -> T (Control Real) Chunk))
-> DSL
(SampleRate Real -> (Real, Real) -> T (Control Real) Chunk)
(T Real)
(T (T VectorSize Real))
-> IO (SampleRate Real -> (Real, Real) -> T (Control Real) Chunk)
forall a b. (a -> b) -> a -> b
$
((Arg Number (Exp Real), Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
((Arg Number (Exp Real), Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real)))
forall a f. Wrapped a f => f -> SampleRate a -> Unwrapped f
wrapped (((Arg Number (Exp Real), Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
((Arg Number (Exp Real), Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real))))
-> ((Arg Number (Exp Real), Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real)))
-> SampleRate (Exp Real)
-> Unwrapped
((Arg Number (Exp Real), Arg Number (Exp Real))
-> SampleRate (Exp Real) -> T (T Real) (T (T VectorSize Real)))
forall a b. (a -> b) -> a -> b
$
\(Number Exp Real
start, Number Exp Real
stop) (SampleRate Exp Real
_sr) ->
(Exp (T VectorSize Real) -> Exp Bool)
-> T (T (T VectorSize Real)) (T (T VectorSize Real))
forall ae a. Aggregate ae a => (ae -> Exp Bool) -> T a a
Causal.takeWhile (\Exp (T VectorSize Real)
v -> Exp Real
stop Exp Real -> Exp Real -> Exp Bool
forall a. Comparison a => Exp a -> Exp a -> Exp Bool
>* Exp (T VectorSize Real) -> Exp Real
forall n a. (Positive n, C a) => Exp (T n a) -> Exp a
Serial.subsample Exp (T VectorSize Real)
v)
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T Real) (T (T VectorSize Real))
-> T (T Real) (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
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 (T VectorSize Real)) (T (T VectorSize Real))
forall n a v.
(Positive n, C a, Additive a, Value n a ~ v) =>
Exp a -> T v v
CausalPS.integrate Exp Real
start
T (T (T VectorSize Real)) (T (T VectorSize Real))
-> T (T Real) (T (T VectorSize Real))
-> T (T Real) (T (T VectorSize Real))
forall b c a. T b c -> T a b -> T a c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
(Exp Real -> Exp (T VectorSize Real))
-> T (T Real) (T (T 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