options :: Opt.Parser Options
options =
  Options <$>
  switch
    (long "throttle" <>
     help "Throttle data output to 22050Hz, causing 'realtime' playback.") <*>
  option
    auto
    (long "mindelay" <> help "Set minimum delay between messages in seconds." <>
     metavar "NUM" <>
     value 1.0 <>
     showDefault) <*>
  option
    auto
    (long "maxdelay" <> help "Set maximum delay between messages in seconds." <>
     metavar "NUM" <>
     value 10.0 <>
     showDefault) <*>
  option
    auto
    (long "noisevolume" <> help "Set volume of noise inserted between messages." <>
     metavar "NUM" <>
     value 0.3 <>
     showDefault) <*>
  option
    (fmap SampleRate auto)
    (long "samplerate" <> help "Set sample rate of output data." <>
     metavar "INT" <>
     value (SampleRate 22050) <>
     showDefaultWith (\(SampleRate x) -> show x))
options :: Opt.Parser Options
options =
  Options <$>
  switch
    (long "throttle" <>
     help "Throttle data output to 22050Hz, causing 'realtime' playback.") <*>
  option
    auto
    (long "mindelay" <> help "Set minimum delay between messages in seconds." <>
     metavar "NUM" <>
     value 1.0 <>
     showDefault) <*>
  option
    auto
    (long "maxdelay" <> help "Set maximum delay between messages in seconds." <>
     metavar "NUM" <>
     value 10.0 <>
     showDefault) <*>
  option
    auto
    (long "noisevolume" <> help "Set volume of noise inserted between messages." <>
     metavar "NUM" <>
     value 0.3 <>
     showDefault) <*>
  option
    (fmap SampleRate auto)
    (long "samplerate" <> help "Set sample rate of output data." <>
     metavar "INT" <>
     value (SampleRate 22050) <>
     showDefaultWith (\(SampleRate x) -> show x))
options =
  Options <$>
  switch
    (long "throttle" <>
     help "Throttle data output to 22050Hz, causing 'realtime' playback.") <*>
  option
    auto
    (long "mindelay" <> help "Set minimum delay between messages in seconds." <>
     metavar "NUM" <>
     value 1.0 <>
     showDefault) <*>
  option
    auto
    (long "maxdelay" <> help "Set maximum delay between messages in seconds." <>
     metavar "NUM" <>
     value 10.0 <>
     showDefault) <*>
  option
    auto
    (long "noisevolume" <> help "Set volume of noise inserted between messages." <>
     metavar "NUM" <>
     value 0.3 <>
     showDefault) <*>
  option
    (fmap SampleRate auto)
    (long "samplerate" <> help "Set sample rate of output data." <>
     metavar "INT" <>
     value (SampleRate 22050) <>
     showDefaultWith (\(SampleRate x) -> show x))