1 {-# LANGUAGE ScopedTypeVariables #-}
5 import Control.Concurrent
6 import Data.ReactiveValue
9 import RCMA.Auxiliary.Concurrent
10 import RCMA.Global.Clock
11 import RCMA.Layer.Board
12 import RCMA.Layer.Layer
14 import RCMA.Translator.Jack
15 import RCMA.Translator.Message
16 import RCMA.Translator.Translator
22 makeBoard [((0,0), mkCell (ChDir False na1 N)),
23 ((0,1), mkCell (ChDir False na1 SE)),
24 ((1,1), mkCell (Split na1)),
25 ((1,-1), mkCell (Split na1)),
26 ((-1,0), mkCell (ChDir False na2 NE))]
31 naOrn = Ornaments Nothing [] NoSlide
37 naOrn = Ornaments Nothing [(10, MIDICVRnd)] SlideUp
43 naOrn = Ornaments Nothing [] NoSlide
50 tempoRV :: ReactiveFieldReadWrite IO Tempo
51 tempoRV = ReactiveFieldReadWrite (\_ -> return ()) (return 96) (\_ -> return ())
55 layerRV <- getDefaultLayerRV
56 boardInRV <- boardSetup board tempoRV layerRV
57 jackT <- forkChild $ jackSetup (liftR2 (\t n -> (t, 0, n)) tempoRV boardInRV)