------------------------------------------------------------------
-- |
-- Module    : Sound.ALSA.Sequencer
-- Copyright : (c) Henning Thielemann, 2010
--             (c) Iavor S. Diatchki, 2007
-- License   : BSD3
--
-- Maintainer: Henning Thielemann
-- Stability : provisional
--
-- Overview: <http://www.alsa-project.org/alsa-doc/alsa-lib/seq.html>
--
-- WARNING: This whole library does not seem to be particlarly thread aware.
-- Perhaps place the sequencer handle in an MVar?

module Sound.ALSA.Sequencer
  ( -- * Sequencer
    Seq.T
  , OpenMode
  , AllowOutput
  , AllowInput
  , OutputMode(..)
  , InputMode(..)
  , DuplexMode(..)

  , BlockMode(..)

  , open
  , close
  , with
  , defaultName
  , getName
  , setBlocking

   -- ** Manage user-space buffers
  , getOutputBufferSize
  , setOutputBufferSize
  , getInputBufferSize
  , setInputBufferSize

  -- ** Manage kernel-space memory pools
  , setPoolOutput
  , setPoolOutputRoom
  , resetPoolOutput
  , setPoolInput
  , resetPoolInput


  -- ** Connections
  , connectFrom
  , connectTo
  , disconnectFrom
  , disconnectTo
  ) where

import Sound.ALSA.Sequencer.Marshal.Sequencer as Seq
import Sound.ALSA.Sequencer.Sequencer



-- | This is the name that should be passed to 'open' in most cases.
defaultName :: String
defaultName = "default"