packages feed

hamid-0.7: src/System/MIDI/Placeholder.hs

-- | This is just to be able to produce a Haddock documentation on a Linux system

module System.MIDI.Placeholder
    ( module System.MIDI.Base

    , Source
    , Destination
    , Connection
 
    , enumerateSources
    , enumerateDestinations
    
    , MIDIHasName
    , getName
    , getModel
    , getManufacturer

    , openSource
    , openDestination
    , close
    , send
    , sendSysEx
    , start
    , stop
    
    , getNextEvent
    , getEvents
    , currentTime
    
    ) where

import Data.Word
import System.MIDI.Base

-- | The opaque data type representing a MIDI source.
data Source 

-- | The opaque data type representing a MIDI destination.
data Destination 

-- | The opaque data type representing a MIDI connection.
data Connection 

-- Placeholder
class MIDIHasName c where

-- | Enumerates the MIDI sources present in the system.
enumerateSources :: IO [Source]
enumerateSources = undefined

-- | Enumerates the MIDI destinations present in the system.
enumerateDestinations :: IO [Destination]
enumerateDestinations = undefined

-- | These functions return the name, model and manufacturer of a MIDI source \/ destination.
-- 
-- Note: On Win32, only `getName` returns a somewhat meaningful string at the moment.
getName :: MIDIHasName a => a -> IO String
getModel :: MIDIHasName a => a -> IO String
getManufacturer :: MIDIHasName a => a -> IO String

getName = undefined
getModel = undefined
getManufacturer = undefined

-- | 
-- Opens a MIDI Source.
-- There are two possibilites to receive MIDI messages. The user can either support a callback function,
-- or get the messages from an asynchronous buffer. However, mixing the two approaches is not allowed.
openSource :: Source -> Maybe ClientCallback -> IO Connection 
openSource = undefined

-- | Opens a MIDI Destination.
openDestination :: Destination -> IO Connection 
openDestination = undefined

-- | Gets the next event from a buffered connection (see also `openSource`)
getNextEvent :: Connection -> IO (Maybe MidiEvent)
getNextEvent = undefined

-- | Gets all the events from the buffer (see also `openSource`)
getEvents :: Connection -> IO [MidiEvent]
getEvents = undefined
        
-- | Sends a short message. The connection must be a `Destination`.
send :: Connection -> MidiMessage -> IO ()
send = undefined

-- | Sends a system exclusive message. You shouldn't include the starting \/ trailing bytes 0xF0 and 0xF7.
-- 
-- Note: On Win32, the connection must be a `Destination`
sendSysEx :: Connection -> [Word8] -> IO ()
sendSysEx = undefined
 
-- | Starts a connection. This is required for receiving MIDI messages, and also for starting the clock.
start :: Connection -> IO ()
start = undefined

-- | Stops a connection.
stop :: Connection -> IO ()
stop = undefined
    
-- | Closes a MIDI Connection.
close :: Connection -> IO ()
close = undefined
 
-- | Returns the time elapsed since the last `start` call, in milisecs.
currentTime :: Connection -> IO Word32
currentTime = undefined