RtMidi-0.4.0.0: examples/poll.hs
import Control.Concurrent (forkIO, killThread)
import Control.Monad (forever)
import qualified Data.Vector.Storable as VS
import Sound.RtMidi (InputDevice, closePort, defaultInput, getMessage, openPort)
mainLoop :: InputDevice -> IO ()
mainLoop d = do
m <- getMessage d
if VS.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 ()