{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}

module Sound.Tidal.Boot
  ( Tidally (..),
    OscMap,
    mkOscMap,
    mkTidal,
    mkTidalWith,
    only,
    p,
    _p,
    p_,
    hush,
    panic,
    list,
    mute,
    unmute,
    unmuteAll,
    unsoloAll,
    solo,
    unsolo,
    once,
    asap,
    first,
    nudgeAll,
    all,
    resetCycles,
    setCycle,
    setcps,
    getcps,
    setbpm,
    getbpm,
    getnow,
    enableLink,
    disableLink,
    d1,
    d2,
    d3,
    d4,
    d5,
    d6,
    d7,
    d8,
    d9,
    d10,
    d11,
    d12,
    d13,
    d14,
    d15,
    d16,
    _d1,
    _d2,
    _d3,
    _d4,
    _d5,
    _d6,
    _d7,
    _d8,
    _d9,
    _d10,
    _d11,
    _d12,
    _d13,
    _d14,
    _d15,
    _d16,
    d1_,
    d2_,
    d3_,
    d4_,
    d5_,
    d6_,
    d7_,
    d8_,
    d9_,
    d10_,
    d11_,
    d12_,
    d13_,
    d14_,
    d15_,
    d16_,
    getState,
    setI,
    setF,
    setS,
    setR,
    setB,
    xfade,
    xfadeIn,
    module Sound.Tidal.Context,
    histpan,
    wait,
    waitT,
    jump,
    jumpIn,
    jumpIn',
    jumpMod,
    jumpMod',
    mortal,
    interpolate,
    interpolateIn,
    clutch,
    clutchIn,
    anticipate,
    anticipateIn,
    forId,
  )
where

{-
    Boot.hs - Shortcuts for using an in-scope Tidal Stream.
    Copyright (C) 2023, Alex McLean and contributors

    This library is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this library.  If not, see <http://www.gnu.org/licenses/>.
-}

import Sound.Tidal.Context hiding (anticipate, anticipateIn, clutch, clutchIn, histpan, interpolate, interpolateIn, jump, jumpIn, jumpIn', jumpMod, jumpMod', mortal, mortalOverlay, wait, waitT, wash, washIn, xfadeIn)
import Sound.Tidal.ID (ID)
import System.IO (hSetEncoding, stdout, utf8)
import Prelude hiding (all, (*>), (<*))

-- | Functions using this constraint can access the in-scope Tidal instance.
-- You must implement an instance of this in 'BootTidal.hs'. Note that GHC
-- will complain that it is an "orphan" instance, but that is ok.
class Tidally where
  tidal :: Stream

type OscMap = [(Target, [OSC])]

-- | A reasonable OscMap
mkOscMap :: OscMap
mkOscMap :: OscMap
mkOscMap = [(Target
superdirtTarget {oLatency = 0.05, oAddress = "127.0.0.1", oPort = 57120}, [OSC
superdirtShape])]

-- | Creates a Tidal instance using default config. Use 'mkTidalWith' to customize.
mkTidal :: IO Stream
mkTidal :: IO Stream
mkTidal = OscMap -> Config -> IO Stream
mkTidalWith OscMap
mkOscMap Config
defaultConfig

-- | See 'Sound.Tidal.Stream.startStream'.
mkTidalWith :: OscMap -> Config -> IO Stream
mkTidalWith :: OscMap -> Config -> IO Stream
mkTidalWith OscMap
oscmap Config
config = do
  Handle -> TextEncoding -> IO ()
hSetEncoding Handle
stdout TextEncoding
utf8
  Config -> OscMap -> IO Stream
startStream Config
config OscMap
oscmap

-- | 'hush' then execute the given action.
only :: (Tidally) => IO () -> IO ()
only :: Tidally => IO () -> IO ()
only = (IO ()
Tidally => IO ()
hush IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>)

-- | See 'Sound.Tidal.Stream.streamReplace'.
p :: (Tidally) => ID -> ControlPattern -> IO ()
p :: Tidally => ID -> ControlPattern -> IO ()
p = Stream -> ID -> ControlPattern -> IO ()
streamReplace Stream
Tidally => Stream
tidal

