RtMidi-0.3.0.0: examples/poll.hs
import Sound.RtMidi (InputDevice, closePort, defaultInput, getMessage, openPort)
import Control.Concurrent (forkIO, killThread)
import Control.Monad (forever)
mainLoop :: InputDevice -> IO ()
mainLoop d = do
m <- getMessage d
if length (snd m) > 0 then
putStrLn $ show m
else return ()
main :: IO ()
main = do
i <- defaultInput
openPort i 0 "RtMidi"
id <- forkIO $ forever $ mainLoop i
_ <- getLine
killThread id
closePort i
return ()