我正在使用 Portaudio 在 Haskell 中编写音频程序。我有一个函数可以生成我想播放的样本列表,我正在尝试使用 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,这是该函数的第一个示例。
如何使用音频输出功能迭代此列表?我不认为我可以使用递归或地图。
编辑:代码复制错误