{-# LANGUAGE TemplateHaskell #-} module Config where import Data.Label import System.Console.GetOpt data Config = Config { -- How to execute the program _configCutoff :: Int , _configClip :: Int } $(mkLabels [''Config]) defaults :: Config defaults = Config { _configCutoff = 10 , _configClip = 128 } options :: [OptDescr (Config -> Config)] options = [ Option [] ["cutoff"] (ReqArg (set configCutoff . read) "INT") (describe configCutoff "high-pass filtering cut-off value") , Option [] ["clip"] (ReqArg (set configClip . read) "INT") (describe configClip "fft magnitude clipping value") ] where describe f msg = msg ++ " (" ++ show (get f defaults) ++ ")" -- | Process the command line options -- header :: [String] header = [ "accelerate-fft (c) [2007..2013] The Accelerate Team" , "" , "Usage: accelerate-fft [OPTIONS] fileIn.bmp fileOut.bmp" , "" , "For FFT, the output magnitude has a high dynamic range. We need to clip it" , "otherwise most of the pixels in the output BMP will be black. Start with a" , "value equal to about the width of the image (eg 512)" , "" ] footer :: [String] footer = [ "" ]