-- | Test for GUI-elements. Right now this example is a total mess and shouldn't work.
-- see you in the next version...
module Main where
import qualified Data.Colour.Names as C
import Control.Applicative
import Csound.Base
unit = ValSpan (ValDiap 0 1) Linear
linenWidget :: Source Sig
linenWidget = do
(g1, r1) <- slider unit 0.5
(g2, r2) <- slider unit 0.5
let out = liftA2 fun r1 r2
source (ver [g1, g2]) out
where fun a b = linseg [0, a', 1, idur - a' - b', 1, b', 0]
where a' = idur * ir a
b' = idur * ir b
instr :: SE Sig -> D -> SE Sig
instr env cps = do
e <- env
return $ 0.5 * e * osc (sig cps)
pureTone () = 0.7 * osc 440
u = fmap (props [SetSliderType Fill] . fst) $ slider unit 0.5
v = fmap fst $ knob unit 0.5
r = fmap fst $ roller unit 0.001 0.01
c1 = fmap fst $ count (ValDiap 0 10) 1 Nothing 2
c2 = fmap fst $ count (ValDiap 0 10) 1 (Just 2) 4
b = fmap (setLabel "push me" . fst) button
bb = fmap fst $ butBank 5 3
tb = fmap (setLabel "i'm the toggle" . fst) toggle
j = fmap fst $ joy unit unit (0.2, 0.2)
d = fmap (setBoxType BorderBox) $ box $ t ++ t ++ t
where t = " Hello everybody, let's look at some cool text in the box "
f = setColors C.green C.magenta
main = dac $ do
g1 <- u
g2 <- u
g3 <- u
g4 <- r
g5 <- c1
g6 <- c2
g7 <- b
g8 <- bb
g9 <- d
g10 <- j
g11 <- tb
let g = setTextColor C.azure $ hor [sca 3 $ sca 1.5 $ f $ ver [setLabel "Amplitude" g1, setLabel "Frequency" g2, hor [g5, g6]], setBorder ThinDown $ ver [g7, setTextColor C.azure $ ver [f $ setTextColor C.blue $ setButtonType RoundButton g11], sca 2 space ]]
panel (ver [sca 4 g, hor [g7, g7]])