Я пишу аудиопрограмму на Хаскеле, используя Portaudio. У меня есть функция, которая генерирует список сэмплов, которые я хотел бы воспроизвести, и я пытаюсь воспроизвести их, используя следующий фрагмент внутри main:
curSamps <- return (chunk 1 (sineWave 440 44100))
forever $ do
Right numSampsAvail <- getStreamWriteAvailable paStream
Right NoError <- writeStream paStream curSamps numSampsAvail
curSamps <- return (drop numSampsAvail curSamps)
sineWave - это функция, которую я создал, чтобы генерировать бесконечный список выборок Int16 синусоиды с заданной частотой и частотой дискретизации.
Когда я отлаживаю этот код, заменяя код вывода звука на putStrLn, он печатает все 0, что является первым примером из функции.
Как я могу перебрать этот список с помощью функций вывода звука? Я не думаю, что смогу использовать рекурсию или карту.
Редактировать: Ошибка копирования кода