Я немного новичок в Haskell, и в качестве начинающего проекта я пытаюсь создать небольшой визуализатор музыки.Haskell: читать фиксированное количество данных из именованной трубы
Обычно я использую ncmpcpp + mpd в качестве музыкального плеера, и из-за этого у меня есть именованный канал fifo, отправляющий необработанные данные PCM в /tmp/mpd.fifo.
Что я хочу сделать, это читать в фиксированном количестве образцов PCM из этого файла, выполнять БПФ на этом блоке данных, печатать выходные данные и затем повторять. Я просмотрел Data.Stream, Data.Bytestring в библиотеке Haskell, но не могу понять, как просто получить фиксированный размер данных из именованного канала.
Я полагаю, что должен быть простой способ сделать это, и я просто упускаю/не понимаю что-то, поэтому любая помощь приветствуется.
Что не так с 'hGet' из' Data.ByteString'? Вы можете указать количество байтов, которое вы хотите прочитать. – Alec
@Alec: Не могли бы вы назвать это ответом? Также было бы неплохо добавить, как получить «Handle» из именованного канала (который я сам не знаю). –
Да, это так! Я опубликовал его как ответ после использования вашего фрагмента, чтобы понять его полностью. – Rigel