essence-of-live-coding-PortMidi-0.2.8: src/LiveCoding/PortMidi/Internal.hs
module LiveCoding.PortMidi.Internal where
-- base
import Control.Monad (void)
import Control.Monad.IO.Class
-- PortMidi
import Sound.PortMidi
-- essence-of-live-coding
import LiveCoding.Handle
-- | A marker witnessing that PortMidi was initialized
data PortMidiHandle = PortMidiHandle
portMidiHandle :: (MonadIO m) => Handle m PortMidiHandle
portMidiHandle =
Handle
{ create = do
liftIO initialize
return PortMidiHandle
, destroy = const $ liftIO $ void terminate
}