module Bindings.FluidSynth where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word
data C'fluid_settings_t = C'fluid_settings_t
data C'fluid_synth_t = C'fluid_synth_t
data C'fluid_audio_driver_t = C'fluid_audio_driver_t
foreign import ccall "new_fluid_settings" c'new_fluid_settings
:: IO (Ptr C'fluid_settings_t)
foreign import ccall "&new_fluid_settings" p'new_fluid_settings
:: FunPtr (IO (Ptr C'fluid_settings_t))
foreign import ccall "delete_fluid_settings" c'delete_fluid_settings
:: Ptr C'fluid_settings_t -> IO ()
foreign import ccall "&delete_fluid_settings" p'delete_fluid_settings
:: FunPtr (Ptr C'fluid_settings_t -> IO ())
foreign import ccall "fluid_settings_setstr" c'fluid_settings_setstr
:: Ptr C'fluid_settings_t -> CString -> CString -> IO CInt
foreign import ccall "&fluid_settings_setstr" p'fluid_settings_setstr
:: FunPtr (Ptr C'fluid_settings_t -> CString -> CString -> IO CInt)
foreign import ccall "fluid_settings_setint" c'fluid_settings_setint
:: Ptr C'fluid_settings_t -> CString -> CInt -> IO CInt
foreign import ccall "&fluid_settings_setint" p'fluid_settings_setint
:: FunPtr (Ptr C'fluid_settings_t -> CString -> CInt -> IO CInt)
foreign import ccall "fluid_settings_setnum" c'fluid_settings_setnum
:: Ptr C'fluid_settings_t -> CString -> CDouble -> IO CInt
foreign import ccall "&fluid_settings_setnum" p'fluid_settings_setnum
:: FunPtr (Ptr C'fluid_settings_t -> CString -> CDouble -> IO CInt)
foreign import ccall "new_fluid_synth" c'new_fluid_synth
:: Ptr C'fluid_settings_t -> IO (Ptr C'fluid_synth_t)
foreign import ccall "&new_fluid_synth" p'new_fluid_synth
:: FunPtr (Ptr C'fluid_settings_t -> IO (Ptr C'fluid_synth_t))
foreign import ccall "delete_fluid_synth" c'delete_fluid_synth
:: Ptr C'fluid_synth_t -> IO ()
foreign import ccall "&delete_fluid_synth" p'delete_fluid_synth
:: FunPtr (Ptr C'fluid_synth_t -> IO ())
foreign import ccall "new_fluid_audio_driver" c'new_fluid_audio_driver
:: Ptr C'fluid_settings_t -> Ptr C'fluid_synth_t -> IO (Ptr C'fluid_audio_driver_t)
foreign import ccall "&new_fluid_audio_driver" p'new_fluid_audio_driver
:: FunPtr (Ptr C'fluid_settings_t -> Ptr C'fluid_synth_t -> IO (Ptr C'fluid_audio_driver_t))
foreign import ccall "delete_fluid_audio_driver" c'delete_fluid_audio_driver
:: Ptr C'fluid_audio_driver_t -> IO ()
foreign import ccall "&delete_fluid_audio_driver" p'delete_fluid_audio_driver
:: FunPtr (Ptr C'fluid_audio_driver_t -> IO ())
foreign import ccall "fluid_synth_sfload" c'fluid_synth_sfload
:: Ptr C'fluid_synth_t -> CString -> CInt -> IO CInt
foreign import ccall "&fluid_synth_sfload" p'fluid_synth_sfload
:: FunPtr (Ptr C'fluid_synth_t -> CString -> CInt -> IO CInt)
foreign import ccall "fluid_synth_sfreload" c'fluid_synth_sfreload
:: Ptr C'fluid_synth_t -> CUInt -> IO CInt
foreign import ccall "&fluid_synth_sfreload" p'fluid_synth_sfreload
:: FunPtr (Ptr C'fluid_synth_t -> CUInt -> IO CInt)
foreign import ccall "fluid_synth_sfunload" c'fluid_synth_sfunload
:: Ptr C'fluid_synth_t -> CInt -> CUInt -> IO CInt
foreign import ccall "&fluid_synth_sfunload" p'fluid_synth_sfunload
:: FunPtr (Ptr C'fluid_synth_t -> CInt -> CUInt -> IO CInt)
foreign import ccall "fluid_synth_noteon" c'fluid_synth_noteon
:: Ptr C'fluid_synth_t -> CInt -> CInt -> CInt -> IO CInt
foreign import ccall "&fluid_synth_noteon" p'fluid_synth_noteon
:: FunPtr (Ptr C'fluid_synth_t -> CInt -> CInt -> CInt -> IO CInt)
foreign import ccall "fluid_synth_noteoff" c'fluid_synth_noteoff
:: Ptr C'fluid_synth_t -> CInt -> CInt -> IO CInt
foreign import ccall "&fluid_synth_noteoff" p'fluid_synth_noteoff
:: FunPtr (Ptr C'fluid_synth_t -> CInt -> CInt -> IO CInt)
foreign import ccall "fluid_synth_pitch_bend" c'fluid_synth_pitch_bend
:: Ptr C'fluid_synth_t -> CInt -> CInt -> IO CInt
foreign import ccall "&fluid_synth_pitch_bend" p'fluid_synth_pitch_bend
:: FunPtr (Ptr C'fluid_synth_t -> CInt -> CInt -> IO CInt)
c'FLUID_PANIC = 0
c'FLUID_PANIC :: (Num a) => a
c'FLUID_ERR = 1
c'FLUID_ERR :: (Num a) => a
c'FLUID_WARN = 2
c'FLUID_WARN :: (Num a) => a
c'FLUID_DBG = 4
c'FLUID_DBG :: (Num a) => a
type FluidLogFn = CInt -> CString -> Ptr () -> IO ()
foreign import ccall "fluid_set_log_function" c'fluid_set_log_function
:: CInt -> Ptr FluidLogFn -> Ptr () -> IO (Ptr FluidLogFn)
foreign import ccall "&fluid_set_log_function" p'fluid_set_log_function
:: FunPtr (CInt -> Ptr FluidLogFn -> Ptr () -> IO (Ptr FluidLogFn))
foreign import ccall "fluid_default_log_function" c'fluid_default_log_function
:: FluidLogFn
foreign import ccall "&fluid_default_log_function" p'fluid_default_log_function
:: FunPtr (FluidLogFn)
c'FLUID_FAILED = 1
c'FLUID_FAILED :: (Num a) => a
c'FLUID_OK = 0
c'FLUID_OK :: (Num a) => a