Safe Haskell | None |
---|---|
Language | Haskell2010 |
Convert MIDI events of a MIDI controller to a control signal.
Synopsis
- chunkSizesFromLazyTime :: LazyTime -> T ChunkSize
- piecewiseConstant :: Storable y => T StrictTime y -> T y
- piecewiseConstantInit :: Storable y => y -> T StrictTime y -> T y
- piecewiseConstantInitWith :: Storable c => (y -> c) -> c -> T StrictTime [y] -> T c
- controllerLinear :: (C event, Storable y, C y) => Channel -> Controller -> (y, y) -> y -> Filter event (T y)
- controllerExponential :: (C event, Storable y, C y) => Channel -> Controller -> (y, y) -> y -> Filter event (T y)
- pitchBend :: (C event, Storable y, C y) => Channel -> y -> y -> Filter event (T y)
- channelPressure :: (C event, Storable y, C y) => Channel -> y -> y -> Filter event (T y)
- bendWheelPressure :: (C event, Storable y, C y, C y) => Channel -> Int -> y -> y -> y -> Filter event (T y)
- type Instrument y yv = Instrument y (T yv)
- type Bank y yv = Bank y (T yv)
- sequenceCore :: (C event, Storable yv, C yv) => ChunkSize -> Channel -> Program -> Modulator Note (T yv) -> Filter event (T yv)
- sequence :: (C event, Storable yv, C yv, C y) => ChunkSize -> Channel -> Instrument y yv -> Filter event (T yv)
- sequenceModulated :: (C event, Storable c, Storable yv, C yv, C y) => ChunkSize -> T c -> Channel -> (T c -> Instrument y yv) -> Filter event (T yv)
- sequenceMultiModulated :: (C event, Storable yv, C yv, C y) => ChunkSize -> Channel -> instrument -> Modulator (instrument, Note) (Instrument y yv, Note) -> Filter event (T yv)
- applyModulation :: Storable c => T c -> Modulator (T c -> instr, note) (instr, note)
- advanceModulationLazy :: Storable a => LazyTime -> State (T a) LazyTime
- advanceModulationStrict :: Storable a => LazyTime -> State (T a) LazyTime
- advanceModulationChunky :: Storable a => LazyTime -> State (T a) LazyTime
- sequenceMultiProgram :: (C event, Storable yv, C yv, C y) => ChunkSize -> Channel -> Program -> [Instrument y yv] -> Filter event (T yv)
- renderInstrument :: C y => Bank y signal -> Note -> signal
- renderInstrumentIgnoreProgram :: C y => Instrument y signal -> Note -> signal
- evaluateVectorHead :: NormalForm signal => signal -> t -> t
- advanceModulationChunk :: (Transform signal, NormalForm signal) => StrictTime -> State signal StrictTime
Documentation
piecewiseConstant :: Storable y => T StrictTime y -> T y Source #
piecewiseConstantInit :: Storable y => y -> T StrictTime y -> T y Source #
piecewiseConstantInitWith :: Storable c => (y -> c) -> c -> T StrictTime [y] -> T c Source #
controllerLinear :: (C event, Storable y, C y) => Channel -> Controller -> (y, y) -> y -> Filter event (T y) Source #
controllerExponential :: (C event, Storable y, C y) => Channel -> Controller -> (y, y) -> y -> Filter event (T y) Source #
pitchBend :: (C event, Storable y, C y) => Channel -> y -> y -> Filter event (T y) Source #
pitchBend channel range center
:
emits frequencies on an exponential scale from
center/range
to center*range
.
bendWheelPressure :: (C event, Storable y, C y, C y) => Channel -> Int -> y -> y -> y -> Filter event (T y) Source #
type Instrument y yv = Instrument y (T yv) Source #
sequenceCore :: (C event, Storable yv, C yv) => ChunkSize -> Channel -> Program -> Modulator Note (T yv) -> Filter event (T yv) Source #
sequence :: (C event, Storable yv, C yv, C y) => ChunkSize -> Channel -> Instrument y yv -> Filter event (T yv) Source #
sequenceModulated :: (C event, Storable c, Storable yv, C yv, C y) => ChunkSize -> T c -> Channel -> (T c -> Instrument y yv) -> Filter event (T yv) Source #
sequenceMultiModulated :: (C event, Storable yv, C yv, C y) => ChunkSize -> Channel -> instrument -> Modulator (instrument, Note) (Instrument y yv, Note) -> Filter event (T yv) Source #
sequenceMultiProgram :: (C event, Storable yv, C yv, C y) => ChunkSize -> Channel -> Program -> [Instrument y yv] -> Filter event (T yv) Source #
renderInstrument :: C y => Bank y signal -> Note -> signal Source #
Instrument parameters are: velocity from -1 to 1 (0 is the normal pressure, no pressure aka NoteOff is not supported), frequency is given in Hertz
renderInstrumentIgnoreProgram :: C y => Instrument y signal -> Note -> signal Source #
evaluateVectorHead :: NormalForm signal => signal -> t -> t Source #
We have to evaluate the head value at each drop
in order to avoid growing thunks that lead to a space leak.
advanceModulationChunk :: (Transform signal, NormalForm signal) => StrictTime -> State signal StrictTime Source #