我正在使用Portaudio在Haskell中編寫音頻程序。我有一個生成的樣品我想打列表的功能,我想利用內幕主下面的片段,以發揮他們:迭代Haskell中的列表?
curSamps <- return (chunk 1 (sineWave 440 44100))
forever $ do
Right numSampsAvail <- getStreamWriteAvailable paStream
Right NoError <- writeStream paStream curSamps numSampsAvail
curSamps <- return (drop numSampsAvail curSamps)
正弦波是我創建生成功能以指定的頻率和採樣率對正弦波的Int16樣本進行無限列表。
當我調試此代碼時,通過用putStrLn替換音頻輸出代碼,它將打印所有0,這是函數的第一個樣本。
如何迭代這個列表與音頻輸出功能?我不認爲我可以使用遞歸或地圖。
編輯:將代碼複製錯誤
你爲什麼認爲你不能使用地圖? – 2010-02-11 17:41:10
不同子表達式的值是什麼?即什麼是10(正弦波440 44100),取10(大塊1(正弦波440 44100))等? – 2010-02-11 17:53:17
@Edward Amsden:順便說一句,請在你之前的問題中留言評論http://stackoverflow.com/questions/2223866/haskell-audio-output-on-os-x描述你是否使用macports安裝portaudio。這對其他人來說可能是有用的,比如當我改用雪豹時。謝謝:) – yairchu 2010-02-11 19:23:28