【发布时间】:2012-12-09 22:42:07
【问题描述】:
是否有一种简单、直接的方法可以使用某个库从 Haskell 播放 WAV 文件,并且可能让我一次播放多个声音?
我知道 OpenAL,但我不是在编写一些高级音频合成程序,我只是想为一些小玩意儿播放一些声音。理想情况下,API 可能类似于:
readWavFile :: FilePath -> IO Wave
playWave :: Wave -> IO ()
playWaveNonBlocking :: Wave -> IO ()
我这个接近于仅仅启动 mplayer 之类的东西。或者尝试将 wav 直接转换为 /dev/snd/ 或类似的东西。
【问题讨论】:
-
您可以愉快地调用第三方应用程序。 hmp3 使用mpg123 很开心。
-
是的。要试试这个:tivo-mplayer.sourceforge.net/docs/mplayer-man.html#sect12 对我来说足够快。
-
没有。指定你想要做的what 甚至都不是一件容易的事。您想跨多个操作系统进行移植吗?还是你只关心 Linux?所有 WAV 文件的采样率是否相同?还是您也需要采样率转换?声卡是多声道还是不?你需要低延迟/实时吗?或者高延迟可以吗?如果你把自己限制在 Linux 上,事情实际上会更糟……你有 OSS、Alsa、Jack 等等!当你可以有 10 种不同的方式时,为什么还要有一种播放声音的工作方式:p