> {-# LANGUAGE Arrows, CPP #-} > module HSoM.Examples.MUIExamples1 where > import Euterpea > import Data.Maybe (mapMaybe) > import HSoM > import FRP.UISF > import FRP.UISF.Graphics (withColor', rgbE, rectangleFilled) > import FRP.UISF.Widget.Construction (mkWidget) > ui0 :: UISF () () > ui0 = proc _ -> do > ap <- hiSlider 1 (0,100) 0 -< () > display -< pitch ap > mui0 = runMUI' ui0 > ui1 :: UISF () () > ui1 = setSize (150,150) $ > proc _ -> do > ap <- title "Absolute Pitch" (hiSlider 1 (0,100) 0) -< () > title "Pitch" display -< pitch ap > mui1 = runMUI' ui1 > ui2 :: UISF () () > ui2 = leftRight $ > proc _ -> do > ap <- title "Absolute Pitch" (hiSlider 1 (0,100) 0) -< () > title "Pitch" display -< pitch ap > mui2 = runMUI' ui2 > ui3 :: UISF () () > ui3 = proc _ -> do > devid <- selectOutput -< () > ap <- title "Absolute Pitch" (hiSlider 1 (0,100) 0) -< () > title "Pitch" display -< pitch ap > uap <- unique -< ap > midiOut -< (devid, fmap (\k-> [ANote 0 k 100 0.1]) uap) > mui3 = runMUI' ui3 > ui4 :: UISF () () > ui4 = proc _ -> do > mi <- selectInput -< () > mo <- selectOutput -< () > m <- midiIn -< mi > midiOut -< (mo, m) > mui4 = runMUI' ui4 > getDeviceIDs = topDown $ > proc () -> do > mi <- selectInput -< () > mo <- selectOutput -< () > outA -< (mi,mo) > mui'4 = runMUI (defaultMUIParams > { uiTitle = "MIDI Input / Output UI", > uiSize = (200,200)}) > ui4 > ui5 :: UISF () () > ui5 = proc _ -> do > devid <- selectOutput -< () > ap <- title "Absolute Pitch" (hiSlider 1 (0,100) 0) -< () > title "Pitch" display -< pitch ap > f <- title "Tempo" (hSlider (1,10) 1) -< () > tick <- timer -< 1/f > midiOut -< (devid, fmap (const [ANote 0 ap 100 0.1]) tick) > colorSwatchUI :: UISF () () > colorSwatchUI = setSize (300, 220) $ pad (4,0,4,0) $ leftRight $ > proc _ -> do > r <- newColorSlider "R" -< () > g <- newColorSlider "G" -< () > b <- newColorSlider "B" -< () > e <- unique -< (r,g,b) > let rect = withColor' (rgbE r g b) (rectangleFilled ((0,0),d)) > pad (4,8,0,0) $ canvas d -< fmap (const rect) e > where > d = (170,170) > newColorSlider l = title l $ withDisplay $ viSlider 16 (0,255) 0 > colorSwatch = runMUI' colorSwatchUI