J'utilise PortAudio avec succès.
Je pris quelques extraits de mon programme de jouet pour faire un exemple « echo » très simple, ci-dessous.
(course avec un casque ceci est une boucle de rétroaction du micro aux haut-parleurs et peut devenir très fort après quelques commentaires arrondit)
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
ici Œuvres dans Leopard avec GHC 6.10.4.
Mon propre programme de jeu n'utilise en réalité que l'entrée audio, et il délivre des zéros à la sortie audio (sans faire ce que PortAudio se plaint).
Comment avez-vous installé la bibliothèque portaudio elle-même? Je l'ai installé via macports et maintenant la bibliothèque haskell se plaint que la bibliothèque portaudio est la mauvaise architecture. – Edward
Donc, apparemment, cela est lié à Snow Leopard étant tous les 64 bits par défaut, mais GHC étant encore 32 bits. Essayer de construire Portaudio comme 32 bits échoue également. – Edward
@Edward Amsden: Je n'ai pas utilisé macports. J'ai fait 'configure' ..' make install' pour la version stable v19_20071207. Bonne chance. – yairchu