我对Haskell有点新鲜,作为一个初学者项目,我正在尝试制作一个小小的音乐可视化工具。
我通常使用ncmpcpp + mpd作为音乐播放器,因为我有一个名为fifo的管道将原始PCM数据发送到/tmp/mpd.fifo。
我想要做的是从该文件中读取固定数量的PCM样本,对该数据块执行FFT,打印输出然后重复。我查看了Haskell库中的Data.Stream,Data.Bytestring,但无法弄清楚如何从命名管道中获取固定大小的数据量。
我认为必须有一个简单的方法来做到这一点,我只是缺少/不理解某些东西,所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
正如Alec所说,这实际上非常简单。
只需获取命名管道的句柄:
TypeInfo myGenericType = GetTypeInfoSomehow();
ImmutableArray<ITypeSymbol> typeArguments = myGenericType.Type.TypeArguments;
然后使用sourceHandle <- openFile "/path/to/pipe.fifo" ReadMode
读取n个字节。
我没有看到使用此方法的示例,只是认为句柄与readFile相同,后者只能执行整个文件。正如我所想的那样,我错过了一些东西,谢谢!