midi-0.2.2.2: Handling of MIDI messages and files

Safe HaskellSafe
LanguageHaskell2010

Sound.MIDI.Message.Channel

Description

Channel messages

Synopsis

Documentation

data T #

Constructors

Cons 
Instances
Eq T # 
Instance details

Defined in Sound.MIDI.Message.Channel

Methods

(==) :: T -> T -> Bool #

(/=) :: T -> T -> Bool #

Ord T # 
Instance details

Defined in Sound.MIDI.Message.Channel

Methods

compare :: T -> T -> Ordering #

(<) :: T -> T -> Bool #

(<=) :: T -> T -> Bool #

(>) :: T -> T -> Bool #

(>=) :: T -> T -> Bool #

max :: T -> T -> T #

min :: T -> T -> T #

Show T # 
Instance details

Defined in Sound.MIDI.Message.Channel

Methods

showsPrec :: Int -> T -> ShowS #

show :: T -> String #

showList :: [T] -> ShowS #

Arbitrary T # 
Instance details

Defined in Sound.MIDI.Message.Channel

Methods

arbitrary :: Gen T #

shrink :: T -> [T] #

C T # 
Instance details

Defined in Sound.MIDI.Message.Class.Query

C T # 
Instance details

Defined in Sound.MIDI.Message.Class.Construct

C T # 
Instance details

Defined in Sound.MIDI.Message.Class.Check

data Body #

Constructors

Voice T 
Mode T 
Instances
Eq Body # 
Instance details

Defined in Sound.MIDI.Message.Channel

Methods

(==) :: Body -> Body -> Bool #

(/=) :: Body -> Body -> Bool #

Ord Body # 
Instance details

Defined in Sound.MIDI.Message.Channel

Methods

compare :: Body -> Body -> Ordering #

(<) :: Body -> Body -> Bool #

(<=) :: Body -> Body -> Bool #

(>) :: Body -> Body -> Bool #

(>=) :: Body -> Body -> Bool #

max :: Body -> Body -> Body #

min :: Body -> Body -> Body #

Show Body # 
Instance details

Defined in Sound.MIDI.Message.Channel

Methods

showsPrec :: Int -> Body -> ShowS #

show :: Body -> String #

showList :: [Body] -> ShowS #

get :: C parser => Int -> Channel -> Int -> Fragile parser T #

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 -> Fragile (T parser) T #

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 -> writer #

putWithStatus :: (Compression compress, C writer) => T -> T compress writer #

data Channel #

This definition should be in Message.Channel, but this results in a cyclic import.

Instances
Bounded Channel # 
Instance details

Defined in Sound.MIDI.Parser.Status

Enum Channel # 
Instance details

Defined in Sound.MIDI.Parser.Status

Eq Channel # 
Instance details

Defined in Sound.MIDI.Parser.Status

Methods

(==) :: Channel -> Channel -> Bool #

(/=) :: Channel -> Channel -> Bool #

Ord Channel # 
Instance details

Defined in Sound.MIDI.Parser.Status

Show Channel # 
Instance details

Defined in Sound.MIDI.Parser.Status

Ix Channel # 
Instance details

Defined in Sound.MIDI.Parser.Status

Arbitrary Channel # 
Instance details

Defined in Sound.MIDI.Parser.Status

data Pitch #

Instances
Bounded Pitch # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Enum Pitch # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Eq Pitch # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Methods

(==) :: Pitch -> Pitch -> Bool #

(/=) :: Pitch -> Pitch -> Bool #

Ord Pitch # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Methods

compare :: Pitch -> Pitch -> Ordering #

(<) :: Pitch -> Pitch -> Bool #

(<=) :: Pitch -> Pitch -> Bool #

(>) :: Pitch -> Pitch -> Bool #

(>=) :: Pitch -> Pitch -> Bool #

max :: Pitch -> Pitch -> Pitch #

min :: Pitch -> Pitch -> Pitch #

Show Pitch # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Methods

showsPrec :: Int -> Pitch -> ShowS #

show :: Pitch -> String #

showList :: [Pitch] -> ShowS #

Ix Pitch # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Arbitrary Pitch # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Methods

arbitrary :: Gen Pitch #

shrink :: Pitch -> [Pitch] #

Random Pitch # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Methods

randomR :: RandomGen g => (Pitch, Pitch) -> g -> (Pitch, g) #

random :: RandomGen g => g -> (Pitch, g) #

randomRs :: RandomGen g => (Pitch, Pitch) -> g -> [Pitch] #

randoms :: RandomGen g => g -> [Pitch] #

randomRIO :: (Pitch, Pitch) -> IO Pitch #

randomIO :: IO Pitch #

data Velocity #

Instances
Bounded Velocity #

ToDo: We have defined minBound = Velocity 0, but strictly spoken the minimum Velocity is 1, since Velocity zero means NoteOff. One can at least think of NoteOff with (Velocity 0), but I have never seen that.

Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Eq Velocity # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Ord Velocity # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Show Velocity # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Arbitrary Velocity # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Random Velocity # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

data Program #

Instances
Bounded Program # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Enum Program # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Eq Program # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Methods

(==) :: Program -> Program -> Bool #

(/=) :: Program -> Program -> Bool #

Ord Program # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Show Program # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Ix Program # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Arbitrary Program # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Random Program # 
Instance details

Defined in Sound.MIDI.Message.Channel.Voice

Methods

randomR :: RandomGen g => (Program, Program) -> g -> (Program, g) #

random :: RandomGen g => g -> (Program, g) #

randomRs :: RandomGen g => (Program, Program) -> g -> [Program] #

randoms :: RandomGen g => g -> [Program] #

randomRIO :: (Program, Program) -> IO Program #

randomIO :: IO Program #

data Controller #

We do not define Controller as enumeration with many constructors, because some controllers 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 lookup instead.

maybe (putStrLn "unsupported controller") putStrLn $
lookup ctrl $
   (portamento, "portamento") :
   (modulation, "modulation") :
   []
Instances
Bounded Controller # 
Instance details

Defined in Sound.MIDI.ControllerPrivate

Enum Controller # 
Instance details

Defined in Sound.MIDI.ControllerPrivate

Eq Controller # 
Instance details

Defined in Sound.MIDI.ControllerPrivate

Ord Controller # 
Instance details

Defined in Sound.MIDI.ControllerPrivate

Show Controller # 
Instance details

Defined in Sound.MIDI.ControllerPrivate

Ix Controller # 
Instance details

Defined in Sound.MIDI.ControllerPrivate

Arbitrary Controller # 
Instance details

Defined in Sound.MIDI.ControllerPrivate

Random Controller # 
Instance details

Defined in Sound.MIDI.ControllerPrivate

decodeStatus :: Int -> (Int, Channel) #

for internal use