Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
- class C event where
- noteExplicitOff :: C event => Channel -> event -> Maybe (Velocity, Pitch, Bool)
- noteImplicitOff :: C event => Channel -> event -> Maybe (Velocity, Pitch, Bool)
- controller :: C event => Channel -> Controller -> event -> Maybe Int
- liftMidi :: (Channel -> T -> Maybe a) -> Channel -> T -> Maybe a
- liftFile :: (Channel -> T -> Maybe a) -> Channel -> T -> Maybe a
Documentation
All methods have default implementations that return Nothing
.
This helps implementing event data types
that support only a subset of types of events.
Maybe a better approach is to provide type classes
for every type of event
and make C
a subclass of all of them.
Nothing
note :: Channel -> event -> Maybe (Velocity, Pitch, Bool) Source
Warning: This returns note events as they are,
that is, a NoteOff p 64
might be encoded as such or as NoteOn p 0
depending on the content of event
.
For normalized results you may use noteExplicitOff
.
program :: Channel -> event -> Maybe Program Source
anyController :: Channel -> event -> Maybe (Controller, Int) Source
pitchBend :: Channel -> event -> Maybe Int Source
channelPressure :: Channel -> event -> Maybe Int Source
noteExplicitOff :: C event => Channel -> event -> Maybe (Velocity, Pitch, Bool) Source
Like note
, but converts NoteOn p 0
to NoteOff p 64
.
See explicitNoteOff
.
noteImplicitOff :: C event => Channel -> event -> Maybe (Velocity, Pitch, Bool) Source
Like note
, but converts NoteOff p 64
to NoteOn p 0
.
See implicitNoteOff
.
controller :: C event => Channel -> Controller -> event -> Maybe Int Source