나는 성공적으로 PortAudio을 사용하고있다.
내가 아래에, 아주 간단한 "에코"예를 만들기 위해 내 장난감 프로그램에서 일부 발췌했다 :.
이 (헤드폰으로 실행이 스피커 마이크에서 피드백 루프 매우 큰
될 수 있습니다 몇 피드백 라운드 후)
import Control.Monad (forever)
import Data.Int (Int16)
import Foreign.Ptr (nullPtr)
import Sound.PortAudio
initPortAudio :: Int -> IO (PaStream Int16)
initPortAudio blockSize = do
Right NoError <- initialize
Just micDevIdx <- getDefaultInputDevice
Just spkDevIdx <- getDefaultOutputDevice
Right paStream <-
openStream
(Just (StreamParameters micDevIdx 1 PaInt16 0.1 nullPtr))
(Just (StreamParameters spkDevIdx 1 PaInt16 0.1 nullPtr))
44100 blockSize
:: IO (Either String (PaStream Int16))
Right NoError <- startStream paStream
let zeroBlock = replicate blockSize [0]
Right NoError <- writeStream paStream zeroBlock blockSize
return paStream
main :: IO()
main = do
paStream <- initPortAudio blockSize
forever $ do
Right numSampsAvail <- getStreamReadAvailable paStream
Right curSamps <- readStream paStream 1 numSampsAvail
Right NoError <- writeStream paStream curSamps numSampsAvail
return()
where
blockSize = 0x800
는 GHC 6.10.4와 레오파드 여기에 작동합니다.
내 장난감 프로그램은 실제로 오디오 입력 만 사용하며 오디오 출력에 0을 출력합니다 (PortAudio에서 불평하지 않고).
어떻게 portaudio 라이브러리를 설치 했습니까? 내가 macports를 통해 그것을 설치하고 지금 haskell 라이브러리는 portaudio 라이브러리가 잘못된 아키텍처라고 불평하고있다. – Edward
그래서 분명히 Snow Leopard는 기본적으로 64 비트이지만 GHC는 여전히 32 비트입니다. portaudio를 32 비트로 만들려고해도 실패합니다. – Edward
@Edward Amsden : 나는 맥 포트를 사용하지 않았다. 안정 버전 v19_20071207에 대해'configure '를했다.'make install'. 행운을 빕니다. – yairchu