Safe Haskell | None |
---|
- data Handle i y
- data Stream
- data Mode
- modes :: [Mode] -> Mode
- nonBlock :: Mode
- async :: Mode
- data Interleaved
- data Noninterleaved
- type Time = Int
- type SampleFreq = Int
- type Size = Int
- class Access i
- class (Storable y, C y) => SampleFmt y
- class SampleFmt y => MonoSampleFmt y
- open :: (Access i, SampleFmt y) => Mode -> Stream -> T i y a -> (a -> T i y b) -> String -> IO (b, Handle i y)
- close :: Handle i y -> IO ()
- prepare :: Handle i y -> IO ()
- start :: Handle i y -> IO ()
- drop :: Handle i y -> IO ()
- drain :: Handle i y -> IO ()
- readi :: SampleFmt y => Handle Interleaved y -> Ptr y -> Size -> IO Size
- writei :: SampleFmt y => Handle Interleaved y -> Ptr y -> Size -> IO Size
- readiRetry :: SampleFmt y => Handle Interleaved y -> Ptr y -> Size -> IO Size
- writeiRetry :: SampleFmt y => Handle Interleaved y -> Ptr y -> Size -> IO Size
- readn :: MonoSampleFmt y => Handle Noninterleaved y -> Ptr (Ptr y) -> Size -> IO Size
- writen :: MonoSampleFmt y => Handle Noninterleaved y -> Ptr (Ptr y) -> Size -> IO Size
Types
type SampleFreq = IntSource
Classes
class SampleFmt y => MonoSampleFmt y Source
Sample types of this class must have exactly one channel, i.e. Frame.numberOfChannels == 1.
Management of streams
Data transfer
readiRetry :: SampleFmt y => Handle Interleaved y -> Ptr y -> Size -> IO SizeSource
retry on buffer over-run
writeiRetry :: SampleFmt y => Handle Interleaved y -> Ptr y -> Size -> IO SizeSource
retry on buffer under-run
readn :: MonoSampleFmt y => Handle Noninterleaved y -> Ptr (Ptr y) -> Size -> IO SizeSource
The Ptr (Ptr y)
argument is actually a pointer to an array of pointers.
The array must have the size of number of channels.
In Noninterleaved
mode you must set the number of channels manually
using setChannels
or its friends.
It is an unchecked error if the number of channels
set with setChannels
does not match the array size in the readn
call.