module Sound.Jack.RawBindings
( clientOpenWithDefaultServer
, clientOpenWithServerName
, clientClose
, clientNameSize
, getClientName
, internalClientNew
, internalClientClose
, activate
, deactivate
, clientThreadId
, isRealtime
, cycleWait
, cycleSignal
, setProcessThread
, setThreadInitCallback
, setProcessCallback
, setFreewheelCallback
, setBufferSizeCallback
, setSampleRateCallback
, setClientRegistrationCallback
, setPortRegistrationCallback
, setPortConnectCallback
, setGraphOrderCallback
, setXrunCallback
, setFreewheel
, setBufferSize
, getSampleRate
, getBufferSize
, engineTakeoverTimebase
, cpuLoad
, portRegister
, portUnregister
, portGetBuffer
, portName
, portShortName
, portFlags
, portType
, portIsMine
, portConnected
, portGetConnections
, portGetAllConnections
, jackPortGetLatency
, jackPortGetTotalLatency
, portSetLatency
, recomputeTotalLatencies
, portSetName
, portSetAlias
, portUnsetAlias
, portRequestMonitor
, portRequestMonitorByName
, portEnsureMonitor
, portMonitoringInput
, connect
, disconnect
, portDisconnect
, portNameSize
, portTypeSize
, getPorts
, portByName
, portById
, framesSinceCycleStart
, frameTime
, framesToTime
, timeToFrames
, getTime
, Port
, PortFlags(..)
, AudioSample
, BufferSizeCallbackPtr
, ClientRegistrationCallbackPtr
, FreewheelCallbackPtr
, GraphOrderCallbackPtr
, PortConnectCallbackPtr
, PortRegistrationCallbackPtr
, ProcessCallbackPtr
, SampleRateCallbackPtr
, ThreadCallbackPtr
, ThreadInitCallbackPtr
, XRunCallbackPtr
, Options(..)
, Client
, Status(..)
, PortID
, defaultAudioType
, defaultMidiType
, fromPThread
, NFrames
, PThread
, Time
) where
import C2HS
import Control.Monad
defaultAudioType :: String
defaultAudioType = "32 bit float mono audio"
defaultMidiType :: String
defaultMidiType = "8 bit raw midi"
newtype Client = Client { fromClient :: (Ptr ()) }
type AudioSample = (CFloat)
data Options = NullOption
| NoStartServer
| UseExactName
| ServerName
| LoadName
| LoadInit
deriving (Eq,Read,Show)
instance Enum Options where
fromEnum NullOption = 0
fromEnum NoStartServer = 1
fromEnum UseExactName = 2
fromEnum ServerName = 4
fromEnum LoadName = 8
fromEnum LoadInit = 16
toEnum 0 = NullOption
toEnum 1 = NoStartServer
toEnum 2 = UseExactName
toEnum 4 = ServerName
toEnum 8 = LoadName
toEnum 16 = LoadInit
toEnum unmatched = error ("Options.toEnum: Cannot match " ++ show unmatched)
data Status = Failure
| InvalidOption
| NameNotUnique
| ServerStarted
| ServerFailed
| ServerError
| NoSuchClient
| LoadFailure
| InitFailure
| ShmFailure
| VersionError
| BackendError
| ClientZombie
deriving (Eq,Read,Show)
instance Enum Status where
fromEnum Failure = 1
fromEnum InvalidOption = 2
fromEnum NameNotUnique = 4
fromEnum ServerStarted = 8
fromEnum ServerFailed = 16
fromEnum ServerError = 32
fromEnum NoSuchClient = 64
fromEnum LoadFailure = 128
fromEnum InitFailure = 256
fromEnum ShmFailure = 512
fromEnum VersionError = 1024
fromEnum BackendError = 2048
fromEnum ClientZombie = 4096
toEnum 1 = Failure
toEnum 2 = InvalidOption
toEnum 4 = NameNotUnique
toEnum 8 = ServerStarted
toEnum 16 = ServerFailed
toEnum 32 = ServerError
toEnum 64 = NoSuchClient
toEnum 128 = LoadFailure
toEnum 256 = InitFailure
toEnum 512 = ShmFailure
toEnum 1024 = VersionError
toEnum 2048 = BackendError
toEnum 4096 = ClientZombie
toEnum unmatched = error ("Status.toEnum: Cannot match " ++ show unmatched)
statusList :: [Status]
statusList = [ Failure, InvalidOption, NameNotUnique, ServerStarted
, ServerFailed, ServerError, NoSuchClient, LoadFailure
, InitFailure, ShmFailure, VersionError]
extractStatusMasks :: (Bits a, Storable a) => Ptr a -> IO [Status]
extractStatusMasks = peek >=> \bits ->
return [bm | bm <- statusList, bits `containsBitMask` bm]
clientOpenWithDefaultServer :: String -> [Options] -> IO (Client, [Status])
clientOpenWithDefaultServer a1 a2 =
withCString a1 $ \a1' ->
let {a2' = combineBitMasks a2} in
alloca $ \a3' ->
clientOpenWithDefaultServer'_ a1' a2' a3' >>= \res ->
extractStatusMasks a3'>>= \a3'' ->
let {res' = Client res} in
return (res', a3'')
clientOpenWithServerName :: String -> [Options] -> String -> IO (Client, [Status])
clientOpenWithServerName a1 a2 a4 =
withCString a1 $ \a1' ->
let {a2' = combineBitMasks a2} in
alloca $ \a3' ->
withCString a4 $ \a4' ->
clientOpenWithServerName'_ a1' a2' a3' a4' >>= \res ->
extractStatusMasks a3'>>= \a3'' ->
let {res' = Client res} in
return (res', a3'')
clientClose :: Client -> IO ()
clientClose a1 =
let {a1' = fromClient a1} in
clientClose'_ a1' >>= \res ->
return ()
clientNameSize :: IO (Int)
clientNameSize =
clientNameSize'_ >>= \res ->
let {res' = cIntConv res} in
return (res')
getClientName :: Client -> IO (String)
getClientName a1 =
let {a1' = fromClient a1} in
getClientName'_ a1' >>= \res ->
peekCString res >>= \res' ->
return (res')
internalClientNew :: String -> String -> String -> IO (Int)
internalClientNew a1 a2 a3 =
withCString a1 $ \a1' ->
withCString a2 $ \a2' ->
withCString a3 $ \a3' ->
internalClientNew'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
internalClientClose :: String -> IO ()
internalClientClose a1 =
withCString a1 $ \a1' ->
internalClientClose'_ a1' >>= \res ->
return ()
activate :: Client -> IO (Int)
activate a1 =
let {a1' = fromClient a1} in
activate'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
deactivate :: Client -> IO (Int)
deactivate a1 =
let {a1' = fromClient a1} in
deactivate'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
newtype PThread = PThread { fromPThread :: (CULong) }
clientThreadId :: Client -> IO (PThread)
clientThreadId a1 =
let {a1' = fromClient a1} in
clientThreadId'_ a1' >>= \res ->
let {res' = PThread res} in
return (res')
isRealtime :: Client -> IO (Bool)
isRealtime a1 =
let {a1' = fromClient a1} in
isRealtime'_ a1' >>= \res ->
let {res' = cToBool res} in
return (res')
type NFrames = (CUInt)
cycleWait :: Client -> IO (Word32)
cycleWait a1 =
let {a1' = fromClient a1} in
cycleWait'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
cycleSignal :: Client -> Int -> IO ()
cycleSignal a1 a2 =
let {a1' = fromClient a1} in
let {a2' = cIntConv a2} in
cycleSignal'_ a1' a2' >>= \res ->
return ()
type ThreadCallbackPtr = ((FunPtr ((Ptr ()) -> (IO (Ptr ())))))
setProcessThread :: Client -> ThreadCallbackPtr -> Ptr () -> IO (Int)
setProcessThread a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setProcessThread'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
type ThreadInitCallbackPtr = ((FunPtr ((Ptr ()) -> (IO ()))))
setThreadInitCallback :: Client -> ThreadInitCallbackPtr -> Ptr () -> IO (Int)
setThreadInitCallback a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setThreadInitCallback'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
type ProcessCallbackPtr = ((FunPtr (CUInt -> ((Ptr ()) -> (IO CInt)))))
setProcessCallback :: Client -> ProcessCallbackPtr -> Ptr () -> IO (Int)
setProcessCallback a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setProcessCallback'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
type FreewheelCallbackPtr = ((FunPtr (CInt -> ((Ptr ()) -> (IO ())))))
setFreewheelCallback :: Client -> FreewheelCallbackPtr -> (Ptr ()) -> IO (Int)
setFreewheelCallback a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setFreewheelCallback'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
type BufferSizeCallbackPtr = ((FunPtr (CUInt -> ((Ptr ()) -> (IO CInt)))))
setBufferSizeCallback :: Client -> BufferSizeCallbackPtr -> (Ptr ()) -> IO (Int)
setBufferSizeCallback a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setBufferSizeCallback'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
type SampleRateCallbackPtr = ((FunPtr (CUInt -> ((Ptr ()) -> (IO CInt)))))
setSampleRateCallback :: Client -> SampleRateCallbackPtr -> (Ptr ()) -> IO (Int)
setSampleRateCallback a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setSampleRateCallback'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
type ClientRegistrationCallbackPtr = ((FunPtr ((Ptr CChar) -> (CInt -> ((Ptr ()) -> (IO ()))))))
setClientRegistrationCallback :: Client -> ClientRegistrationCallbackPtr -> (Ptr ()) -> IO (Int)
setClientRegistrationCallback a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setClientRegistrationCallback'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
type PortRegistrationCallbackPtr = ((FunPtr (CUInt -> (CInt -> ((Ptr ()) -> (IO ()))))))
setPortRegistrationCallback :: Client -> PortRegistrationCallbackPtr -> (Ptr ()) -> IO (Int)
setPortRegistrationCallback a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setPortRegistrationCallback'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
type PortConnectCallbackPtr = ((FunPtr (CUInt -> (CUInt -> (CInt -> ((Ptr ()) -> (IO ())))))))
setPortConnectCallback :: Client -> PortConnectCallbackPtr -> (Ptr ()) -> IO (Int)
setPortConnectCallback a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setPortConnectCallback'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
type GraphOrderCallbackPtr = ((FunPtr ((Ptr ()) -> (IO CInt))))
setGraphOrderCallback :: Client -> GraphOrderCallbackPtr -> (Ptr ()) -> IO (Int)
setGraphOrderCallback a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setGraphOrderCallback'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
type XRunCallbackPtr = ((FunPtr ((Ptr ()) -> (IO CInt))))
setXrunCallback :: Client -> XRunCallbackPtr -> (Ptr ()) -> IO (Int)
setXrunCallback a1 a2 a3 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
let {a3' = id a3} in
setXrunCallback'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
setFreewheel :: Client -> Bool -> IO (Int)
setFreewheel a1 a2 =
let {a1' = fromClient a1} in
let {a2' = cFromBool a2} in
setFreewheel'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
setBufferSize :: Client -> Word32 -> IO (Int)
setBufferSize a1 a2 =
let {a1' = fromClient a1} in
let {a2' = cIntConv a2} in
setBufferSize'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
getSampleRate :: Client -> IO (CUInt)
getSampleRate a1 =
let {a1' = fromClient a1} in
getSampleRate'_ a1' >>= \res ->
let {res' = fromIntegral res} in
return (res')
getBufferSize :: Client -> IO (Word32)
getBufferSize a1 =
let {a1' = fromClient a1} in
getBufferSize'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
engineTakeoverTimebase :: Client -> IO (Int)
engineTakeoverTimebase a1 =
let {a1' = fromClient a1} in
engineTakeoverTimebase'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
cpuLoad :: Client -> IO (Float)
cpuLoad a1 =
let {a1' = fromClient a1} in
cpuLoad'_ a1' >>= \res ->
let {res' = cFloatConv res} in
return (res')
newtype Port = Port { fromPort :: Ptr () }
data PortFlags = PortIsInput
| PortIsOutput
| PortIsPhysical
| PortCanMonitor
| PortIsTerminal
deriving (Eq,Read,Show)
instance Enum PortFlags where
fromEnum PortIsInput = 1
fromEnum PortIsOutput = 2
fromEnum PortIsPhysical = 4
fromEnum PortCanMonitor = 8
fromEnum PortIsTerminal = 16
toEnum 1 = PortIsInput
toEnum 2 = PortIsOutput
toEnum 4 = PortIsPhysical
toEnum 8 = PortCanMonitor
toEnum 16 = PortIsTerminal
toEnum unmatched = error ("PortFlags.toEnum: Cannot match " ++ show unmatched)
portFlagList :: [PortFlags]
portFlagList = [PortIsInput , PortIsOutput , PortIsPhysical , PortCanMonitor , PortIsTerminal]
portRegister :: Client -> String -> String -> [PortFlags] -> Int -> IO (Port)
portRegister a1 a2 a3 a4 a5 =
let {a1' = fromClient a1} in
withCString a2 $ \a2' ->
withCString a3 $ \a3' ->
let {a4' = combineBitMasks a4} in
let {a5' = cIntConv a5} in
portRegister'_ a1' a2' a3' a4' a5' >>= \res ->
let {res' = Port res} in
return (res')
portUnregister :: Client -> Port -> IO (Int)
portUnregister a1 a2 =
let {a1' = fromClient a1} in
let {a2' = fromPort a2} in
portUnregister'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
portGetBuffer :: Port -> Word32 -> IO (Ptr AudioSample)
portGetBuffer a1 a2 =
let {a1' = fromPort a1} in
let {a2' = cIntConv a2} in
portGetBuffer'_ a1' a2' >>= \res ->
let {res' = castPtr res} in
return (res')
portName :: Port -> IO (String)
portName a1 =
let {a1' = fromPort a1} in
portName'_ a1' >>= \res ->
peekCString res >>= \res' ->
return (res')
portShortName :: Port -> IO (String)
portShortName a1 =
let {a1' = fromPort a1} in
portShortName'_ a1' >>= \res ->
peekCString res >>= \res' ->
return (res')
extractPortFlagMasks :: Bits a => a -> [PortFlags]
extractPortFlagMasks bits =
[bm | bm <- portFlagList, bits `containsBitMask` bm]
portFlags :: Port -> IO ([PortFlags])
portFlags a1 =
let {a1' = fromPort a1} in
portFlags'_ a1' >>= \res ->
let {res' = extractPortFlagMasks res} in
return (res')
portType :: Port -> IO (String)
portType a1 =
let {a1' = fromPort a1} in
portType'_ a1' >>= \res ->
peekCString res >>= \res' ->
return (res')
portIsMine :: Client -> Port -> IO (Bool)
portIsMine a1 a2 =
let {a1' = fromClient a1} in
let {a2' = fromPort a2} in
portIsMine'_ a1' a2' >>= \res ->
let {res' = cToBool res} in
return (res')
portConnected :: Port -> IO (Int)
portConnected a1 =
let {a1' = fromPort a1} in
portConnected'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
peekCStringArray0 :: (Ptr CString) -> IO [String]
peekCStringArray0 p = do
ptrs <- peekArray0 nullPtr p
mapM peekCString ptrs
portGetConnections :: Port -> IO ([String])
portGetConnections a1 =
let {a1' = fromPort a1} in
portGetConnections'_ a1' >>= \res ->
peekCStringArray0 res >>= \res' ->
return (res')
portGetAllConnections :: Client -> Port -> IO ([String])
portGetAllConnections a1 a2 =
let {a1' = fromClient a1} in
let {a2' = fromPort a2} in
portGetAllConnections'_ a1' a2' >>= \res ->
peekCStringArray0 res >>= \res' ->
return (res')
jackPortGetLatency :: Port -> IO (Word32)
jackPortGetLatency a1 =
let {a1' = fromPort a1} in
jackPortGetLatency'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
jackPortGetTotalLatency :: Client -> Port -> IO (Word32)
jackPortGetTotalLatency a1 a2 =
let {a1' = fromClient a1} in
let {a2' = fromPort a2} in
jackPortGetTotalLatency'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
portSetLatency :: Port -> Word32 -> IO ()
portSetLatency a1 a2 =
let {a1' = fromPort a1} in
let {a2' = cIntConv a2} in
portSetLatency'_ a1' a2' >>= \res ->
return ()
recomputeTotalLatencies :: Client -> IO (Int)
recomputeTotalLatencies a1 =
let {a1' = fromClient a1} in
recomputeTotalLatencies'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
portSetName :: Port -> String -> IO (Int)
portSetName a1 a2 =
let {a1' = fromPort a1} in
withCString a2 $ \a2' ->
portSetName'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
portSetAlias :: Port -> String -> IO (Int)
portSetAlias a1 a2 =
let {a1' = fromPort a1} in
withCString a2 $ \a2' ->
portSetAlias'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
portUnsetAlias :: Port -> String -> IO (Int)
portUnsetAlias a1 a2 =
let {a1' = fromPort a1} in
withCString a2 $ \a2' ->
portUnsetAlias'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
portRequestMonitor :: Port -> Bool -> IO (Int)
portRequestMonitor a1 a2 =
let {a1' = fromPort a1} in
let {a2' = cFromBool a2} in
portRequestMonitor'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
portRequestMonitorByName :: Client -> String -> Bool -> IO (Int)
portRequestMonitorByName a1 a2 a3 =
let {a1' = fromClient a1} in
withCString a2 $ \a2' ->
let {a3' = cFromBool a3} in
portRequestMonitorByName'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
portEnsureMonitor :: Port -> Bool -> IO (Int)
portEnsureMonitor a1 a2 =
let {a1' = fromPort a1} in
let {a2' = cFromBool a2} in
portEnsureMonitor'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
portMonitoringInput :: Port -> IO (Int)
portMonitoringInput a1 =
let {a1' = fromPort a1} in
portMonitoringInput'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
connect :: Client -> String -> String -> IO (Int)
connect a1 a2 a3 =
let {a1' = fromClient a1} in
withCString a2 $ \a2' ->
withCString a3 $ \a3' ->
connect'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
disconnect :: Client -> String -> String -> IO (Int)
disconnect a1 a2 a3 =
let {a1' = fromClient a1} in
withCString a2 $ \a2' ->
withCString a3 $ \a3' ->
disconnect'_ a1' a2' a3' >>= \res ->
let {res' = cIntConv res} in
return (res')
portDisconnect :: Client -> Port -> IO (Int)
portDisconnect a1 a2 =
let {a1' = fromClient a1} in
let {a2' = fromPort a2} in
portDisconnect'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
portNameSize :: IO (Int)
portNameSize =
portNameSize'_ >>= \res ->
let {res' = cIntConv res} in
return (res')
portTypeSize :: IO (Int)
portTypeSize =
portTypeSize'_ >>= \res ->
let {res' = cIntConv res} in
return (res')
getPorts :: Client -> String -> String -> [PortFlags] -> IO ([String])
getPorts a1 a2 a3 a4 =
let {a1' = fromClient a1} in
withCString a2 $ \a2' ->
withCString a3 $ \a3' ->
let {a4' = combineBitMasks a4} in
getPorts'_ a1' a2' a3' a4' >>= \res ->
peekCStringArray0 res >>= \res' ->
return (res')
portByName :: Client -> String -> IO (Port)
portByName a1 a2 =
let {a1' = fromClient a1} in
withCString a2 $ \a2' ->
portByName'_ a1' a2' >>= \res ->
let {res' = Port res} in
return (res')
newtype PortID = PortID { fromPortID :: (CUInt) }
portById :: Client -> PortID -> IO (Port)
portById a1 a2 =
let {a1' = fromClient a1} in
let {a2' = fromPortID a2} in
portById'_ a1' a2' >>= \res ->
let {res' = Port res} in
return (res')
framesSinceCycleStart :: Client -> IO (Word32)
framesSinceCycleStart a1 =
let {a1' = fromClient a1} in
framesSinceCycleStart'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
frameTime :: Client -> IO (Word32)
frameTime a1 =
let {a1' = fromClient a1} in
frameTime'_ a1' >>= \res ->
let {res' = cIntConv res} in
return (res')
type Time = (CULLong)
framesToTime :: Client -> Word32 -> IO (Time)
framesToTime a1 a2 =
let {a1' = fromClient a1} in
let {a2' = cIntConv a2} in
framesToTime'_ a1' a2' >>= \res ->
let {res' = id res} in
return (res')
timeToFrames :: Client -> Time -> IO (Word32)
timeToFrames a1 a2 =
let {a1' = fromClient a1} in
let {a2' = id a2} in
timeToFrames'_ a1' a2' >>= \res ->
let {res' = cIntConv res} in
return (res')
getTime :: IO (Time)
getTime =
getTime'_ >>= \res ->
let {res' = id res} in
return (res')
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_client_open_with_default_server"
clientOpenWithDefaultServer'_ :: ((Ptr CChar) -> (CInt -> ((Ptr CInt) -> (IO (Ptr ())))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_client_open_with_server_name"
clientOpenWithServerName'_ :: ((Ptr CChar) -> (CInt -> ((Ptr CInt) -> ((Ptr CChar) -> (IO (Ptr ()))))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_client_close"
clientClose'_ :: ((Ptr ()) -> (IO CInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_client_name_size"
clientNameSize'_ :: (IO CInt)
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_get_client_name"
getClientName'_ :: ((Ptr ()) -> (IO (Ptr CChar)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_internal_client_new"
internalClientNew'_ :: ((Ptr CChar) -> ((Ptr CChar) -> ((Ptr CChar) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_internal_client_close"
internalClientClose'_ :: ((Ptr CChar) -> (IO ()))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_activate"
activate'_ :: ((Ptr ()) -> (IO CInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_deactivate"
deactivate'_ :: ((Ptr ()) -> (IO CInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_client_thread_id"
clientThreadId'_ :: ((Ptr ()) -> (IO CULong))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_is_realtime"
isRealtime'_ :: ((Ptr ()) -> (IO CInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_cycle_wait"
cycleWait'_ :: ((Ptr ()) -> (IO CUInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_cycle_signal"
cycleSignal'_ :: ((Ptr ()) -> (CInt -> (IO ())))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_process_thread"
setProcessThread'_ :: ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO (Ptr ())))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_thread_init_callback"
setThreadInitCallback'_ :: ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_process_callback"
setProcessCallback'_ :: ((Ptr ()) -> ((FunPtr (CUInt -> ((Ptr ()) -> (IO CInt)))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_freewheel_callback"
setFreewheelCallback'_ :: ((Ptr ()) -> ((FunPtr (CInt -> ((Ptr ()) -> (IO ())))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_buffer_size_callback"
setBufferSizeCallback'_ :: ((Ptr ()) -> ((FunPtr (CUInt -> ((Ptr ()) -> (IO CInt)))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_sample_rate_callback"
setSampleRateCallback'_ :: ((Ptr ()) -> ((FunPtr (CUInt -> ((Ptr ()) -> (IO CInt)))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_client_registration_callback"
setClientRegistrationCallback'_ :: ((Ptr ()) -> ((FunPtr ((Ptr CChar) -> (CInt -> ((Ptr ()) -> (IO ()))))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_port_registration_callback"
setPortRegistrationCallback'_ :: ((Ptr ()) -> ((FunPtr (CUInt -> (CInt -> ((Ptr ()) -> (IO ()))))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_port_connect_callback"
setPortConnectCallback'_ :: ((Ptr ()) -> ((FunPtr (CUInt -> (CUInt -> (CInt -> ((Ptr ()) -> (IO ())))))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_graph_order_callback"
setGraphOrderCallback'_ :: ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO CInt))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_xrun_callback"
setXrunCallback'_ :: ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO CInt))) -> ((Ptr ()) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_freewheel"
setFreewheel'_ :: ((Ptr ()) -> (CInt -> (IO CInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_set_buffer_size"
setBufferSize'_ :: ((Ptr ()) -> (CUInt -> (IO CInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_get_sample_rate"
getSampleRate'_ :: ((Ptr ()) -> (IO CUInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_get_buffer_size"
getBufferSize'_ :: ((Ptr ()) -> (IO CUInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_engine_takeover_timebase"
engineTakeoverTimebase'_ :: ((Ptr ()) -> (IO CInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_cpu_load"
cpuLoad'_ :: ((Ptr ()) -> (IO CFloat))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_register"
portRegister'_ :: ((Ptr ()) -> ((Ptr CChar) -> ((Ptr CChar) -> (CULong -> (CULong -> (IO (Ptr ())))))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_unregister"
portUnregister'_ :: ((Ptr ()) -> ((Ptr ()) -> (IO CInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_get_buffer"
portGetBuffer'_ :: ((Ptr ()) -> (CUInt -> (IO (Ptr ()))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_name"
portName'_ :: ((Ptr ()) -> (IO (Ptr CChar)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_short_name"
portShortName'_ :: ((Ptr ()) -> (IO (Ptr CChar)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_flags"
portFlags'_ :: ((Ptr ()) -> (IO CInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_type"
portType'_ :: ((Ptr ()) -> (IO (Ptr CChar)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_is_mine"
portIsMine'_ :: ((Ptr ()) -> ((Ptr ()) -> (IO CInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_connected"
portConnected'_ :: ((Ptr ()) -> (IO CInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_get_connections"
portGetConnections'_ :: ((Ptr ()) -> (IO (Ptr (Ptr CChar))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_get_all_connections"
portGetAllConnections'_ :: ((Ptr ()) -> ((Ptr ()) -> (IO (Ptr (Ptr CChar)))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_get_latency"
jackPortGetLatency'_ :: ((Ptr ()) -> (IO CUInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_get_total_latency"
jackPortGetTotalLatency'_ :: ((Ptr ()) -> ((Ptr ()) -> (IO CUInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_set_latency"
portSetLatency'_ :: ((Ptr ()) -> (CUInt -> (IO ())))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_recompute_total_latencies"
recomputeTotalLatencies'_ :: ((Ptr ()) -> (IO CInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_set_name"
portSetName'_ :: ((Ptr ()) -> ((Ptr CChar) -> (IO CInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_set_alias"
portSetAlias'_ :: ((Ptr ()) -> ((Ptr CChar) -> (IO CInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_unset_alias"
portUnsetAlias'_ :: ((Ptr ()) -> ((Ptr CChar) -> (IO CInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_request_monitor"
portRequestMonitor'_ :: ((Ptr ()) -> (CInt -> (IO CInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_request_monitor_by_name"
portRequestMonitorByName'_ :: ((Ptr ()) -> ((Ptr CChar) -> (CInt -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_ensure_monitor"
portEnsureMonitor'_ :: ((Ptr ()) -> (CInt -> (IO CInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_monitoring_input"
portMonitoringInput'_ :: ((Ptr ()) -> (IO CInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_connect"
connect'_ :: ((Ptr ()) -> ((Ptr CChar) -> ((Ptr CChar) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_disconnect"
disconnect'_ :: ((Ptr ()) -> ((Ptr CChar) -> ((Ptr CChar) -> (IO CInt))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_disconnect"
portDisconnect'_ :: ((Ptr ()) -> ((Ptr ()) -> (IO CInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_name_size"
portNameSize'_ :: (IO CInt)
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_type_size"
portTypeSize'_ :: (IO CInt)
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_get_ports"
getPorts'_ :: ((Ptr ()) -> ((Ptr CChar) -> ((Ptr CChar) -> (CULong -> (IO (Ptr (Ptr CChar)))))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_by_name"
portByName'_ :: ((Ptr ()) -> ((Ptr CChar) -> (IO (Ptr ()))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_port_by_id"
portById'_ :: ((Ptr ()) -> (CUInt -> (IO (Ptr ()))))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_frames_since_cycle_start"
framesSinceCycleStart'_ :: ((Ptr ()) -> (IO CUInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_frame_time"
frameTime'_ :: ((Ptr ()) -> (IO CUInt))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_frames_to_time"
framesToTime'_ :: ((Ptr ()) -> (CUInt -> (IO CULLong)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_time_to_frames"
timeToFrames'_ :: ((Ptr ()) -> (CULLong -> (IO CUInt)))
foreign import ccall safe "Sound/Jack/RawBindings.chs.h jack_get_time"
getTime'_ :: (IO CULLong)