Error when booting from Atom

I'm having difficulty getting TidalCycles to install/run and can't find an answer online. I'm dying to play around with this - any help would be greatly appreciated. I'm running Windows 10. I get the following error when I try to boot in Atom:

t> error: expecting a single import declaration

 Not in scope: `oLatency'

 Not in scope: `oAddress'

 Not in scope: `oPort'

 Not in scope: `cFrameTimespan'


    Variable not in scope: streamReplace :: t28 -> t

 Variable not in scope: tidal


    Variable not in scope: streamHush :: t27 -> t

 Variable not in scope: tidal


    * Variable not in scope: streamList :: t26 -> t
    * Perhaps you meant `readList' (imported from Prelude)

 Variable not in scope: tidal


    Variable not in scope: streamMute :: t25 -> t

 Variable not in scope: tidal


    Variable not in scope: streamUnmute :: t24 -> t

 Variable not in scope: tidal


    Variable not in scope: streamSolo :: t23 -> t

 Variable not in scope: tidal


    Variable not in scope: streamUnsolo :: t22 -> t

 Variable not in scope: tidal


    Variable not in scope: streamOnce :: t21 -> t

 Variable not in scope: tidal


    Variable not in scope: streamFirst :: t20 -> t

 Variable not in scope: tidal


    Variable not in scope: streamNudgeAll :: t19 -> t

 Variable not in scope: tidal


    Variable not in scope: streamAll :: t18 -> t

 Variable not in scope: tidal


    Variable not in scope: streamResetCycles :: t17 -> t

 Variable not in scope: tidal


    * Variable not in scope: cps :: a -> b0
    * Perhaps you meant `cos' (imported from Prelude)


    Variable not in scope:
      transition
        :: t16
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t15
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t14
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t13
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t12
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t11
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t10
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t9
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t8
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t7
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t6
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t5
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t4
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.Pattern a2]
               -> Sound.Tidal.Pattern.Pattern a2)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t3
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.Pattern a1]
               -> Sound.Tidal.Pattern.Pattern a1)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t2
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t1
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.ControlPattern]
               -> Sound.Tidal.Pattern.ControlPattern)
           -> t
           -> t41

 Variable not in scope: tidal


    Variable not in scope:
      transition
        :: t0
           -> Bool
           -> (Sound.Tidal.Time.Time
               -> [Sound.Tidal.Pattern.Pattern a0]
               -> Sound.Tidal.Pattern.Pattern a0)
           -> t
           -> t41

 Variable not in scope: tidal


    * Variable not in scope: (|<) :: t -> t29 -> b1
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t29


    * Variable not in scope: (|<) :: t -> t30 -> b2
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t30


    * Variable not in scope: (|<) :: t -> t31 -> b3
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t31


    * Variable not in scope: (|<) :: t -> t32 -> b4
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t32


    * Variable not in scope: (|<) :: t -> t33 -> b5
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t33


    * Variable not in scope: (|<) :: t -> t34 -> b6
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t34


    * Variable not in scope: (|<) :: t -> t35 -> b7
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t35


    * Variable not in scope: (|<) :: t -> t36 -> b8
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t36


    * Variable not in scope: (|<) :: t -> t37 -> b9
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t37


    * Variable not in scope: (|<) :: t -> t38 -> b10
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t38


    * Variable not in scope: (|<) :: t -> t39 -> b11
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t39


    * Variable not in scope: (|<) :: t -> t40 -> b12
    * Perhaps you meant one of these:
        `||' (imported from Prelude), `<' (imported from Prelude)


    Variable not in scope: orbit :: Integer -> t40


    Variable not in scope: streamSetI :: t4 -> t

 Variable not in scope: tidal


    Variable not in scope: streamSetF :: t3 -> t

 Variable not in scope: tidal


    Variable not in scope: streamSetS :: t2 -> t

 Variable not in scope: tidal


    Variable not in scope: streamSetR :: t1 -> t

 Variable not in scope: tidal


    Variable not in scope: streamSetB :: t0 -> t

 Variable not in scope: tidal


    Variable not in scope: tidal_version :: [Char]

Hi @ProllyEdible,

Hm, I think probably the tidal library didn't install properly.

