launchpad-control-0.0.1.0: examples/launchpad-control-examples.hs
module Main where
--------------------------------------------------------------------------------
import System.IO
import System.MIDI.Launchpad.AppFramework
import qualified System.MIDI.Launchpad.Apps.DrumSeq as DrumSeq
import qualified System.MIDI.Launchpad.Apps.MonoSeq as MonoSeq
import qualified System.MIDI.Launchpad.Apps.FXControl as FXControl
import qualified System.MIDI.Launchpad.Apps.Conway as Conway
--------------------------------------------------------------------------------
appList :: [String]
appList =
[ "1: Drum sequencer"
, "2: Monomorphic sequencer"
, "3: Effect control"
, "4: Conway's game of life"
]
main :: IO ()
main = do
putStrLn "\nplease select the application (default is the first one):\n"
mapM_ putStrLn appList
putStr "your selection: "
hFlush stdout
l <- getLine
let k0 = 1
let k = case maybeRead l of
Nothing -> k0
Just m -> if m<1 || m>3 then k0 else m
putStrLn $ "\nyou selected " ++ appList!!(k-1)
putStrLn "\n------------------------------------------\n"
case k of
1 -> runMonadicApp defaultGlobalConfig $ DrumSeq.drumSequencer $ DrumSeq.defaultCfg -- { DrumSeq.seqSteps = 16 }
2 -> runPureApp defaultGlobalConfig $ MonoSeq.monoSequencer $ MonoSeq.defaultCfg -- { MonoSeq.seqSteps = 16 }
3 -> runPureApp defaultGlobalConfig $ FXControl.fxControl $ FXControl.defaultCfg
4 -> runMonadicApp defaultGlobalConfig $ Conway.conway $ Conway.defaultCfg
_ -> error "shouldn't happen"
--------------------------------------------------------------------------------
maybeRead :: Read a => String -> Maybe a
maybeRead s = case reads s of
[(x,"")] -> Just x
_ -> Nothing
--------------------------------------------------------------------------------