-- | Silences a specific stream, regardless of ControlPattern input. Useful for rapid muting of streams
_p :: (Tidally) => ID -> ControlPattern -> IO ()
_p :: Tidally => ID -> ControlPattern -> IO ()
_p ID
k ControlPattern
_ = Stream -> ID -> ControlPattern -> IO ()
streamReplace Stream
Tidally => Stream
tidal ID
k ControlPattern
forall a. Pattern a
silence

-- | Silences a specific stream, regardless of ControlPattern input. Useful for rapid muting of streams
p_ :: (Tidally) => ID -> ControlPattern -> IO ()
p_ :: Tidally => ID -> ControlPattern -> IO ()
p_ = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p

-- | See 'Sound.Tidal.Stream.streamHush'.
hush :: (Tidally) => IO ()
hush :: Tidally => IO ()
hush = Stream -> IO ()
streamHush Stream
Tidally => Stream
tidal

panic :: (Tidally) => IO ()
panic :: Tidally => IO ()
panic = IO ()
Tidally => IO ()
hush IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
once (Pattern String -> ControlPattern
sound Pattern String
"superpanic")

-- | See 'Sound.Tidal.Stream.streamList'.
list :: (Tidally) => IO ()
list :: Tidally => IO ()
list = Stream -> IO ()
streamList Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamMute'.
mute :: (Tidally) => ID -> IO ()
mute :: Tidally => ID -> IO ()
mute = Stream -> ID -> IO ()
streamMute Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamUnmute'.
unmute :: (Tidally) => ID -> IO ()
unmute :: Tidally => ID -> IO ()
unmute = Stream -> ID -> IO ()
streamUnmute Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamUnmuteAll'.
unmuteAll :: (Tidally) => IO ()
unmuteAll :: Tidally => IO ()
unmuteAll = Stream -> IO ()
streamUnmuteAll Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamUnsoloAll'.
unsoloAll :: (Tidally) => IO ()
unsoloAll :: Tidally => IO ()
unsoloAll = Stream -> IO ()
streamUnsoloAll Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamSolo'.
solo :: (Tidally) => ID -> IO ()
solo :: Tidally => ID -> IO ()
solo = Stream -> ID -> IO ()
streamSolo Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamUnsolo'.
unsolo :: (Tidally) => ID -> IO ()
unsolo :: Tidally => ID -> IO ()
unsolo = Stream -> ID -> IO ()
streamUnsolo Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamOnce'.
once :: (Tidally) => ControlPattern -> IO ()
once :: Tidally => ControlPattern -> IO ()
once = Stream -> ControlPattern -> IO ()
streamOnce Stream
Tidally => Stream
tidal

-- | An alias for 'once'.
asap :: (Tidally) => ControlPattern -> IO ()
asap :: Tidally => ControlPattern -> IO ()
asap = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
once

-- | See 'Sound.Tidal.Stream.first'.
first :: (Tidally) => ControlPattern -> IO ()
first :: Tidally => ControlPattern -> IO ()
first = Stream -> ControlPattern -> IO ()
streamFirst Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.nudgeAll'.
nudgeAll :: (Tidally) => Double -> IO ()
nudgeAll :: Tidally => Double -> IO ()
nudgeAll = Stream -> Double -> IO ()
streamNudgeAll Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamAll'.
all :: (Tidally) => (ControlPattern -> ControlPattern) -> IO ()
all :: Tidally => (ControlPattern -> ControlPattern) -> IO ()
all = Stream -> (ControlPattern -> ControlPattern) -> IO ()
streamAll Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.resetCycles'.
resetCycles :: (Tidally) => IO ()
resetCycles :: Tidally => IO ()
resetCycles = Stream -> IO ()
streamResetCycles Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamSetCycle'.
setCycle :: (Tidally) => Time -> IO ()
setCycle :: Tidally => Time -> IO ()
setCycle = Stream -> Time -> IO ()
streamSetCycle Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Params.cps'.
setcps :: (Tidally) => Pattern Double -> IO ()
setcps :: Tidally => Pattern Double -> IO ()
setcps = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
once (ControlPattern -> IO ())
-> (Pattern Double -> ControlPattern) -> Pattern Double -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pattern Double -> ControlPattern
cps

