packages feed

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 ()