Convert MIDI events of a MIDI controller to a control signal.
- type T = T StrictTime
- subdivide :: T LazyTime y -> T StrictTime y
- subdivideInt :: T LazyTime y -> T Int y
- duration :: T y -> LazyTime
- zipWith :: (a -> b -> c) -> T StrictTime a -> T StrictTime b -> T StrictTime c
- initWith :: (y -> c) -> c -> T StrictTime [y] -> T c
- controllerLinear :: C y => Channel -> Controller -> (y, y) -> y -> Filter (T y)
- controllerExponential :: C y => Channel -> Controller -> (y, y) -> y -> Filter (T y)
- pitchBend :: C y => Channel -> y -> y -> Filter (T y)
- channelPressure :: C y => Channel -> y -> y -> Filter (T y)
- data BendModulation a = BendModulation a a
- shiftBendModulation :: C a => a -> BendModulation a -> BendModulation a
- bendWheelPressure :: (C y, C y) => Channel -> Int -> y -> y -> Filter (T (BendModulation y))
Documentation
type T = T StrictTimeSource
subdivideInt :: T LazyTime y -> T Int ySource
Subdivide lazy times into chunks that fit into the number range
representable by Int
.
zipWith :: (a -> b -> c) -> T StrictTime a -> T StrictTime b -> T StrictTime cSource
initWith :: (y -> c) -> c -> T StrictTime [y] -> T cSource
controllerLinear :: C y => Channel -> Controller -> (y, y) -> y -> Filter (T y)Source
controllerExponential :: C y => Channel -> Controller -> (y, y) -> y -> Filter (T y)Source
pitchBend :: C y => Channel -> y -> y -> Filter (T y)Source
pitchBend channel range center
:
emits frequencies on an exponential scale from
center/range
to center*range
.
data BendModulation a Source
BendModulation a a |
Eq a => Eq (BendModulation a) | |
Show a => Show (BendModulation a) | |
NFData a => NFData (BendModulation a) |
shiftBendModulation :: C a => a -> BendModulation a -> BendModulation aSource
Multiply the pitch bend by a given factor. This way you can e.g. shift the pitch bend from around 1 to the actual frequency.
bendWheelPressure :: (C y, C y) => Channel -> Int -> y -> y -> Filter (T (BendModulation y))Source