Sound data structures

From HaskellWiki
Revision as of 20:44, 24 August 2008 by Emk (talk | contribs) (In-memory sound formats)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, 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]
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
YampaSynth Stand-alone program

Special-purpose APIs only (FFIs, etc.)

Library Sound file format
hCsound CsoundPtr
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