visualiseTempoWidget:: MonadWidget t m => Dynamic t Tempo -> W t m (Variable t Tempo)
visualiseTempoWidget delta = divClass "tempoVisualiser" $  mdo



  c <- context
  let currentTempo = fmap (tempo . ensemble . ensembleC) c
  widgetBuildTime <- liftIO $ getCurrentTime
  tick <- tickLossy 0.01 widgetBuildTime
  elapsedBeatsRunning <- performEvent $ attachWith getElapsedBeats (current currentTempo) $ fmap _tickInfo_lastUTC tick 

  dynTempo <- holdDyn 0 elapsedBeatsRunning

  out <- visualiseCycles dynTempo

  v <- variable delta never
  return v
visualiseTempoWidget:: MonadWidget t m => Dynamic t Tempo -> W t m (Variable t Tempo)
visualiseTempoWidget delta = divClass "tempoVisualiser" $  mdo



  c <- context
  let currentTempo = fmap (tempo . ensemble . ensembleC) c
  widgetBuildTime <- liftIO $ getCurrentTime
  tick <- tickLossy 0.01 widgetBuildTime
  elapsedBeatsRunning <- performEvent $ attachWith getElapsedBeats (current currentTempo) $ fmap _tickInfo_lastUTC tick 

  dynTempo <- holdDyn 0 elapsedBeatsRunning

  out <- visualiseCycles dynTempo

  v <- variable delta never
  return v
visualiseTempoWidget delta = divClass "tempoVisualiser" $  mdo



  c <- context
  let currentTempo = fmap (tempo . ensemble . ensembleC) c
  widgetBuildTime <- liftIO $ getCurrentTime
  tick <- tickLossy 0.01 widgetBuildTime
  elapsedBeatsRunning <- performEvent $ attachWith getElapsedBeats (current currentTempo) $ fmap _tickInfo_lastUTC tick 

  dynTempo <- holdDyn 0 elapsedBeatsRunning

  out <- visualiseCycles dynTempo

  v <- variable delta never
  return v