Safe Haskell | None |
---|---|
Language | Haskell98 |
This module contains some instruments with Causal arrow interface. The interface is a bit low-level since you have to write the transformations of the Haskell-side separately from the computations on the LLVM side. A nicer integration is used in Synthesizer.LLVM.Server.CausalPacked.InstrumentPlug. However, we preserve this module in order to show how things work internally.
- type Instrument a sig = SampleRate a -> Instrument a sig
- type Control = T ShortStrictTime
- type Time = Time Real
- type Frequency = Frequency Real
- type Chunk = Vector Vector
- type StereoChunk = Vector (T Vector)
- type BendModControl = Control (T Real)
- type DetuneBendModControl = T (Control Real) (Control (T Real))
- type PIOId a = T a a
- stereoFrequenciesFromDetuneBendModulation :: Param p Real -> (FuncP p inp (Value Real), FuncP p inp (T (Value Real))) -> FuncP p inp (T VectorValue)
- frequencyFromSampleRate :: SampleRate a -> Frequency a
- halfLifeControl :: Functor f => SampleRate Real -> f Time -> f (ParameterPacked Vector)
- frequencyControl :: Functor f => SampleRate Real -> f Frequency -> f Real
- takeThreshold :: T p Real -> T p VectorValue VectorValue
- type EnvelopeControl = T GateChunk (T (Control Time) (Control Time))
- type WithEnvelopeControl remainder = T GateChunk (T (T (Control Time) (Control Time)) remainder)
- reorderEnvelopeControl :: (Arrow arrow, Read remainder) => arrow (WithEnvelopeControl remainder) (T EnvelopeControl remainder)
- zipEnvelope :: (Arrow arrow, Transform a, Transform b) => arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b)
- ping :: IO (Instrument Real Chunk)
- pingReleaseEnvelope :: IO (Real -> Real -> SampleRate Real -> Real -> T GateChunk Chunk)
- pingRelease :: IO (Real -> Real -> Instrument Real Chunk)
- pingControlledEnvelope :: Maybe Real -> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
- pingStereoReleaseFM :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (T (Control Real) (Control Time)) (T (T (Control Real) (Control Time)) DetuneBendModControl))) StereoChunk)
- filterSawStereoFM :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (T (Control Frequency) (Control Time)) DetuneBendModControl)) StereoChunk)
- tineStereoFM :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (T (Control Real) (Control Real)) DetuneBendModControl)) StereoChunk)
- bellNoiseStereoFM :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (T (Control Real) (Control Real)) DetuneBendModControl)) StereoChunk)
- stringControlledEnvelope :: IO (SampleRate Real -> Real -> T EnvelopeControl Chunk)
- windCore :: T (SampleRate Real, p) a (Value Real) -> T (SampleRate Real, p) a (T (Value Real)) -> T (SampleRate Real, p) a (T VectorValue)
- wind :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl DetuneBendModControl) StereoChunk)
- windPhaser :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (Control Real) (T (Control Frequency) DetuneBendModControl))) StereoChunk)
- phaserOsci :: (T p Real -> T p Real -> T p a VectorValue) -> T p a (T VectorValue)
- type StringInstrument = SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (Control Real) DetuneBendModControl)) StereoChunk
- softStringShapeCore :: (forall r. VectorValue -> VectorValue -> CodeGenFunction r VectorValue) -> IO StringInstrument
- arcStringStereoFM :: (forall r. VectorValue -> CodeGenFunction r VectorValue) -> IO StringInstrument
- softStringShapeFM :: IO StringInstrument
- arcTriangleStringStereoFM :: IO StringInstrument
- arcSquareStringStereoFM :: IO StringInstrument
- arcSineStringStereoFM :: IO StringInstrument
- arcSawStringStereoFM :: IO StringInstrument
- cosineStringStereoFM :: IO StringInstrument
- fmStringStereoFM :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (T (Control Real) (Control Real)) DetuneBendModControl)) StereoChunk)
- sampledSound :: IO (T -> SampleRate Real -> Real -> Real -> T (T GateChunk DetuneBendModControl) StereoChunk)
- sampledSoundMono :: IO (T -> SampleRate Real -> Real -> Real -> T (T GateChunk BendModControl) Chunk)
- assembleParts :: (Transform a, Transform b) => ((SampleRate Real, (Real, Vector Real)) -> T a b) -> T -> SampleRate Real -> Real -> T (T (Chunk gate) a) b
- resamplingProc :: T (SampleRate Real, (Real, T Real)) VectorValue VectorValue
- helixSound :: IO (T -> SampleRate Real -> Real -> Real -> T (T GateChunk (T (Control Real) DetuneBendModControl)) StereoChunk)
- makeHelix :: IO ((SampleRate Real, ((Real, Real), T Real)) -> T (T Chunk StereoChunk) StereoChunk)
- makeZigZag :: IO ((SampleRate Real, (Real, Real, Real)) -> T (Control Real) Chunk)
- makeIntegrate :: IO ((SampleRate Real, (Real, Real)) -> T (Control Real) Chunk)
Documentation
type Instrument a sig = SampleRate a -> Instrument a sig Source
type Control = T ShortStrictTime Source
type StereoChunk = Vector (T Vector) Source
type BendModControl = Control (T Real) Source
stereoFrequenciesFromDetuneBendModulation :: Param p Real -> (FuncP p inp (Value Real), FuncP p inp (T (Value Real))) -> FuncP p inp (T VectorValue) Source
frequencyFromSampleRate :: SampleRate a -> Frequency a Source
halfLifeControl :: Functor f => SampleRate Real -> f Time -> f (ParameterPacked Vector) Source
frequencyControl :: Functor f => SampleRate Real -> f Frequency -> f Real Source
takeThreshold :: T p Real -> T p VectorValue VectorValue Source
type WithEnvelopeControl remainder = T GateChunk (T (T (Control Time) (Control Time)) remainder) Source
reorderEnvelopeControl :: (Arrow arrow, Read remainder) => arrow (WithEnvelopeControl remainder) (T EnvelopeControl remainder) Source
zipEnvelope :: (Arrow arrow, Transform a, Transform b) => arrow EnvelopeControl a -> arrow (WithEnvelopeControl b) (T a b) Source
pingRelease :: IO (Real -> Real -> Instrument Real Chunk) Source
pingControlledEnvelope :: Maybe Real -> IO (SampleRate Real -> Real -> T EnvelopeControl Chunk) Source
pingStereoReleaseFM :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (T (Control Real) (Control Time)) (T (T (Control Real) (Control Time)) DetuneBendModControl))) StereoChunk) Source
filterSawStereoFM :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (T (Control Frequency) (Control Time)) DetuneBendModControl)) StereoChunk) Source
tineStereoFM :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (T (Control Real) (Control Real)) DetuneBendModControl)) StereoChunk) Source
bellNoiseStereoFM :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (T (Control Real) (Control Real)) DetuneBendModControl)) StereoChunk) Source
stringControlledEnvelope :: IO (SampleRate Real -> Real -> T EnvelopeControl Chunk) Source
windCore :: T (SampleRate Real, p) a (Value Real) -> T (SampleRate Real, p) a (T (Value Real)) -> T (SampleRate Real, p) a (T VectorValue) Source
wind :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl DetuneBendModControl) StereoChunk) Source
windPhaser :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (Control Real) (T (Control Frequency) DetuneBendModControl))) StereoChunk) Source
phaserOsci :: (T p Real -> T p Real -> T p a VectorValue) -> T p a (T VectorValue) Source
type StringInstrument = SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (Control Real) DetuneBendModControl)) StereoChunk Source
softStringShapeCore :: (forall r. VectorValue -> VectorValue -> CodeGenFunction r VectorValue) -> IO StringInstrument Source
arcStringStereoFM :: (forall r. VectorValue -> CodeGenFunction r VectorValue) -> IO StringInstrument Source
fmStringStereoFM :: IO (SampleRate Real -> Real -> Real -> T (WithEnvelopeControl (T (T (Control Real) (Control Real)) DetuneBendModControl)) StereoChunk) Source
sampledSound :: IO (T -> SampleRate Real -> Real -> Real -> T (T GateChunk DetuneBendModControl) StereoChunk) Source
sampledSoundMono :: IO (T -> SampleRate Real -> Real -> Real -> T (T GateChunk BendModControl) Chunk) Source
mainly for testing purposes
assembleParts :: (Transform a, Transform b) => ((SampleRate Real, (Real, Vector Real)) -> T a b) -> T -> SampleRate Real -> Real -> T (T (Chunk gate) a) b Source
resamplingProc :: T (SampleRate Real, (Real, T Real)) VectorValue VectorValue Source
helixSound :: IO (T -> SampleRate Real -> Real -> Real -> T (T GateChunk (T (Control Real) DetuneBendModControl)) StereoChunk) Source
makeHelix :: IO ((SampleRate Real, ((Real, Real), T Real)) -> T (T Chunk StereoChunk) StereoChunk) Source