-- | See 'Sound.Tidal.Stream.streamGetCPS'.
getcps :: (Tidally) => IO Time
getcps :: Tidally => IO Time
getcps = Stream -> IO Time
streamGetCPS Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamGetBPM'.
setbpm :: (Tidally) => Time -> IO ()
setbpm :: Tidally => Time -> IO ()
setbpm = Stream -> Time -> IO ()
streamSetBPM Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamGetBPM'.
getbpm :: (Tidally) => IO Time
getbpm :: Tidally => IO Time
getbpm = Stream -> IO Time
streamGetBPM Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamGetnow'.
getnow :: (Tidally) => IO Time
getnow :: Tidally => IO Time
getnow = Stream -> IO Time
streamGetNow Stream
Tidally => Stream
tidal

enableLink :: (Tidally) => IO ()
enableLink :: Tidally => IO ()
enableLink = Stream -> IO ()
streamEnableLink Stream
Tidally => Stream
tidal

disableLink :: (Tidally) => IO ()
disableLink :: Tidally => IO ()
disableLink = Stream -> IO ()
streamDisableLink Stream
Tidally => Stream
tidal

-- | Replace what's playing on the given orbit.
d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16 :: (Tidally) => ControlPattern -> IO ()
d1 :: Tidally => ControlPattern -> IO ()
d1 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
1 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
0)
d2 :: Tidally => ControlPattern -> IO ()
d2 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
2 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
1)
d3 :: Tidally => ControlPattern -> IO ()
d3 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
3 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
2)
d4 :: Tidally => ControlPattern -> IO ()
d4 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
4 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
3)
d5 :: Tidally => ControlPattern -> IO ()
d5 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
5 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
4)
d6 :: Tidally => ControlPattern -> IO ()
d6 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
6 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
5)
d7 :: Tidally => ControlPattern -> IO ()
d7 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
7 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
6)
d8 :: Tidally => ControlPattern -> IO ()
d8 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
8 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
7)
d9 :: Tidally => ControlPattern -> IO ()
d9 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
9 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
8)
d10 :: Tidally => ControlPattern -> IO ()
d10 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
10 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
9)
d11 :: Tidally => ControlPattern -> IO ()
d11 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
11 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
10)
d12 :: Tidally => ControlPattern -> IO ()
d12 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
12 (ControlPattern -> IO ())
-> (ControlPattern -> ControlPattern) -> ControlPattern -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ControlPattern -> ControlPattern -> ControlPattern
forall a. Unionable a => Pattern a -> Pattern a -> Pattern a
|< Pattern Int -> ControlPattern
orbit Pattern Int
11)
d13 :: Tidally => ControlPattern -> IO ()
d13 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
13
d14 :: Tidally => ControlPattern -> IO ()
d14 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
14
d15 :: Tidally => ControlPattern -> IO ()
d15 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
15
d16 :: Tidally => ControlPattern -> IO ()
d16 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
p ID
16

-- | Rapidly silence what's playing on the given orbit
_d1, _d2, _d3, _d4, _d5, _d6, _d7, _d8, _d9, _d10, _d11, _d12, _d13, _d14, _d15, _d16 :: (Tidally) => ControlPattern -> IO ()
_d1 :: Tidally => ControlPattern -> IO ()
_d1 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
1
_d2 :: Tidally => ControlPattern -> IO ()
_d2 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
2
_d3 :: Tidally => ControlPattern -> IO ()
_d3 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
3
_d4 :: Tidally => ControlPattern -> IO ()
_d4 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
4
_d5 :: Tidally => ControlPattern -> IO ()
_d5 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
5
_d6 :: Tidally => ControlPattern -> IO ()
_d6 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
6
_d7 :: Tidally => ControlPattern -> IO ()
_d7 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
7
_d8 :: Tidally => ControlPattern -> IO ()
_d8 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
8
_d9 :: Tidally => ControlPattern -> IO ()
_d9 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
9
_d10 :: Tidally => ControlPattern -> IO ()
_d10 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
10
_d11 :: Tidally => ControlPattern -> IO ()
_d11 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
11
_d12 :: Tidally => ControlPattern -> IO ()
_d12 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
12
_d13 :: Tidally => ControlPattern -> IO ()
_d13 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
13
_d14 :: Tidally => ControlPattern -> IO ()
_d14 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
14
_d15 :: Tidally => ControlPattern -> IO ()
_d15 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
15
_d16 :: Tidally => ControlPattern -> IO ()
_d16 = ID -> ControlPattern -> IO ()
Tidally => ID -> ControlPattern -> IO ()
_p ID
16

