Sound data structures

From HaskellWiki
Revision as of 22:27, 10 November 2008 by Lemming (talk | contribs) (Applications and libraries/Music and sound/Formats moved to Sound data structures)
Jump to navigation Jump to search

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 ()

MIDI-based

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.)

Library Sound file format
hCsound CsoundPtr
HasSound / Haskore OrcExp
hsc3 UGen

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