hsc3-server-0.5.0: Sound/SC3/Server/State/Monad/Process.hs
module Sound.SC3.Server.State.Monad.Process (
withTransport
, withSynth
, withDefaultSynth
-- * Re-exported for convenience
, module Sound.SC3.Server.Process
) where
import Data.Default (def)
import qualified Sound.SC3.Server.Connection as Conn
import Sound.SC3.Server.Process hiding (withSynth, withTransport)
import qualified Sound.SC3.Server.Process as Process
import Sound.SC3.Server.State.Monad (Server)
import qualified Sound.SC3.Server.State.Monad as Server
-- | Open a transport to an existing @scsynth@ process determined by
-- 'networkPort' and run the supplied 'Server' action.
withTransport ::
ServerOptions -- ^ General server options
-> RTOptions -- ^ Realtime server options
-> Server a -- ^ Action to execute
-> IO a -- ^ Action result
withTransport serverOptions rtOptions action =
Process.withTransport
serverOptions
rtOptions
$ \t -> Conn.open t >>= Server.runServer action serverOptions
-- | Start an @scsynth@ instance and run the supplied 'Server' action.
--
-- When the action returns, @scsynth@ will quit.
withSynth ::
ServerOptions -- ^ General server options
-> RTOptions -- ^ Realtime server options
-> OutputHandler -- ^ Output handler
-> Server a -- ^ Action to execute
-> IO a -- ^ Action result
withSynth serverOptions rtOptions outputHandler action =
Process.withSynth
serverOptions
rtOptions
outputHandler
$ \t -> Conn.open t >>= Server.runServer action serverOptions
-- | Start an @scsynth@ instance with default options and run the supplied 'Server' action.
withDefaultSynth :: Server a -> IO a
withDefaultSynth = withSynth def def def