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
57 boardOutRV <- newCBMVarRW []
58 boardSetup board tempoRV layerRV boardOutRV
59 boardI <- reactiveValueRead boardOutRV
61 jackT <- forkChild $ jackSetup (liftR2 (\t n -> (t, 0, n)) tempoRV boardOutRV)