packages feed

tidal 1.0.12 → 1.0.13

raw patch · 4 files changed

+24/−15 lines, 4 files

Files

CHANGELOG.md view
@@ -1,9 +1,13 @@ # TidalCycles log of changes +## 1.0.13 - 🐝⌛️🦋 #2++* Simplify espgrid support - @yaxu+ ## 1.0.12 - 🐝⌛️🦋  * Fix ESPGrid support - @dktr0-* Add 'snowbal'' function - @XiNNiW+* Add 'snowball' function - @XiNNiW  ## 1.0.11 - Cros Bríde 
src/Sound/Tidal/EspGrid.hs view
@@ -1,12 +1,14 @@ {-# LANGUAGE ScopedTypeVariables #-}
 
-module Sound.Tidal.EspGrid (tidalEspGridLink,cpsEsp) where
+module Sound.Tidal.EspGrid (tidalEspGridLink,cpsEsp,espgrid) where
 
 import Control.Concurrent.MVar
 import Control.Concurrent (forkIO,threadDelay)
 import Control.Monad (forever)
+import Control.Exception
 import Sound.OSC.FD
 import Sound.Tidal.Tempo
+import Sound.Tidal.Stream (Stream, sTempoMV)
 
 parseEspTempo :: [Datum] -> Maybe (Tempo -> Tempo)
 parseEspTempo d = do
@@ -25,22 +27,25 @@ 
 changeTempo :: MVar Tempo -> Packet -> IO ()
 changeTempo t (Packet_Message msg) =
-    case parseEspTempo (messageDatum msg) of
-      Just f -> do
-        t0 <- takeMVar t
-        let t1 = f t0
-        putMVar t t1
-      Nothing -> putStrLn "Warning: Unable to parse message (likely from EspGrid) as Tempo"
+  case parseEspTempo (messageDatum msg) of
+    Just f -> modifyMVarMasked_ t $ \t0 -> return (f t0)
+    Nothing -> putStrLn "Warning: Unable to parse message from EspGrid as Tempo"
 changeTempo _ _ = putStrLn "Serious error: Can only process Packet_Message"
 
 tidalEspGridLink :: MVar Tempo -> IO ()
-tidalEspGridLink t = do
+tidalEspGridLink _ = putStrLn "Function no longer supported, please use 'espgrid tidal' to connect to ESPgrid instead."
+
+espgrid :: Stream -> IO ()
+espgrid st = do
+  let t = sTempoMV st
   socket <- openUDP "127.0.0.1" 5510
   _ <- forkIO $ forever $ do
-    _ <- sendMessage socket $ Message "/esp/tempo/q" []
-    response <- waitAddress socket "/esp/tempo/r"
-    Sound.Tidal.EspGrid.changeTempo t response
-    threadDelay 200000
+    (do
+      sendMessage socket $ Message "/esp/tempo/q" []
+      response <- waitAddress socket "/esp/tempo/r"
+      Sound.Tidal.EspGrid.changeTempo t response
+      threadDelay 200000)
+      `catch` (\e -> putStrLn $ "exception caught in tidalEspGridLink: " ++ show (e :: SomeException))
   return ()
 
 cpsEsp :: Real t => t -> IO ()
src/Sound/Tidal/Version.hs view
@@ -1,4 +1,4 @@ module Sound.Tidal.Version where  tidal_version :: String-tidal_version = "1.0.12"+tidal_version = "1.0.13"
tidal.cabal view
@@ -1,5 +1,5 @@ name:                tidal-version:             1.0.12+version:             1.0.13 synopsis:            Pattern language for improvised music -- description: homepage:            http://tidalcycles.org/