Saving a Pulse Audio stream with Haskell bindings -


using pulse-simple package have made following code:

main=do     s<-simplenew nothing "example" record nothing "this example application"       (samplespec (f32 littleendian) 44100 1) nothing nothing     xs<-simpleread s $ 44100*10 :: io [float]     simplefree s     play xs  play :: [float] -> io () play d =     s<-simplenew nothing "example" play nothing "this example application"         (samplespec (f32 littleendian) 44100 1) nothing nothing     simplewrite s d     simpledrain s     simplefree s 

this works , records 10 seconds of audio , plays back.

i want encode , save audio file (as .wav rr whatever) can played in program or converted. think more of audio question non haskell people have array of floats 44100*10 long. suspect i'll need other library.

thanks in advance.

seems data.wave module wave package should job.

convert [float] [int32] , constitutes wavesamples field of wave record. fill in rest of waveheader , write file using putwavefile.

import data.wave  writewavefile :: string -> [float] -> io () writewavefile path floats = putwavefile path wave   wave = wave wheader wsamples         wheader = waveheader { wavenumchannels = 1                              , waveframerate = 44100                              , wavebitspersample = 32 -- or maybe 8?                              , waveframes = nothing                              }         wsamples = [[ ... | x <- floats ]] 

fill in ... suitable float -> int32 function.


Comments

Popular posts from this blog

javascript - Using jquery append to add option values into a select element not working -

Android soft keyboard reverts to default keyboard on orientation change -

Rendering JButton to get the JCheckBox behavior in a JTable by using images does not update my table -