úÎ4-íK      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF G H I J SafeSafeq     Safe KLMNOPKLM SafehQRQRSafeº !" !"Safe ª(ÿ The floating point instances are dangerous, because Storable Float may not use IEEE format that sox uses according to its man page. This is strange since sox uses the host's endianess for multi-byte values. So, why does it not use the machine's floating point format?#$#$#$ Safe STUVWXYZ[\]^STSafe À/"You can combine options using the _ functions ` and aV. When the same option is given multiple times, only the first occurence is respected./bcd0/bcSafe/0123456123456/0Safe7 N:load Sound.Sox.Convert simple Option.none "test.aiff" Option.none "test.wav"7source options source file name target options target file name 77Safem97Unfortunately we cannot retrieve the sample rate using sox. However there is soxi2 for this purpose, which we may support in future. ÿÿ:load Sound.Sox.Read Sound.Sox.Signal.List :module + Control.Exception bracket (open Option.none "test.aiff") close $ \h -> withHandle2 Sound.Sox.Signal.List.getContents h >>= \x -> print (Control.Monad.Exception.Asynchronous.result x :: [Data.Int.Int16])89:;<89:;<8efghiNoneæ=>?@AB?@AB>=>jSafeCk¹Disable sigPIPE for a local action. If we don't call this, GHCi quits, when the playing command is aborted with CTRL-C. Unfortunately there doesn't seem to be another way of doing this.kl Safe ¾F „:load Sound.Sox.Play Sound.Sox.Signal.List simple Sound.Sox.Signal.List.put Option.none 11025 (iterate (1000+) (0::Data.Int.Int16))F!Writer routine - e.g.  or   sample rate G!Writer routine - e.g.  or  source options, usually none target options  sample rate FGFG Safe-ÏHESox determines the output format from the filename extension or from 6). Make sure that you provide one of them. œ:load Sound.Sox.Write Sound.Sox.Signal.List simple Sound.Sox.Signal.List.put Option.none "test.aiff" 11025 (take 100 $ iterate (1000+) (0::Data.Int.Int16))JThe traversable functor f might be mr or '[]'. It allows you to write to many files simultaneously and returns the exit codes of all writing processes.H!Writer routine - e.g.  or   sample rate I!Writer routine - e.g.  or  source options, usually none target options  sample rate J!Writer routine - e.g.  or  source options, usually none target options  sample rate nsource options, usually none target options  sample rate HIJHIJo !"#$%& '()*+,-./0123456789:;<=>?@ABC!DEFGHIJKLMNOP  Q  Q R   S A T U  S     V   ! " # $WXYWXZWX[S\D]^_`abcWXd Ee sox-0.2.3-7fZaM07vvU7LF1L3xsuEHuSound.Sox.Frame.StereoSound.Sox.FrameSound.Sox.InformationSound.Sox.FormatSound.Sox.Option.FormatSound.Sox.ConvertSound.Sox.ReadSound.Sox.Signal.ListSound.Sox.PlaySound.Sox.WriteSound.Sox.Private.ArgumentsSound.Sox.Private.FormatSound.Sox.Private.InformationSound.Sox.Private.OptionSound.Sox.SystemputData.StorableVectorhPut)sample-frame-0.0.3-FOMynoLlzV5LsguSjwcfXlSound.Frame.StereoconsrightleftT Sound.Frame withSignalnumberOfChannelsConssimpleformat sampleRatelength bitsPerSampleget exampleMulti exampleSingle$fApplicativeT $fFunctorTcustomaiffwaveoggmp3iff8svxmuLaw signedByte unsignedByte signedWord unsignedWord signedLong unsignedLongieeeSinglePrecisionieeeDoublePrecisionC$fCT$fCT0 $fCDouble$fCFloat$fCInt32 $fCWord32$fCInt16 $fCWord16$fCInt8$fCWord8singlenonenumberOfChannelsAutoHandleopenclose withHandle1 withHandle2IOReadException ReadException writeFile withReadFile getContents$fShowReadException$fEqReadException$fEnumReadExceptionextended manyExtendeddeconsfileNamepipe simpleReadbaseGHC.BaseMonoidmappendmconcat toArguments pipeInput pipeOutput pipeError processId BrokenFrame catchCtrlC ignoreCtrlCMaybe