-- | Rapidly silence what's playing on the given orbit
d1_, d2_, d3_, d4_, d5_, d6_, d7_, d8_, d9_, d10_, d11_, d12_, d13_, d14_, d15_, d16_ :: (Tidally) => ControlPattern -> IO ()
d1_ :: Tidally => ControlPattern -> IO ()
d1_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d1
d2_ :: Tidally => ControlPattern -> IO ()
d2_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d2
d3_ :: Tidally => ControlPattern -> IO ()
d3_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d3
d4_ :: Tidally => ControlPattern -> IO ()
d4_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d4
d5_ :: Tidally => ControlPattern -> IO ()
d5_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d5
d6_ :: Tidally => ControlPattern -> IO ()
d6_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d6
d7_ :: Tidally => ControlPattern -> IO ()
d7_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d7
d8_ :: Tidally => ControlPattern -> IO ()
d8_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d8
d9_ :: Tidally => ControlPattern -> IO ()
d9_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d9
d10_ :: Tidally => ControlPattern -> IO ()
d10_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d10
d11_ :: Tidally => ControlPattern -> IO ()
d11_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d11
d12_ :: Tidally => ControlPattern -> IO ()
d12_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d12
d13_ :: Tidally => ControlPattern -> IO ()
d13_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d13
d14_ :: Tidally => ControlPattern -> IO ()
d14_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d14
d15_ :: Tidally => ControlPattern -> IO ()
d15_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d15
d16_ :: Tidally => ControlPattern -> IO ()
d16_ = ControlPattern -> IO ()
Tidally => ControlPattern -> IO ()
_d16

-- | See 'Sound.Tidal.Stream.streamGet'.
getState :: (Tidally) => String -> IO (Maybe Value)
getState :: Tidally => String -> IO (Maybe Value)
getState = Stream -> String -> IO (Maybe Value)
streamGet Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamSetI'.
setI :: (Tidally) => String -> Pattern Int -> IO ()
setI :: Tidally => String -> Pattern Int -> IO ()
setI = Stream -> String -> Pattern Int -> IO ()
streamSetI Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamSetF'.
setF :: (Tidally) => String -> Pattern Double -> IO ()
setF :: Tidally => String -> Pattern Double -> IO ()
setF = Stream -> String -> Pattern Double -> IO ()
streamSetF Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamSetS'.
setS :: (Tidally) => String -> Pattern String -> IO ()
setS :: Tidally => String -> Pattern String -> IO ()
setS = Stream -> String -> Pattern String -> IO ()
streamSetS Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamSetR'.
setR :: (Tidally) => String -> Pattern Rational -> IO ()
setR :: Tidally => String -> Pattern Time -> IO ()
setR = Stream -> String -> Pattern Time -> IO ()
streamSetR Stream
Tidally => Stream
tidal

-- | See 'Sound.Tidal.Stream.streamSetB'.
setB :: (Tidally) => String -> Pattern Bool -> IO ()
setB :: Tidally => String -> Pattern Bool -> IO ()
setB = Stream -> String -> Pattern Bool -> IO ()
streamSetB Stream
Tidally => Stream
tidal

xfade :: (Tidally) => ID -> ControlPattern -> IO ()
xfade :: Tidally => ID -> ControlPattern -> IO ()
xfade ID
i = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Time -> TransitionMapper
_xfadeIn Time
4) ID
i

xfadeIn :: (Tidally) => ID -> Time -> ControlPattern -> IO ()
xfadeIn :: Tidally => ID -> Time -> ControlPattern -> IO ()
xfadeIn ID
i Time
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Time -> TransitionMapper
_xfadeIn Time
t) ID
i

histpan :: (Tidally) => ID -> Int -> ControlPattern -> IO ()
histpan :: Tidally => ID -> Int -> ControlPattern -> IO ()
histpan ID
i Int
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Int -> TransitionMapper
_histpan Int
t) ID
i

wait :: (Tidally) => ID -> Time -> ControlPattern -> IO ()
wait :: Tidally => ID -> Time -> ControlPattern -> IO ()
wait ID
i Time
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Time -> TransitionMapper
_wait Time
t) ID
i

