저는 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이 인쇄됩니다.
이 목록을 오디오 출력 기능으로 반복 할 수 있습니까? 나는 재귀 나지도를 사용할 수 있다고 생각하지 않는다.
편집 : 하나이 할 수있는 동일한 API 함수를 사용하여 코드 복사 실수
왜지도를 사용할 수 없다고 생각하십니까? –
다른 하위 표현식의 값은 무엇입니까? 나는. 10 (sineWave 440 44100), 10 (청크 1 (sineWave 440 44100)) 등을 취합니다. –
@Edward Amsden : btw, macports를 사용하여 portaudio를 설치했는지 여부를 설명하는 이전 질문 (http://stackoverflow.com/questions/2223866/haskell-audio-output-on-os-x)에 의견을 남기십시오. 눈 표범으로 바꿀 때 나 같은 다른 사람들에게 유용 할 수 있습니다. thanks :) – yairchu