tidal 1.7.7 → 1.7.8
raw patch · 5 files changed
+16/−9 lines, 5 files
Files
- CHANGELOG.md +3/−0
- src/Sound/Tidal/Stream.hs +10/−6
- src/Sound/Tidal/UI.hs +1/−1
- src/Sound/Tidal/Version.hs +1/−1
- tidal.cabal +1/−1
CHANGELOG.md view
@@ -1,5 +1,8 @@ # TidalCycles log of changes +## 1.7.8 - Ayatakedai+ * Add pattern id to patterns as _id_, and send it with /code/highlights+ ## 1.7.7 - Caramel wafer * Support hosc 0.19 in test suite @yaxu
src/Sound/Tidal/Stream.hs view
@@ -35,7 +35,8 @@ import qualified Network.Socket as N import Sound.Tidal.Config-import Sound.Tidal.Core (stack, silence)+import Sound.Tidal.Core (stack, silence, (#))+import Sound.Tidal.Params (pS) import Sound.Tidal.Pattern import qualified Sound.Tidal.Tempo as T import Sound.Tidal.Utils ((!!!))@@ -353,14 +354,15 @@ where cToM :: ((Int,Int),(Int,Int)) -> (Double, Bool, O.Message) cToM ((x, y), (x',y')) = (ts, False, -- bus message ?- O.Message oscpath $ (O.float delta):(O.float cyc):(map O.int32 [x,y,x',y'])+ O.Message oscpath $ (O.string ident):(O.float delta):(O.float cyc):(map O.int32 [x,y,x',y']) ) on = sched tempo $ start $ wholeOrPart e off = sched tempo $ stop $ wholeOrPart e delta = off - on cyc :: Double cyc = fromRational $ start $ wholeOrPart e- nudge = fromJust $ getF $ fromMaybe (VF 0) $ Map.lookup "nudge" $ value e+ nudge = fromMaybe 0 $ Map.lookup "nudge" (value e) >>= getF+ ident = fromMaybe "unknown" $ Map.lookup "_id_" (value e) >>= getS ts = on + nudge + latency doCps :: MVar T.Tempo -> (Double, Maybe Value) -> IO ()@@ -538,7 +540,7 @@ = E.catch (do let x = queryArc pat (Arc 0 0) tempo <- readMVar $ sTempoMV s input <- takeMVar $ sStateMV s- -- put change time in control input+ -- put pattern id and change time in control input now <- O.time let cyc = T.timeToCycles tempo now putMVar (sStateMV s) $@@ -551,8 +553,10 @@ ) (\(e :: E.SomeException) -> hPutStrLn stderr $ "Error in pattern: " ++ show e )- where updatePS (Just playState) = do playState {pattern = pat, history = pat:(history playState)}- updatePS Nothing = PlayState pat False False [pat]+ where updatePS (Just playState) = do playState {pattern = pat', history = pat:(history playState)}+ updatePS Nothing = PlayState pat' False False [pat']+ pat' = pat # pS "_id_" (pure $ show k)+ streamMute :: Show a => Stream -> a -> IO () streamMute s k = withPatId s (show k) (\x -> x {mute = True})
src/Sound/Tidal/UI.hs view
@@ -1739,7 +1739,7 @@ -- | @contrast p f f' p'@ splits controlpattern @p'@ in two, applying -- the function @f@ to one and @f'@ to the other. This depends on -- whether events in it contains values matching with those in @p@.--- For example in @contrast (n "1") (# crush 3) (# vowel "a") $ n "0 1" # s "bd sn" # speed 3@,+-- For example in @contrast (# crush 3) (# vowel "a") (n "1") $ n "0 1" # s "bd sn" # speed 3@, -- the first event will have the vowel effect applied and the second -- will have the crush applied. contrast :: (ControlPattern -> ControlPattern) -> (ControlPattern -> ControlPattern)
src/Sound/Tidal/Version.hs view
@@ -21,7 +21,7 @@ -} tidal_version :: String-tidal_version = "1.7.7"+tidal_version = "1.7.8" tidal_status :: IO () tidal_status = tidal_status_string >>= putStrLn
tidal.cabal view
@@ -1,5 +1,5 @@ name: tidal-version: 1.7.7+version: 1.7.8 synopsis: Pattern language for improvised music description: Tidal is a domain specific language for live coding patterns. homepage: http://tidalcycles.org/