synthesizer-midi-0.6.1: Render audio signals from MIDI files or realtime messages

Safe HaskellNone
LanguageHaskell2010

Synthesizer.MIDI.Storable

Description

Convert MIDI events of a MIDI controller to a control signal.

Synopsis

Documentation

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.

channelPressure :: (C event, Storable y, C y) => Channel -> y -> y -> Filter event (T y) Source #

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 #

type Bank y yv = Bank 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 #

applyModulation :: Storable c => T c -> Modulator (T c -> instr, note) (instr, note) 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.