Haskell:从命名管道读取固定数量的数据

时间:2016-12-12 00:01:33

标签: haskell fft pcm

我对Haskell有点新鲜,作为一个初学者项目,我正在尝试制作一个小小的音乐可视化工具。

我通常使用ncmpcpp + mpd作为音乐播放器,因为我有一个名为fifo的管道将原始PCM数据发送到/tmp/mpd.fifo。

我想要做的是从该文件中读取固定数量的PCM样本,对该数据块执行FFT,打印输出然后重复。我查看了Haskell库中的Data.Stream,Data.Bytestring,但无法弄清楚如何从命名管道中获取固定大小的数据量。

我认为必须有一个简单的方法来做到这一点,我只是缺少/不理解某些东西,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

正如Alec所说,这实际上非常简单。

只需获取命名管道的句柄:

TypeInfo myGenericType = GetTypeInfoSomehow();
ImmutableArray<ITypeSymbol> typeArguments = myGenericType.Type.TypeArguments;

然后使用sourceHandle <- openFile "/path/to/pipe.fifo" ReadMode 读取n个字节。

我没有看到使用此方法的示例,只是认为句柄与readFile相同,后者只能执行整个文件。正如我所想的那样,我错过了一些东西,谢谢!