Sound.Alsa
- class (Storable y, C y) => SampleFmt y where
- sampleFmtToPcmFormat :: y -> PcmFormat
- type SampleFreq = Int
- type Time = Int
- data SoundFmt y = SoundFmt {}
- data SoundSource y handle = SoundSource {
- soundSourceFmt :: SoundFmt y
- soundSourceOpen :: IO handle
- soundSourceClose :: handle -> IO ()
- soundSourceStart :: handle -> IO ()
- soundSourceStop :: handle -> IO ()
- soundSourceRead :: handle -> Ptr y -> Int -> IO Int
- data SoundSink y handle = SoundSink {
- soundSinkFmt :: SoundFmt y
- soundSinkOpen :: IO handle
- soundSinkClose :: handle -> IO ()
- soundSinkWrite :: handle -> Ptr y -> Int -> IO ()
- soundSinkStart :: handle -> IO ()
- soundSinkStop :: handle -> IO ()
- data SoundBufferTime = SoundBufferTime {
- bufferTime :: Time
- periodTime :: Time
- withSoundSource :: SoundSource y h -> (h -> IO a) -> IO a
- withSoundSourceRunning :: SoundSource y h -> h -> IO a -> IO a
- withSoundSink :: SoundSink y h -> (h -> IO a) -> IO a
- withSoundSinkRunning :: SoundSink y h -> h -> IO a -> IO a
- soundFmtMIME :: SampleFmt y => SoundFmt y -> String
- audioBytesPerSample :: SampleFmt y => SoundFmt y -> Int
- audioBytesPerFrame :: SampleFmt y => SoundFmt y -> Int
- soundSourceBytesPerFrame :: SampleFmt y => SoundSource y h -> Int
- soundSinkBytesPerFrame :: SampleFmt y => SoundSink y h -> Int
- copySound :: SampleFmt y => SoundSource y h1 -> SoundSink y h2 -> Int -> IO ()
- alsaSoundSource :: SampleFmt y => String -> SoundFmt y -> SoundSource y Pcm
- alsaSoundSink :: SampleFmt y => String -> SoundFmt y -> SoundSink y Pcm
- alsaSoundSourceTime :: SampleFmt y => String -> SoundFmt y -> SoundBufferTime -> SoundSource y Pcm
- alsaSoundSinkTime :: SampleFmt y => String -> SoundFmt y -> SoundBufferTime -> SoundSink y Pcm
- fileSoundSource :: SampleFmt y => FilePath -> SoundFmt y -> SoundSource y Handle
- fileSoundSink :: SampleFmt y => FilePath -> SoundFmt y -> SoundSink y Handle
Documentation
class (Storable y, C y) => SampleFmt y whereSource
Methods
sampleFmtToPcmFormat :: y -> PcmFormatSource
type SampleFreq = IntSource
Constructors
SoundFmt | |
Fields |
data SoundSource y handle Source
Counts are in samples, not bytes. Multi-channel data is interleaved.
Constructors
SoundSource | |
Fields
|
data SoundSink y handle Source
Constructors
SoundSink | |
Fields
|
data SoundBufferTime Source
Constructors
SoundBufferTime | |
Fields
|
Instances
withSoundSource :: SoundSource y h -> (h -> IO a) -> IO aSource
withSoundSourceRunning :: SoundSource y h -> h -> IO a -> IO aSource
withSoundSink :: SoundSink y h -> (h -> IO a) -> IO aSource
withSoundSinkRunning :: SoundSink y h -> h -> IO a -> IO aSource
soundFmtMIME :: SampleFmt y => SoundFmt y -> StringSource
audioBytesPerSample :: SampleFmt y => SoundFmt y -> IntSource
audioBytesPerFrame :: SampleFmt y => SoundFmt y -> IntSource
soundSourceBytesPerFrame :: SampleFmt y => SoundSource y h -> IntSource
soundSinkBytesPerFrame :: SampleFmt y => SoundSink y h -> IntSource
alsaSoundSource :: SampleFmt y => String -> SoundFmt y -> SoundSource y PcmSource
alsaSoundSourceTime :: SampleFmt y => String -> SoundFmt y -> SoundBufferTime -> SoundSource y PcmSource
alsaSoundSinkTime :: SampleFmt y => String -> SoundFmt y -> SoundBufferTime -> SoundSink y PcmSource
fileSoundSource :: SampleFmt y => FilePath -> SoundFmt y -> SoundSource y HandleSource