At the request of Don Stuart, here is some information about the formats supported by different sound libraries.
In-memory data formats
In-memory sound formats are fairly diverse.
Reading and writing sound files
Library
|
Sound file format
|
HCodecs
|
(Audible a) => DiffUArray Int a
|
hsndfile
|
MArray with Float and Double
|
HSoundFile
|
[[Double]]
|
ALUT
|
OpenAL.AL.Buffer
|
WAVE
|
[[Int32]]
|
Playing sounds
Library
|
Sound file format
|
OpenAL
|
Ptr UInt8 , Ptr Int16 , 1-N channels
|
SDL-mixer
|
ForeignPtr ChunkStruct , ForeignPtr MusicStruct
|
Sound processing libraries
Library
|
Sound file format
|
dsp
|
Array a, [a]
|
synthesizer
|
[a], StorableVector.Lazy a, (StateT s Maybe a, s)
|
jack
|
Operates via mapping functions
mainMono :: (CFloat -> IO CFloat) -> IO ()
mainStereo :: ((CFloat, CFloat) -> IO (CFloat, CFloat)) -> IO ()
|
Library
|
Sound file format
|
HCodecs
|
Reads and writes MIDI files
|
midi
|
Reads and writes MIDI files
|
alsa-midi
|
Uses midi library
|
Haskore
|
Uses midi library
|
YampaSynth
|
Stand-alone program
|
Special-purpose APIs only (FFIs, etc.)
No public sound-buffer API
Library
|
Sound file format
|
hbeat
|
The relevant source files are missing!
|
hogg
|
Very low-level API for Ogg internals only
|
libmpd
|
No sound buffer API
|
sonic-visualizer
|
No sound buffer API
|
truelevel
|
Stand-alone program (uses WAVE)
|
wavconvert
|
Stand-alone program
|