synthesizer-0.2.0.1: Audio signal processing coded in HaskellSource codeContentsIndex
Synthesizer.Plain.ToneModulation
Portabilityrequires multi-parameter type classes
Stabilityprovisional
Maintainersynthesizer@henning-thielemann.de
Contents
general helpers
array based shape variable wave
lazy oscillator
Description

Avoid importing this module. Better use functions from Synthesizer.Plain.Oscillator and Synthesizer.Basic.Wave

Input data is interpreted as samples of data on a cylinder in the following form:

 |*          |
 |   *       |
 |      *    |
 |         * |
 | *         |
 |    *      |
 |       *   |
 |          *|
 |  *        |
 |     *     |
 |        *  |
 -----------
 *
     *
         *
  *
      *
          *
   *
       *
           *
    *
        *
 -----------

We have to interpolate in the parallelograms.

Synopsis
type Cell y = T (T y)
interpolateCell :: T a y -> T b y -> (a, b) -> Cell y -> y
data Prototype t y = Prototype {
protoMarginLeap :: Margin
protoMarginStep :: Margin
protoIpOffset :: Int
protoPeriod :: t
protoPeriodInt :: Int
protoShapeLimits :: (t, t)
protoArray :: Array Int y
}
makePrototype :: C t => Margin -> Margin -> Int -> t -> T y -> Prototype t y
sampledToneCell :: C t => Prototype t y -> t -> T t -> ((t, t), Cell y)
oscillatorCells :: C t => Margin -> Margin -> Int -> t -> T y -> (t, T t) -> (T t, T t) -> T ((t, t), Cell y)
seekCell :: C t => Int -> t -> ((t, T t), Cell y) -> ((t, t), Cell y)
oscillatorSuffixes :: C t => Margin -> Margin -> Int -> t -> T y -> (t, T t) -> (T t, T t) -> T ((t, T t), Cell y)
dropFrac :: C i => i -> T a -> (Int, i, T a)
dropFrac' :: C i => i -> T a -> (Int, i, T a)
propDropFrac :: (C i, Eq a) => i -> T a -> Bool
dropRem :: Int -> T a -> (Int, T a)
dropRem' :: Int -> T a -> (Int, T a)
propDropRem :: Eq a => Int -> T a -> Bool
oscillatorCoords :: C t => Int -> t -> (t, T t) -> (T t, T t) -> T (Coords t)
integrateFractional :: C t => t -> (t, T t) -> (T t, T t) -> T (Skip t)
freqsToPhases :: C a => T a -> T a -> T (T a)
limitRelativeShapes :: (C t, Ord t) => Margin -> Margin -> Int -> T y -> (t, T t) -> (t, T t)
limitMinRelativeValues :: (C a, Ord a) => a -> a -> T a -> (a, T a)
limitMaxRelativeValues :: (C a, Ord a) => a -> a -> T a -> (a, T a)
limitMaxRelativeValuesNonNeg :: (C a, Ord a) => a -> a -> T a -> (a, T a)
safeSub :: (C a, Ord a) => a -> a -> (Bool, a)
general helpers
type Cell y = T (T y)Source
interpolateCell :: T a y -> T b y -> (a, b) -> Cell y -> ySource
array based shape variable wave
data Prototype t y Source
Constructors
Prototype
protoMarginLeap :: Margin
protoMarginStep :: Margin
protoIpOffset :: Int
protoPeriod :: t
protoPeriodInt :: Int
protoShapeLimits :: (t, t)
protoArray :: Array Int y
makePrototype :: C t => Margin -> Margin -> Int -> t -> T y -> Prototype t ySource
sampledToneCell :: C t => Prototype t y -> t -> T t -> ((t, t), Cell y)Source
lazy oscillator
oscillatorCells :: C t => Margin -> Margin -> Int -> t -> T y -> (t, T t) -> (T t, T t) -> T ((t, t), Cell y)Source
seekCell :: C t => Int -> t -> ((t, T t), Cell y) -> ((t, t), Cell y)Source
oscillatorSuffixes :: C t => Margin -> Margin -> Int -> t -> T y -> (t, T t) -> (T t, T t) -> T ((t, T t), Cell y)Source
dropFrac :: C i => i -> T a -> (Int, i, T a)Source
dropFrac' :: C i => i -> T a -> (Int, i, T a)Source
propDropFrac :: (C i, Eq a) => i -> T a -> BoolSource
dropRem :: Int -> T a -> (Int, T a)Source
dropRem' :: Int -> T a -> (Int, T a)Source
propDropRem :: Eq a => Int -> T a -> BoolSource
oscillatorCoords :: C t => Int -> t -> (t, T t) -> (T t, T t) -> T (Coords t)Source
integrateFractional :: C t => t -> (t, T t) -> (T t, T t) -> T (Skip t)Source
freqsToPhases :: C a => T a -> T a -> T (T a)Source
Convert a list of phase steps into a list of momentum phases phase is a number in the interval [0,1) freq contains the phase steps
limitRelativeShapes :: (C t, Ord t) => Margin -> Margin -> Int -> T y -> (t, T t) -> (t, T t)Source
limitMinRelativeValues :: (C a, Ord a) => a -> a -> T a -> (a, T a)Source
limitMaxRelativeValues :: (C a, Ord a) => a -> a -> T a -> (a, T a)Source
limitMaxRelativeValuesNonNeg :: (C a, Ord a) => a -> a -> T a -> (a, T a)Source
Avoids negative numbers and thus can be used with Chunky numbers.
safeSub :: (C a, Ord a) => a -> a -> (Bool, a)Source
Produced by Haddock version 2.4.2