Programming Languages, Martials Arts and Computers. The Weblog of Chris Double.
Haskell has libraries for OpenAL and ALUT. Here is a simple example of usage. It creates two buffers containing sounds. One with a sine wave generated, and the other using the built in 'hello world' sample.
import Control.Monad import Sound.ALUT playSound :: IO () playSound = withProgNameAndArgs runALUTUsingCurrentContext $ \_ _ -> do (Just device) <- openDevice Nothing (Just context) <- createContext device  currentContext $= Just context buffer1 <- createBuffer $ Sine 440 0 1 buffer2 <- createBuffer HelloWorld [source] <- genObjectNames 1 queueBuffers source [buffer1,buffer2] play [source] sleep 4 closeDevice device return () main = playSound