waitT :: (Tidally) => ID -> (Time -> [ControlPattern] -> ControlPattern) -> Time -> ControlPattern -> IO ()
waitT :: Tidally =>
ID -> TransitionMapper -> Time -> ControlPattern -> IO ()
waitT ID
i TransitionMapper
f Time
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (TransitionMapper -> Time -> TransitionMapper
_waitT TransitionMapper
f Time
t) ID
i

jump :: (Tidally) => ID -> ControlPattern -> IO ()
jump :: Tidally => ID -> ControlPattern -> IO ()
jump ID
i = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True TransitionMapper
_jump ID
i

jumpIn :: (Tidally) => ID -> Int -> ControlPattern -> IO ()
jumpIn :: Tidally => ID -> Int -> ControlPattern -> IO ()
jumpIn ID
i Int
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Int -> TransitionMapper
_jumpIn Int
t) ID
i

jumpIn' :: (Tidally) => ID -> Int -> ControlPattern -> IO ()
jumpIn' :: Tidally => ID -> Int -> ControlPattern -> IO ()
jumpIn' ID
i Int
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Int -> TransitionMapper
_jumpIn' Int
t) ID
i

jumpMod :: (Tidally) => ID -> Int -> ControlPattern -> IO ()
jumpMod :: Tidally => ID -> Int -> ControlPattern -> IO ()
jumpMod ID
i Int
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Int -> TransitionMapper
_jumpMod Int
t) ID
i

jumpMod' :: (Tidally) => ID -> Int -> Int -> ControlPattern -> IO ()
jumpMod' :: Tidally => ID -> Int -> Int -> ControlPattern -> IO ()
jumpMod' ID
i Int
t Int
pat = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Int -> Int -> TransitionMapper
_jumpMod' Int
t Int
pat) ID
i

mortal :: (Tidally) => ID -> Time -> Time -> ControlPattern -> IO ()
mortal :: Tidally => ID -> Time -> Time -> ControlPattern -> IO ()
mortal ID
i Time
lifespan Time
releasetime = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Time -> Time -> TransitionMapper
_mortal Time
lifespan Time
releasetime) ID
i

interpolate :: (Tidally) => ID -> ControlPattern -> IO ()
interpolate :: Tidally => ID -> ControlPattern -> IO ()
interpolate ID
i = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True TransitionMapper
_interpolate ID
i

interpolateIn :: (Tidally) => ID -> Time -> ControlPattern -> IO ()
interpolateIn :: Tidally => ID -> Time -> ControlPattern -> IO ()
interpolateIn ID
i Time
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Time -> TransitionMapper
_interpolateIn Time
t) ID
i

clutch :: (Tidally) => ID -> ControlPattern -> IO ()
clutch :: Tidally => ID -> ControlPattern -> IO ()
clutch ID
i = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True TransitionMapper
forall a. Time -> [Pattern a] -> Pattern a
_clutch ID
i

clutchIn :: (Tidally) => ID -> Time -> ControlPattern -> IO ()
clutchIn :: Tidally => ID -> Time -> ControlPattern -> IO ()
clutchIn ID
i Time
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Time -> TransitionMapper
forall a. Time -> Time -> [Pattern a] -> Pattern a
_clutchIn Time
t) ID
i

anticipate :: (Tidally) => ID -> ControlPattern -> IO ()
anticipate :: Tidally => ID -> ControlPattern -> IO ()
anticipate ID
i = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True TransitionMapper
_anticipate ID
i

anticipateIn :: (Tidally) => ID -> Time -> ControlPattern -> IO ()
anticipateIn :: Tidally => ID -> Time -> ControlPattern -> IO ()
anticipateIn ID
i Time
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
True (Time -> TransitionMapper
_anticipateIn Time
t) ID
i

forId :: (Tidally) => ID -> Time -> ControlPattern -> IO ()
forId :: Tidally => ID -> Time -> ControlPattern -> IO ()
forId ID
i Time
t = Stream -> Bool -> TransitionMapper -> ID -> ControlPattern -> IO ()
transition Stream
Tidally => Stream
tidal Bool
False (Time -> TransitionMapper
forall a. Time -> Time -> [Pattern a] -> Pattern a
_mortalOverlay Time
t) ID
i