1 {-# LANGUAGE ScopedTypeVariables #-}
5 import Control.Concurrent
6 import Data.ReactiveValue
9 import RCMA.Auxiliary.Concurrent
10 import RCMA.Auxiliary.RV
11 import RCMA.Global.Clock
12 import RCMA.Layer.Board
13 import RCMA.Layer.Layer
15 import RCMA.Translator.Jack
16 import RCMA.Translator.Message
17 import RCMA.Translator.Translator
23 makeBoard [((0,0), mkCell (ChDir False na1 N)),
24 ((0,1), mkCell (ChDir False na1 SE)),
25 ((1,1), mkCell (Split na1)),
26 ((1,-1), mkCell (Split na1)),
27 ((-1,0), mkCell (ChDir False na2 NE))]
32 naOrn = Ornaments Nothing [] NoSlide
38 naOrn = Ornaments Nothing [(10, MIDICVRnd)] SlideUp
44 naOrn = Ornaments Nothing [] NoSlide
51 tempoRV :: ReactiveFieldReadWrite IO Tempo
52 tempoRV = ReactiveFieldReadWrite (\_ -> return ()) (return 96) (\_ -> return ())
56 layerRV <- getDefaultLayerRV
58 layer <- reactiveValueRead layerRV
59 tempo <- reactiveValueRead tempoRV
60 (inBoard, outBoard) <- yampaReactiveDual (layer, tempo) (boardSF board)
61 let inRV = pairRW layerRV tempoRV
62 clock <- mkClockRV 1000
66 --reactiveValueOnCanRead outBoard (reactiveValueRead outBoard >>= print)
67 putStrLn "Board started."
69 jackSetup (liftR2 (\t n -> (t, 0, event [] id n)) tempoRV outBoard)
72 {-jackT <- forkChild $ jackSetup (liftR2 (\t n -> (t, 0, n)) tempoRV