Safe Haskell | None |
---|---|
Language | Haskell2010 |
Low-level binding to the CoreMIDI services present in Mac OS X.
Error handling is via fail
-s in the IO monad.
- enumerateDevices :: IO [MIDIDeviceRef]
- enumerateSources :: IO [Source]
- enumerateDestinations :: IO [Destination]
- class MIDIObject a => MIDIHasName a where
- newSource :: MIDIClientRef -> String -> IO Source
- newDestination :: MIDIClientRef -> String -> IO Destination
- disposeEndpoint :: Endpoint a => a -> IO ()
- newClient :: String -> IO MIDIClientRef
- disposeClient :: MIDIClientRef -> IO ()
- newInputPort :: MIDIClientRef -> String -> FunPtr (MIDIReadProc r s) -> Ptr r -> IO MIDIPortRef
- newOutputPort :: MIDIClientRef -> String -> IO MIDIPortRef
- disposePort :: MIDIPortRef -> IO ()
- connectToSource :: MIDIPortRef -> Source -> Ptr a -> IO ()
- disconnectFromSource :: MIDIPortRef -> Source -> IO ()
- midiSend :: MIDIPortRef -> Destination -> ShortMessage -> IO ()
- midiSend' :: MIDIPortRef -> Destination -> MIDITimeStamp -> ShortMessage -> IO ()
- midiSendList :: MIDIPortRef -> Destination -> [ShortMessage] -> IO ()
- midiSendList' :: MIDIPortRef -> Destination -> MIDITimeStamp -> [ShortMessage] -> IO ()
- midiSendSysEx :: Endpoint a => a -> [Word8] -> IO ()
- data OpaqueMIDIClient
- data OpaqueMIDIObject
- data OpaqueMIDIDevice
- data OpaqueMIDIEntity
- data OpaqueMIDIEndpoint
- data OpaqueMIDIPort
- type MIDIClientRef = Ptr OpaqueMIDIClient
- type MIDIObjectRef = Ptr OpaqueMIDIObject
- type MIDIDeviceRef = Ptr OpaqueMIDIDevice
- type MIDIEntityRef = Ptr OpaqueMIDIEntity
- type MIDIEndpointRef = Ptr OpaqueMIDIEndpoint
- type MIDIPortRef = Ptr OpaqueMIDIPort
- type MIDITimeStamp = UInt64
- type MIDIReadProc r s = Ptr MIDIPacket -> Ptr r -> Ptr s -> IO ()
- mkMIDIReadProc :: MIDIReadProc () () -> IO (FunPtr (MIDIReadProc () ()))
- data MIDIPacket
- newtype Source = Source MIDIEndpointRef
- newtype Destination = Destination MIDIEndpointRef
- depackMIDIPacketList :: Ptr MIDIPacket -> IO [(MIDITimeStamp, [Word8])]
- depackSingleMIDIPacket :: Ptr MIDIPacket -> IO (Int, MIDITimeStamp, [[Word8]])
- decodeShortMessage :: [Word8] -> ShortMessage
- isShortMessage :: [Word8] -> Bool
Documentation
enumerateDevices :: IO [MIDIDeviceRef] Source
Note: If a client iterates through the devices and entities in the system, it will not ever visit any virtual sources and destinations created by other clients. Also, a device iteration will return devices which are offline (were present in the past but are not currently present), while iterations through the system's sources and destinations will not include the endpoints of offline devices.
Thus clients should usually use enumerateSources
and enumerateDestinations
, rather iterating through devices and entities to locate endpoints.
enumerateSources :: IO [Source] Source
Enumaretes the MIDI sources present.
enumerateDestinations :: IO [Destination] Source
Enumaretes the MIDI destinations present.
class MIDIObject a => MIDIHasName a where Source
MIDI objects which can have a name, model name and manufacturer
Nothing
newSource :: MIDIClientRef -> String -> IO Source Source
Creates a new MIDI source with the given name.
newDestination :: MIDIClientRef -> String -> IO Destination Source
Creates a new MIDI destination with the given name.
disposeEndpoint :: Endpoint a => a -> IO () Source
Disposes an existing MIDI endpoint.
newClient :: String -> IO MIDIClientRef Source
Creates a new MIDI client with the given name.
disposeClient :: MIDIClientRef -> IO () Source
Disposes an existing MIDI client.
newInputPort :: MIDIClientRef -> String -> FunPtr (MIDIReadProc r s) -> Ptr r -> IO MIDIPortRef Source
Creates a new input port.
newOutputPort :: MIDIClientRef -> String -> IO MIDIPortRef Source
Creates a new output port.
disposePort :: MIDIPortRef -> IO () Source
Disposes an existing port.
connectToSource :: MIDIPortRef -> Source -> Ptr a -> IO () Source
Connects an input port to a source.
disconnectFromSource :: MIDIPortRef -> Source -> IO () Source
Disconnects an input port from a source.
midiSend :: MIDIPortRef -> Destination -> ShortMessage -> IO () Source
Sends a short message with timestamp "now".
midiSend' :: MIDIPortRef -> Destination -> MIDITimeStamp -> ShortMessage -> IO () Source
Sends a short message with the given timestamp.
midiSendList :: MIDIPortRef -> Destination -> [ShortMessage] -> IO () Source
Sends a list of short messages with timestamp "now".
midiSendList' :: MIDIPortRef -> Destination -> MIDITimeStamp -> [ShortMessage] -> IO () Source
Sends a list of short messages with the given timestamp.
midiSendSysEx :: Endpoint a => a -> [Word8] -> IO () Source
data OpaqueMIDIClient Source
data OpaqueMIDIObject Source
type MIDIClientRef = Ptr OpaqueMIDIClient Source
type MIDIObjectRef = Ptr OpaqueMIDIObject Source
type MIDIDeviceRef = Ptr OpaqueMIDIDevice Source
type MIDIEntityRef = Ptr OpaqueMIDIEntity Source
type MIDIPortRef = Ptr OpaqueMIDIPort Source
type MIDITimeStamp = UInt64 Source
type MIDIReadProc r s = Ptr MIDIPacket -> Ptr r -> Ptr s -> IO () Source
r
is readProcRefCon (The refCon you passed to MIDIInputPortCreate or MIDIDestinationCreate);
s
is srcConnRefCon (A refCon you passed to MIDIPortConnectSource, which identifies the source of the data).
mkMIDIReadProc :: MIDIReadProc () () -> IO (FunPtr (MIDIReadProc () ())) Source
data MIDIPacket Source
newtype Destination Source
depackMIDIPacketList :: Ptr MIDIPacket -> IO [(MIDITimeStamp, [Word8])] Source
depackSingleMIDIPacket :: Ptr MIDIPacket -> IO (Int, MIDITimeStamp, [[Word8]]) Source
decodeShortMessage :: [Word8] -> ShortMessage Source
isShortMessage :: [Word8] -> Bool Source