essence-of-live-coding-PortMidi-0.2.6: 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
}