What does it say when you run this in atom (after trying to boot tidal, paste it in and run it with shift and enter):

:! cabal v1-install tidal

Hi Alex,

Thanks for the quick response! When I run that line in Atom it returns:

t> cabal: unrecognised command: v1-install (try --help)

What's your cabal --version? Recent one, that has both v1 and v2 commands is cabal-install version 3.4.0.0. You can try just cabal install or you can try updating cabal with cabal install Cabal cabal-install.

Also you can check which tidal version you have (if any) with

$ ghc-pkg list | grep tidal
    tidal-1.7.4

Hi @ProllyEdible,

Any luck booting Tidal & making sound? I got pretty much the same error when trying to boot in Atom, and when running the line suggested by @yaxu.

If cabal v1-install tidal doesn't work, then cabal install tidal should.

Please share the exact error you get though - small differences can count for a lot..

Hey yaxu,

Thanks for the response, that's a good point! Here's the result when trying to boot Tidal from Atom:

GHCi, version 8.4.3: http://www.haskell.org/ghc/ :? for help
Prelude> Prelude>
>:5:26: error:
Variable not in scope: cpsUtils' :: IO (a0, b0, c0)
:7:13: error:
Variable not in scope: dirtSetters :: t0 -> IO (a0, b0)
:7:25: error:
* Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context)
eractive>:8:13: error:
Variable not in scope: dirtSetters :: t0 -> IO (a0, b0) :8:25: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :9:13: error: Variable not in scope: dirtSetters :: t0 -> IO (a0, b0) :9:25: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :10:13: error: Variable not in scope: dirtSetters :: t0 -> IO (a0, b0) :10:25: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :11:13: error: Variable not in scope: dirtSetters :: t0 -> IO (a0, b0) :11:25: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :12:13: error: Variable not in scope: dirtSetters :: t0 -> IO (a0, b0) :12:25: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :13:13: error: Variable not in scope: dirtSetters :: t0 -> IO (a0, b0) :13:25: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :14:13: error: Variable not in scope: dirtSetters :: t0 -> IO (a0, b0) :14:25: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :15:13: error: Variable not in scope: dirtSetters :: t0 -> IO (a0, b0) :15:25: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :17:12: error: Variable not in scope: superDirtSetters :: t0 -> IO (a0, b0) :17:29: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :18:12: error: Variable not in scope: superDirtSetters :: t0 -> IO (a0, b0) :18:29: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :19:12: error: Variable not in scope: superDirtSetters :: t0 -> IO (a0, b0) :19:29: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :20:12: error: Variable not in scope: superDirtSetters :: t0 -> IO (a0, b0) :20:29: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :21:12: error: Variable not in scope: superDirtSetters :: t0 -> IO (a0, b0) :21:29: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :22:12: error: Variable not in scope: superDirtSetters :: t0 -> IO (a0, b0) :22:29: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :23:12: error: Variable not in scope: superDirtSetters :: t0 -> IO (a0, b0) :23:29: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :24:12: error: Variable not in scope: superDirtSetters :: t0 -> IO (a0, b0) :24:29: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context) :25:12: error: Variable not in scope: superDirtSetters :: t0 -> IO (a0, b0) :25:29: error: * Variable not in scope: getNow * Perhaps you meant `getN' (imported from Sound.Tidal.Context)
:29:31: error:
* Variable not in scope: d1 :: Pattern a0 -> m b0 * Perhaps you meant `dt' (imported from Sound.Tidal.Context) :29:34: error:
* Variable not in scope: d2 :: Pattern a0 -> m b0
* Perhaps you meant `dt' (imported from Sound.Tidal.Context) :29:37: error:
* Variable not in scope: d3 :: Pattern a0 -> m b0 * Perhaps you meant `dt' (imported from Sound.Tidal.Context) :29:40: error:
* Variable not in scope: d4 :: Pattern a0 -> m b0 * Perhaps you meant `dt' (imported from Sound.Tidal.Context) :29:43: error: * Variable not in scope: d5 :: Pattern a0 -> m b0 * Perhaps you meant `dt' (imported from Sound.Tidal.Context) :29:46: error:
* Variable not in scope: d6 :: Pattern a0 -> m b0
* Perhaps you meant `dt' (imported from Sound.Tidal.Context) :29:49: error:
* Variable not in scope: d7 :: Pattern a0 -> m b0 * Perhaps you meant `dt' (imported from Sound.Tidal.Context) :29:52: error:
* Variable not in scope: d8 :: Pattern a0 -> m b0 * Perhaps you meant `dt' (imported from Sound.Tidal.Context) :29:55: error:
* Variable not in scope: d9 :: Pattern a0 -> m b0 * Perhaps you meant `dt' (imported from Sound.Tidal.Context) :29:58: error: * Variable not in scope: c1 :: Pattern a0 -> m b0 * Perhaps you meant one of these: `cB' (imported from Sound.Tidal.Context),
`cF' (imported from Sound.Tidal.Context), `cI' (imported from Sound.Tidal.Context) eractive>:29:61: error:
* Variable not in scope: c2 :: Pattern a0 -> m b0 * Perhaps you meant one of these: `cB' (imported from Sound.Tidal.Context), `cF' (imported from Sound.Tidal.Context), `cI' (imported from Sound.Tidal.Context) :29:64: error:
* Variable not in scope: c3 :: Pattern a0 -> m b0 * Perhaps you meant one of these: `cB' (imported from Sound.Tidal.Context),
`cF' (imported from Sound.Tidal.Context), `cI' (imported from Sound.Tidal.Context) :29:67: error:
* Variable not in scope: c4 :: Pattern a0 -> m b0 * Perhaps you meant one of these: `cB' (imported from Sound.Tidal.Context), `cF' (imported from Sound.Tidal.Context), `cI' (imported from Sound.Tidal.Context) :29:70: error: * Variable not in scope: c5 :: Pattern a0 -> m b0
* Perhaps you meant one of these: `cB' (imported from Sound.Tidal.Context), `cF' (imported from Sound.Tidal.Context), `cI' (imported from Sound.Tidal.Context) active>:29:73: error:
* Variable not in scope: c6 :: Pattern a0 -> m b0 * Perhaps you meant one of these: `cB' (imported from Sound.Tidal.Context), `cF' (imported from Sound.Tidal.Context), `cI' (imported from Sound.Tidal.Context) :29:76: error:
* Variable not in scope: c7 :: Pattern a0 -> m b0 * Perhaps you meant one of these: `cB' (imported from Sound.Tidal.Context),
`cF' (imported from Sound.Tidal.Context), `cI' (imported from Sound.Tidal.Context) :29:79: error:
* Variable not in scope: c8 :: Pattern a0 -> m b0 * Perhaps you meant one of these: `cB' (imported from Sound.Tidal.Context), `cF' (imported from Sound.Tidal.Context), `cI' (imported from Sound.Tidal.Context) :29:82: error:
* Variable not in scope: c9 :: Pattern a0 -> m b0 * Perhaps you meant one of these: `cB' (imported from Sound.Tidal.Context), `cF' (imported from Sound.Tidal.Context), `cI' (imported from Sound.Tidal.Context) :30:17: error: Variable not in scope: hush :: m a0 tidal> tidal>

And here's the result when I use :! cabal install tidal:

tidal> Prelude Sound.Tidal.Context| Prelude Sound.Tidal.Context| Resolving dependencies...
All the requested packages are already installed:
tidal-1.7.7 Use --reinstall if you want to reinstall anyway. tidal>

Appreciate any help you can offer :slight_smile:

Oh, I should also mention I've installed and got tidal working a few years ago, which I know has been an issue with other reinstall attempts. I'm pretty sure I uninstalled all the components & deleted old files before this second installation round, though.

Hi @blizzy to me it looks like tidal is installed fine, but that the 'BootTidal.hs' file that atom uses to start tidal is out of date.

This could be because the atom 'tidalcycles' plugin is out of date, so try upgrading that first.
Alternatively it could be that the atom tidalcycles plugin is configured to point to a particular BootTidal.hs that is out of date, if so you could locate and clear that settling.. But I think it's probably the former.

1 Like

Hey @yaxu this worked! Thanks so so much, appreciate you taking the time to help out a newbie (⌒‿⌒)

1 Like