alsa-seq-0.5.1: Binding to the ALSA Library API (MIDI sequencer).

Stabilityprovisional
MaintainerIavor S. Diatchki

Sound.ALSA.Sequencer.Event

Description

This module contains functions for working with events. Reference: http://www.alsa-project.org/alsa-doc/alsa-lib/group___seq_event.html

Synopsis

Documentation

syncOutputQueue :: T mode -> IO ()Source

Wait until all events of the client are processed.

input :: AllowInput mode => T mode -> IO TSource

Get an event from the input buffer. If the input buffer is empty, then it is filled with data from the sequencer queue. If there is no data in the sequencer queue, then the process is either put to sleep (if the sequencer is operating in blocking mode), or we throw EAGAIN (if the sequence is operating in non-blocking mode).

We may also throw ENOSPC, which means that the sequencer queue over-run and some events were lost (this clears the input buffer).

inputPendingSource

Arguments

:: AllowInput mode 
=> T mode 
-> Bool

refill if empty?

-> IO Word

number of events in buffer

Returns the number of events in the input buffer. If the input buffer is empty and the boolean argument is true, then try to fill the input buffer with data from the sequencer queue. See also: input.

outputSource

Arguments

:: AllowOutput mode 
=> T mode 
-> T 
-> IO Word

the number of remaining events (or bytes?)

Output an event and drain the buffer, if it became full. Throws exceptions. See also: outputDirect, outputBuffer, outputPending, drainOutput, dropOutput, extractOutput, removeEvents

outputBufferSource

Arguments

:: AllowOutput mode 
=> T mode 
-> T 
-> IO Word

the byte size of remaining events

Output an event without draining the buffer. Throws -EAGAIN if the buffer becomes full. See also output.

outputDirectSource

Arguments

:: AllowOutput mode 
=> T mode 
-> T 
-> IO Word

number of bytes sent to the sequencer

Output an event directly to the sequencer, NOT through the output buffer. If an error occurs, then we throw an exception. See also output.

outputPendingSource

Arguments

:: AllowOutput mode 
=> T mode 
-> IO Word

size of pending events (in bytes)

Return the size (in bytes) of pending events on output buffer. See also output.

extractOutputSource

Arguments

:: AllowOutput mode 
=> T mode 
-> IO T

the first event in the buffer (if one was present)

Extract the first event in output buffer. Throws an exception on error. See also output.

removeOutput :: AllowOutput mode => T mode -> IO ()Source

Remove the first event in output buffer. Throws an exception on error. See also output.

drainOutputSource

Arguments

:: AllowOutput mode 
=> T mode 
-> IO Word

byte size of events remaining in the buffer.

Drain output buffer to sequencer. This function drains all pending events on the output buffer. The function returns immediately after the events are sent to the queues regardless whether the events are processed or not. To get synchronization with the all event processes, use syncOutputQueue after calling this function. Throws an exception on error. See also: output, syncOutputQueue.

dropOutput :: AllowOutput mode => T mode -> IO ()Source

Remove events from both the user-space output buffer, and the kernel-space sequencer queue. See also: drainOutput, dropOutputBuffer, removeEvents.

dropOutputBuffer :: AllowOutput mode => T mode -> IO ()Source

Remove events from the user-space output buffer. See also: dropOutput.

dropInput :: AllowInput mode => T mode -> IO ()Source

Remove events from both the user-space input buffer, and the kernel-space sequencer queue. See also: dropInputBuffer, removeEvents.

dropInputBuffer :: AllowInput mode => T mode -> IO ()Source

Remove events from the user-space input buffer. See also: dropInput.

data TimeStamp Source

Constructors

TickTime !Word32 
RealTime !T 

Instances

data Instr Source

Constructors

Instr 

Instances

data Sample Source

Constructors

Sample 

Instances

data Volume Source

These are all 14 bit values.

Constructors

Volume 

Instances

volumeSame :: Int16Source

Used for volume control: means do not change the volume.

data T Source

Constructors

Cons 

Fields

highPriority :: !Bool
 
tag :: !Word8
 
queue :: !T
 
timestamp :: !TimeStamp
 
source :: !T
 
dest :: !T
 
body :: !Data
 

Instances

simple :: T -> Data -> TSource

Construct an ALSA sequencer event from very few information. Most fields are initialized with sensible defaults. You may use this as a start and alter its fields for your special needs.

 (Event.simple myAddr (Event.simpleNote 0 60 64)) {Event.dest = destAddr}

simpleNoteSource

Arguments

:: Word8

Channel.

-> Word8

Note.

-> Word8

Velocity.

-> Note 

Make a note whose unspecified fields contain 0.

data Ctrl Source

Constructors

Ctrl 

Instances

data Custom Source

Constructors

Custom 

Fields

custom0 :: !Word32
 
custom1 :: !Word32
 
custom2 :: !Word32