packages feed

libremidi-0.1.0: exe/Main.hs

module Main
  ( main
  )
where

import Control.Monad.IO.Class (liftIO)
import Data.Foldable (traverse_)
import Data.Sequence qualified as Seq
import Data.Text.IO qualified as TIO
import Libremidi.Api qualified as LMA
import Libremidi.Simple qualified as LMS

main :: IO ()
main = flip LMS.runMidiM LMS.stderrLogFun $ do
  liftIO (putStrLn "* In ports:")
  inPorts <- LMS.listInPorts
  traverse_ (liftIO . TIO.putStrLn . fst) inPorts
  liftIO (putStrLn "* Out ports:")
  outPorts <- LMS.listOutPorts
  traverse_ (liftIO . TIO.putStrLn . fst) outPorts
  liftIO (putStrLn "* Opening first out port")
  let op = snd (Seq.index outPorts 0)
  oh <- LMS.openOutPort op
  liftIO (putStrLn "* Connected")
  liftIO (LMA.freeOutHandle oh)
  liftIO (putStrLn "* Freed")