声音lib haskell

时间:2012-03-19 02:27:08

标签: audio haskell

我需要为haskell找到一个声音库。我已经按照haskell wiki http://www.haskell.org/haskellwiki/Sound_data_structures中提供的一些说明进行操作,但无法使用。我需要的是播放音频文件,无论其格式如何。 我正在开发一款FunGen游戏,以及它的音乐时间。我可能有somo问题让他们工作,但我甚至不能播放一个简单的声音例子。 我的大多数问题都是由于cabal安装,或者我无法找到任何共享的依赖。我正在使用Windows。

2 个答案:

答案 0 :(得分:7)

在Windows上是Haskell音频的一个主要限制。大多数软件包都绑定到C代码,它们往往是以Linux为中心(JACK,Alsa)或者最好名义上是跨平台的,但实际上很难在Windows上构建和使用。在安装Haskell绑定之前,您需要先构建或安装C库。

你试过OpenAL吗?它可能是最适合你想做的事情。如果安装C OpenAL libraries,Haskell绑定应该是一个相当简单的下一步。有一些附加软件包旨在简化一些常见任务,如ALUT和Alure。

否则,大多数其他解决方案实际上会涉及一些可能无法很好地协同工作的软件包。 hsndfilehsndfile-vector适合阅读音频文件(您需要安装libsndfile),但它们不会播放声音。 portaudio将播放音频(同样,您需要C portaudio library),但它暂时没有更新(并且非常需要一些更新)。您还需要熟悉C编译器链(例如MinGW或Cygwin)以首先安装必要的C库。

另一种方法可能是绑定到专用音频语言,如Supercollider或Csound。这将是一个相当重要的解决方案,但绑定往往更好地维护,至少Csound应该可以在Windows上轻松安装(披露:我写了hCsound包)。 SoxC library/executable)也可能适合您(我从未在Windows上尝试过它,但声称可以使用)。

答案 1 :(得分:1)

  

我需要的只是播放音频文件,无论其格式如何。

你最好的选择是hsndfile,在John L.上面的优秀答案中提到过。但是你可能想让你的生活更轻松。 WAV文件格式为a very simple format - 基本上由原始PCM数据组成,前面包含最少的标头。尝试播放WAV文件,然后从那里开阔视野。

你会因缺乏示例代码而奋力上阵 - 你可能会发现自己需要外部内存指针和其他不太直接的技术 - 但是有一个很好的样本可用于打开和读取WAV文件{{3 }}。

此外,在Windows上进行开发时,请学会喜欢-fno-ghci-sandbox标志。它告诉ghci你正在连接到一个使用自己的线程本地存储的库。这通常是让某些外部库在GHCi中工作的唯一方法。

相关问题