Safe Haskell | None |
---|---|
Language | Haskell98 |
Synopsis
- data family InputArg signal a
- data FrequencyControl a
- data Modulation a
- data DetuneModulation a
- pingRelease :: IO (Real -> Real -> ChunkSize -> Instrument Real Vector)
- pingStereoRelease :: IO (Real -> Real -> ChunkSize -> Instrument Real (T Vector))
- pingStereoReleaseFM :: IO (Real -> Real -> T Real -> T Real -> Real -> Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- squareStereoReleaseFM :: IO (Real -> Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- bellStereoFM :: IO (Real -> Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- bellNoiseStereoFM :: IO (Real -> Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- tine :: IO (Real -> Real -> ChunkSize -> Instrument Real Vector)
- tineStereo :: IO (Real -> Real -> ChunkSize -> Instrument Real (T Vector))
- softString :: IO (Instrument Real (T Vector))
- softStringFM :: IO (T (T Real) -> Instrument Real (T Vector))
- tineStereoFM :: IO (Real -> Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- tineControlledFM :: IO (Real -> Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- fenderFM :: IO (Real -> Real -> T Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- tineModulatorBankFM :: IO (Real -> Real -> T Real -> T Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- tineBankFM :: IO (Real -> Real -> T Real -> T Real -> T Real -> T Real -> T Real -> T Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- resonantFMSynth :: IO (Real -> Real -> T Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- softStringDetuneFM :: IO (Real -> T Real -> T (T Real) -> Instrument Real (T Vector))
- softStringShapeFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector))
- cosineStringStereoFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector))
- arcSineStringStereoFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector))
- arcTriangleStringStereoFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector))
- arcSquareStringStereoFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector))
- arcSawStringStereoFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector))
- fmStringStereoFM :: IO (Real -> T Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector))
- wind :: IO (Real -> T Real -> T (T Real) -> Instrument Real (T Vector))
- windPhaser :: IO (Real -> T Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector))
- filterSawStereoFM :: IO (Real -> Real -> T Real -> Real -> Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- brass :: IO (Real -> Real -> Real -> Real -> Real -> Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector))
- sampledSound :: IO (T -> T (T Real) -> Instrument Real (T Vector))
- stereoNoise :: SampleRate (Exp Real) -> T (T VectorValue)
- frequencyFromBendModulation :: Exp Real -> T (T (T RealValue)) -> T VectorValue
- piecewiseConstantVector :: T (T RealValue) -> T VectorValue
- pingReleaseEnvelope :: IO (Real -> Real -> ChunkSize -> SampleRate Real -> Real -> LazyTime -> T Vector)
- adsr :: IO (Real -> Real -> Real -> Real -> Real -> ChunkSize -> SampleRate Real -> Real -> LazyTime -> T Vector)
Documentation
data family InputArg signal a Source #
Instances
(a ~ b, Input signal b, Wrapped a f) => Wrapped a (InputArg signal b -> f) Source # | |
(Input signal b, a ~ b) => ArgTuple a (InputArg signal b) Source # | |
data InputArg (Signal b) a Source # | |
Defined in Synthesizer.LLVM.Server.Common | |
data InputArg (Control b) a Source # | |
Defined in Synthesizer.LLVM.Server.Common | |
data InputArg (Parameter b) a Source # | |
Defined in Synthesizer.LLVM.Server.Common | |
data InputArg (DetuneModulation b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument | |
data InputArg (Modulation b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument | |
data InputArg (FrequencyControl b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument | |
type Unwrapped (InputArg signal b -> f) Source # | |
Defined in Synthesizer.LLVM.Server.Common | |
type ArgPlain (InputArg signal b) Source # | |
Defined in Synthesizer.LLVM.Server.Common |
data FrequencyControl a Source #
Instances
(a ~ Exp b, Field b, RationalConstant b) => Input (FrequencyControl b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument data InputArg (FrequencyControl b) a :: Type Source # type InputSource (FrequencyControl b) a :: Type Source # evalInput :: SampleRate a -> InputSource (FrequencyControl b) a -> InputArg (FrequencyControl b) a Source # | |
data InputArg (FrequencyControl b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument | |
type InputSource (FrequencyControl b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument |
data Modulation a Source #
Instances
(a ~ Exp b, Field b, RationalConstant b) => Input (Modulation b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument data InputArg (Modulation b) a :: Type Source # type InputSource (Modulation b) a :: Type Source # evalInput :: SampleRate a -> InputSource (Modulation b) a -> InputArg (Modulation b) a Source # | |
data InputArg (Modulation b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument | |
type InputSource (Modulation b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument |
data DetuneModulation a Source #
Instances
(a ~ Exp b, Field b, RationalConstant b) => Input (DetuneModulation b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument data InputArg (DetuneModulation b) a :: Type Source # type InputSource (DetuneModulation b) a :: Type Source # evalInput :: SampleRate a -> InputSource (DetuneModulation b) a -> InputArg (DetuneModulation b) a Source # | |
data InputArg (DetuneModulation b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument | |
type InputSource (DetuneModulation b) a Source # | |
Defined in Synthesizer.LLVM.Server.Packed.Instrument |
pingRelease :: IO (Real -> Real -> ChunkSize -> Instrument Real Vector) Source #
pingStereoReleaseFM :: IO (Real -> Real -> T Real -> T Real -> Real -> Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
squareStereoReleaseFM :: IO (Real -> Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
Square like wave constructed as difference of two phase shifted sawtooth like oscillations.
bellStereoFM :: IO (Real -> Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
bellNoiseStereoFM :: IO (Real -> Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
softString :: IO (Instrument Real (T Vector)) Source #
tineControlledFM :: IO (Real -> Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
fenderFM :: IO (Real -> Real -> T Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
tineModulatorBankFM :: IO (Real -> Real -> T Real -> T Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
tineBankFM :: IO (Real -> Real -> T Real -> T Real -> T Real -> T Real -> T Real -> T Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
resonantFMSynth :: IO (Real -> Real -> T Real -> T Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
softStringShapeFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector)) Source #
cosineStringStereoFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector)) Source #
arcSineStringStereoFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector)) Source #
arcTriangleStringStereoFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector)) Source #
arcSquareStringStereoFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector)) Source #
arcSawStringStereoFM :: IO (Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector)) Source #
fmStringStereoFM :: IO (Real -> T Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector)) Source #
windPhaser :: IO (Real -> T Real -> T Real -> T Real -> T (T Real) -> Instrument Real (T Vector)) Source #
filterSawStereoFM :: IO (Real -> Real -> T Real -> Real -> Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
brass :: IO (Real -> Real -> Real -> Real -> Real -> Real -> T Real -> T Real -> ChunkSize -> T (T Real) -> Instrument Real (T Vector)) Source #
helper functions
stereoNoise :: SampleRate (Exp Real) -> T (T VectorValue) Source #
frequencyFromBendModulation :: Exp Real -> T (T (T RealValue)) -> T VectorValue Source #
piecewiseConstantVector :: T (T RealValue) -> T VectorValue Source #
for testing
pingReleaseEnvelope :: IO (Real -> Real -> ChunkSize -> SampleRate Real -> Real -> LazyTime -> T Vector) Source #
adsr :: IO (Real -> Real -> Real -> Real -> Real -> ChunkSize -> SampleRate Real -> Real -> LazyTime -> T Vector) Source #
The ADSR curve is composed from three parts: Attack, Decay(+Sustain), Release. Attack starts when the key is pressed and lasts attackTime seconds where it reaches height attackPeak*amplitudeOfVelocity. It should be attackPeak>1 because in the following phase we want to approach 1 from above. Say the curve would approach the limit value L if it would continue after the end of the attack phase, the slope is determined by the halfLife with respect to this upper bound. That is, attackHalfLife is the time in seconds where the attack curve reaches or would reach L/2. After Attack the Decay part starts at the same level and decays to amplitudeOfVelocity. The slope is again a halfLife, that is, decayHalfLife is the time where the curve drops from attackPeak*amplitudeOfVelocity to (attackPeak+1)/2*amplitudeOfVelocity. This phase lasts as long as the key is pressed. If the key is released the curve decays with half life releaseHalfLife.