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

Safe HaskellNone

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 cSource

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 -> signalSource

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

evaluateVectorHead :: NormalForm signal => signal -> t -> tSource

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 StrictTimeSource