úÎ1õ.0      !"#$%&'()*+,-. /  Safe-Infered     Safe-Infered  Safe-Infered 01 01 01 Safe-Infered       Safe-Infered23456782345672345678  Safe-Infered"You can combine options using the 9 functions : and ;. .When the same option is given multiple times, 'only the first occurence is respected. <=>?<=><=>? Safe-Infered  :load Sound.Sox.Convert  7 simple Option.none "test.aiff" Option.none "test.wav" source options source file name target options target file name  Safe-Infered !"# !"# !"# !"#  Safe-Infered@$Disable sigPIPE for a local action.  If we don't call this, GHCi quits, 1when the playing command is aborted with CTRL-C. Unfortunately there doesn'(t seem to be another way of doing this. @A@A@A Safe-InferedB,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? $%CDEBFGHIJK$%$% $%CDEBFGHIJK Safe-Infered'7Unfortunately we cannot retrieve the sample rate using sox. However there is soxi3 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]) &'()*&'()*&'()*&'()* Safe-Infered+!Sox determines the output format $from the filename extension or from #. (Make sure that you provide one of them. - :load Sound.Sox.Write Sound.Sox.Signal.List  q simple Sound.Sox.Signal.List.put Option.none "test.aiff" 11025 (take 100 $ iterate (1000+) (0::Data.Int.Int16)) -The traversable functor f might be L or '[]'. 4It allows you to write to many files simultaneously 5and returns the exit codes of all writing processes. +Writer routine -  e.g.   or   sample rate ,Writer routine -  e.g.   or  source options, usually none target options  sample rate -Writer routine -  e.g.   or  source options, usually none target options  sample rate +,-+,-+,-  Safe-Infered. , :load Sound.Sox.Play Sound.Sox.Signal.List  Z simple Sound.Sox.Signal.List.put Option.none 11025 (iterate (1000+) (0::Data.Int.Int16)) .Writer routine -  e.g.   or   sample rate /Writer routine -  e.g.   or  source options, usually none target options  sample rate ./././M  !"#$%&'()*+,-  ./01234356789/:; / : < =  < = . > ? @ABCABDABE < = F @ G HIJKLMNOPQRASTU sox-0.2.1.1Sound.Sox.Frame.StereoSound.Sox.FrameSound.Sox.Signal.ListSound.Sox.FormatSound.Sox.Option.FormatSound.Sox.ConvertSound.Sox.ReadSound.Sox.WriteSound.Sox.PlaySound.Sox.Private.FormatSound.Sox.Private.ArgumentsSound.Sox.Private.OptionSound.Sox.SystemputData.StorableVectorhPutsample-frame-0.0.2Sound.Frame.StereoconsrightleftT Sound.Frame withSignalnumberOfChannelsIOReadException ReadException writeFile withReadFile getContentscustomaiffwaveoggmp3iff8svxmuLaw signedByte unsignedByte signedWord unsignedWord signedLong unsignedLongieeeSinglePrecisionieeeDoublePrecisionsinglesimplenonenumberOfChannelsAuto sampleRateformatCHandleopenclose withHandle1 withHandle2extended manyExtendedConsdeconsfileNamepipe $fMonoidTbase Data.MonoidMonoidmappendmconcat toArguments catchCtrlC ignoreCtrlC$fCFloat$fCT$fCT0 $fCDouble$fCInt32 $fCWord32$fCInt16 $fCWord16$fCInt8$fCWord8 Data.MaybeMaybe