midi-0.1.4: Handling of MIDI messages and filesSource codeContentsIndex
Sound.MIDI.Message.Channel
Description
Channel messages
Synopsis
data T = Cons {
messageChannel :: Channel
messageBody :: Body
}
data Body
= Voice T
| Mode T
get :: C parser => Int -> Channel -> Int -> Fallible parser T
getWithStatus :: C parser => Int -> Fallible (T parser) T
put :: C writer => T -> writer
putWithStatus :: C writer => T -> T writer
data Channel
fromChannel :: Channel -> Int
toChannel :: Int -> Channel
data Pitch
fromPitch :: Pitch -> Int
toPitch :: Int -> Pitch
data Velocity
fromVelocity :: Velocity -> Int
toVelocity :: Int -> Velocity
data Program
fromProgram :: Program -> Int
toProgram :: Int -> Program
data Controller
fromController :: Controller -> Int
toController :: Int -> Controller
decodeStatus :: Int -> (Int, Channel)
Documentation
data T Source
Constructors
Cons
messageChannel :: Channel
messageBody :: Body
show/hide Instances
data Body Source
Constructors
Voice T
Mode T
show/hide Instances
get :: C parser => Int -> Channel -> Int -> Fallible parser TSource
Parse a MIDI Channel message. Note that since getting the first byte is a little complex (there are issues with running status), the code, channel and first data byte must be determined by the caller.
getWithStatus :: C parser => Int -> Fallible (T parser) TSource
Parse an event. Note that in the case of a regular MIDI Event, the tag is the status, and we read the first byte of data before we call get. In the case of a MIDIEvent with running status, we find out the status from the parser (it's been nice enough to keep track of it for us), and the tag that we've already gotten is the first byte of data.
put :: C writer => T -> writerSource
putWithStatus :: C writer => T -> T writerSource
data Channel Source
This definition should be in Message.Channel, but this results in a cyclic import.
show/hide Instances
fromChannel :: Channel -> IntSource
toChannel :: Int -> ChannelSource
data Pitch Source
show/hide Instances
fromPitch :: Pitch -> IntSource
toPitch :: Int -> PitchSource
data Velocity Source
show/hide Instances
fromVelocity :: Velocity -> IntSource
toVelocity :: Int -> VelocitySource
data Program Source
show/hide Instances
fromProgram :: Program -> IntSource
toProgram :: Int -> ProgramSource
data Controller Source

We do not define Controller as enumeration with many constructors, because some controller have multiple names and some are undefined. It is also more efficient this way. Thus you cannot use case for processing controller types, but you can use Data.List.lookup instead.

 maybe (putStrLn "unsupported controller") putStrLn $
 lookup ctrl $
    (portamento, "portamento") :
    (modulation, "modulation") :
    []
show/hide Instances
fromController :: Controller -> IntSource
toController :: Int -> ControllerSource
decodeStatus :: Int -> (Int, Channel)Source
for internal use
Produced by Haddock version 2.4.2