hsc3-server-0.3.0: Sound/SC3/Server/Process/Monad.hs
module Sound.SC3.Server.Process.Monad (
withSynth
, withDefaultSynth
, withInternal
, withDefaultInternal
-- * Re-exported for convenience
, module Sound.SC3.Server.Options
, OutputHandler(..)
, defaultOutputHandler
) where
import qualified Sound.SC3.Server.Connection as Conn
import qualified Sound.SC3.Server.Internal as Process
import Sound.SC3.Server.Monad (Server)
import qualified Sound.SC3.Server.Monad as Server
import Sound.SC3.Server.Options
import Sound.SC3.Server.Process ( OutputHandler(..), defaultOutputHandler )
import qualified Sound.SC3.Server.Process as Process
import qualified Sound.SC3.Server.State as State
withSynth :: ServerOptions -> RTOptions -> OutputHandler -> Server a -> IO a
withSynth serverOptions rtOptions outputHandler action =
Process.withSynth
serverOptions
rtOptions
outputHandler
$ \t -> Conn.new (State.new serverOptions) t >>= Server.runServer action
withDefaultSynth :: Server a -> IO a
withDefaultSynth = withSynth defaultServerOptions defaultRTOptions defaultOutputHandler
withInternal :: ServerOptions -> RTOptions -> OutputHandler -> Server a -> IO a
withInternal serverOptions rtOptions outputHandler action =
Process.withInternal
serverOptions
rtOptions
outputHandler
$ \t -> Conn.new (State.new serverOptions) t >>= Server.runServer action
withDefaultInternal :: Server a -> IO a
withDefaultInternal = withInternal defaultServerOptions defaultRTOptions defaultOutputHandler