module Sound.Alsa.Sequencer.Event
( sync_output_queue
, event_input
, event_input_pending
, event_output
, event_output_buffer
, event_output_direct
, event_output_pending
, extract_output
, remove_output
, drain_output
, drop_output
, drop_output_buffer
, drop_input
, drop_input_buffer
) where
import Foreign.C.Types(CInt)
import Foreign.Ptr(Ptr,nullPtr)
import Foreign.Marshal.Alloc(alloca)
import Foreign.Storable
import Data.Word
import Data.Int
import Sound.Alsa.Sequencer.Marshal
import Sound.Alsa.Sequencer.Errors
sync_output_queue :: SndSeq -> IO ()
sync_output_queue (SndSeq h) =
check_error_ =<< snd_seq_sync_output_queue h
foreign import ccall "alsa/asoundlib.h snd_seq_sync_output_queue"
snd_seq_sync_output_queue :: Ptr SndSeq_ -> IO CInt
event_input :: SndSeq -> IO Event
event_input (SndSeq h) = alloca $ \p ->
do check_error =<< snd_seq_event_input h p
peek =<< peek p
foreign import ccall "alsa/asoundlib.h snd_seq_event_input"
snd_seq_event_input :: Ptr SndSeq_ -> Ptr (Ptr Event) -> IO CInt
event_input_pending
:: SndSeq
-> Bool
-> IO Word
event_input_pending (SndSeq h) fill =
check_error =<< snd_seq_event_input_pending h (if fill then 1 else 0)
foreign import ccall "alsa/asoundlib.h snd_seq_event_input_pending"
snd_seq_event_input_pending :: Ptr SndSeq_ -> Int -> IO CInt
event_output :: SndSeq
-> Event
-> IO Word
event_output (SndSeq h) e =
alloca_ev e $ \p -> check_error =<< snd_seq_event_output h p
foreign import ccall "alsa/asoundlib.h snd_seq_event_output "
snd_seq_event_output :: Ptr SndSeq_ -> Ptr Event -> IO CInt
event_output_buffer :: SndSeq
-> Event
-> IO Word
event_output_buffer (SndSeq h) e =
alloca_ev e $ \p -> check_error =<< snd_seq_event_output_buffer h p
foreign import ccall "alsa/asoundlib.h snd_seq_event_output_buffer"
snd_seq_event_output_buffer :: Ptr SndSeq_ -> Ptr Event -> IO CInt
event_output_direct
:: SndSeq
-> Event
-> IO Word
event_output_direct (SndSeq h) e =
alloca_ev e $ \p -> check_error =<< snd_seq_event_output_direct h p
foreign import ccall "alsa/asoundlib.h snd_seq_event_output_direct"
snd_seq_event_output_direct :: Ptr SndSeq_ -> Ptr Event -> IO CInt
event_output_pending
:: SndSeq
-> IO Word
event_output_pending (SndSeq h) =
fromIntegral `fmap` snd_seq_event_output_pending h
foreign import ccall "alsa/asoundlib.h snd_seq_event_output_pending"
snd_seq_event_output_pending :: Ptr SndSeq_ -> IO CInt
extract_output
:: SndSeq
-> IO Event
extract_output (SndSeq h) =
alloca $ \p -> do check_error =<< snd_seq_extract_output h p
peek =<< peek p
remove_output :: SndSeq -> IO ()
remove_output (SndSeq h) = check_error_ =<< snd_seq_extract_output h nullPtr
foreign import ccall "alsa/asoundlib.h snd_seq_extract_output"
snd_seq_extract_output :: Ptr SndSeq_ -> Ptr (Ptr Event) -> IO CInt
drain_output
:: SndSeq
-> IO Word
drain_output (SndSeq h) = check_error =<< snd_seq_drain_output h
foreign import ccall "alsa/asoundlib.h snd_seq_drain_output"
snd_seq_drain_output :: Ptr SndSeq_ -> IO CInt
drop_output :: SndSeq -> IO ()
drop_output (SndSeq h) = check_error_ =<< snd_seq_drop_output h
foreign import ccall "alsa/asoundlib.h snd_seq_drop_output"
snd_seq_drop_output :: Ptr SndSeq_ -> IO CInt
drop_output_buffer :: SndSeq -> IO ()
drop_output_buffer (SndSeq h) = check_error_ =<< snd_seq_drop_output_buffer h
foreign import ccall "alsa/asoundlib.h snd_seq_drop_output_buffer"
snd_seq_drop_output_buffer :: Ptr SndSeq_ -> IO CInt
drop_input :: SndSeq -> IO ()
drop_input (SndSeq h) = check_error_ =<< snd_seq_drop_input h
foreign import ccall "alsa/asoundlib.h snd_seq_drop_input"
snd_seq_drop_input :: Ptr SndSeq_ -> IO CInt
drop_input_buffer :: SndSeq -> IO ()
drop_input_buffer (SndSeq h) = check_error_ =<< snd_seq_drop_input_buffer h
foreign import ccall "alsa/asoundlib.h snd_seq_drop_input_buffer"
snd_seq_drop_input_buffer :: Ptr SndSeq_ -> IO CInt