module Sound.Alsa.Sequencer
(
SndSeq
, OpenMode
, open_output
, open_input
, open_duplex
, BlockMode(..)
, open
, close
, default_seq_name
, get_seq_name
, set_blocking
, get_output_buffer_size
, set_output_buffer_size
, get_input_buffer_size
, set_input_buffer_size
, set_pool_output
, set_pool_output_room
, reset_pool_output
, set_pool_input
, reset_pool_input
, module Sound.Alsa.Sequencer.Queue
, module Sound.Alsa.Sequencer.Client
, module Sound.Alsa.Sequencer.Port
, connect_from
, connect_to
, disconnect_from
, disconnect_to
, volume_same
, module Sound.Alsa.Sequencer.Event
, RealTime(..)
, TimeStamp(..)
, InstrCluster
, Instr(..)
, Event(..)
, EventData(..)
, NoteEv(..), Note(..), simple_note
, CtrlEv(..), Ctrl(..)
, AddrEv(..), Addr(..), parse_address, addr_subscribers
, ConnEv(..), Connect
, EmptyEv(..)
, Sample(..)
, Cluster(..)
, Volume(..)
, AlsaException
, exception_code, exception_description
, alsa_catch
) where
import Data.Word
import Data.Int
import Sound.Alsa.Sequencer.Marshal
import Sound.Alsa.Sequencer.Errors
import Sound.Alsa.Sequencer.Sequencer
import Sound.Alsa.Sequencer.Client
import Sound.Alsa.Sequencer.Port
import Sound.Alsa.Sequencer.Event
import Sound.Alsa.Sequencer.Queue
addr_subscribers :: Addr
addr_subscribers = Addr { addr_client = client_subscribers
, addr_port = port_unknown
}
default_seq_name :: String
default_seq_name = "default"
simple_note
:: Word8
-> Word8
-> Word8
-> Note
simple_note c n v = Note { note_channel = c, note_note = n, note_velocity = v
, note_off_velocity = 0, note_duration = 0
}
volume_same :: Int16
volume_same = 1