Broken tidal after update

Hi,

After updating linux and tidal, I can’t get tidal to work anymore. I hope someone here can help me.
I have tried reinstalling tidal versions 1.4.0 and 1.4.3, and installing the full haskell platform but to no avail.

Launching from Emacs gives:

GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help

Prelude> syntax: :script
Prelude>
:2:1: error: Variable not in scope: ghc

:2:5: error: Variable not in scope: pkg

:2:10: error: Variable not in scope: command :: [a]

:2:18: error:
• Variable not in scope: line :: t0 -> ([Char] -> a0) -> [a]
• Perhaps you meant ‘lines’ (imported from Prelude)

:2:23: error: Variable not in scope: syntax
Prelude>
:3:27: error:
• Syntax error on 'ghc
Perhaps you intended to use TemplateHaskell or TemplateHaskellQuotes
• In the Template Haskell quotation 'ghc
Prelude>

This is the output I get from lauching tidal from the command line:

GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help

:8:26: error:
Variable not in scope: cpsUtils’ :: IO (t0, t1, t2)

:10:12: error:
Variable not in scope: superDirtSetters :: t2 -> IO (t0, t1)

:10:29: error: Variable not in scope: getNow

:11:12: error:
Variable not in scope: superDirtSetters :: t2 -> IO (t0, t1)

:11:29: error: Variable not in scope: getNow

:12:12: error:
Variable not in scope: superDirtSetters :: t2 -> IO (t0, t1)

:12:29: error: Variable not in scope: getNow

:13:12: error:
Variable not in scope: superDirtSetters :: t2 -> IO (t0, t1)

:13:29: error: Variable not in scope: getNow

:14:12: error:
Variable not in scope: superDirtSetters :: t2 -> IO (t0, t1)

:14:29: error: Variable not in scope: getNow

:15:12: error:
Variable not in scope: superDirtSetters :: t2 -> IO (t0, t1)

:15:29: error: Variable not in scope: getNow

:16:12: error:
Variable not in scope: superDirtSetters :: t2 -> IO (t0, t1)

:16:29: error: Variable not in scope: getNow

:17:12: error:
Variable not in scope: superDirtSetters :: t2 -> IO (t0, t1)

:17:29: error: Variable not in scope: getNow

:18:12: error:
Variable not in scope: superDirtSetters :: t2 -> IO (t0, t1)

:18:29: error: Variable not in scope: getNow

:19:14: error:
Variable not in scope: superDirtSetters :: t2 -> IO (t0, t1)

:19:31: error: Variable not in scope: getNow

:21:13: error:
Variable not in scope: dirtSetters :: t2 -> IO (t0, t1)

:21:25: error: Variable not in scope: getNow

:22:13: error:
Variable not in scope: dirtSetters :: t2 -> IO (t0, t1)

:22:25: error: Variable not in scope: getNow

:23:13: error:
Variable not in scope: dirtSetters :: t2 -> IO (t0, t1)

:23:25: error: Variable not in scope: getNow

:24:13: error:
Variable not in scope: dirtSetters :: t2 -> IO (t0, t1)

:24:25: error: Variable not in scope: getNow

:25:13: error:
Variable not in scope: dirtSetters :: t2 -> IO (t0, t1)

:25:25: error: Variable not in scope: getNow

:26:13: error:
Variable not in scope: dirtSetters :: t2 -> IO (t0, t1)

:26:25: error: Variable not in scope: getNow

:27:13: error:
Variable not in scope: dirtSetters :: t2 -> IO (t0, t1)

:27:25: error: Variable not in scope: getNow

:28:13: error:
Variable not in scope: dirtSetters :: t2 -> IO (t0, t1)

:28:25: error: Variable not in scope: getNow

:29:13: error:
Variable not in scope: dirtSetters :: t2 -> IO (t0, t1)

:29:25: error: Variable not in scope: getNow

:30:15: error:
Variable not in scope: dirtSetters :: t2 -> IO (t0, t1)

:30:27: error: Variable not in scope: getNow

:33:31: 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)

:33:34: 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)

:33:37: 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)

:33:40: 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)

:33:43: 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)

:33:46: 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)

:33:49: 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)

:33:52: 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)

:33:55: 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)

:33:58: error:
• Variable not in scope: c10 :: Pattern a0 -> m b0
• Perhaps you meant one of these:
‘cB0’ (imported from Sound.Tidal.Context),
‘cF0’ (imported from Sound.Tidal.Context),
‘cI0’ (imported from Sound.Tidal.Context)

:33:62: error:
Variable not in scope: d1 :: Pattern a0 -> m b0

:33:65: error:
Variable not in scope: d2 :: Pattern a0 -> m b0

:33:68: error:
Variable not in scope: d3 :: Pattern a0 -> m b0

:33:71: error:
Variable not in scope: d4 :: Pattern a0 -> m b0

:33:74: error:
Variable not in scope: d5 :: Pattern a0 -> m b0

:33:77: error:
• Variable not in scope: d6 :: Pattern a0 -> m b0
• Perhaps you meant ‘Chords.m6’ (imported from Sound.Tidal.Chords)

:33:80: error:
Variable not in scope: d7 :: Pattern a0 -> m b0

:33:83: error:
Variable not in scope: d8 :: Pattern a0 -> m b0

:33:86: error:
• Variable not in scope: d9 :: Pattern a0 -> m b0
• Perhaps you meant ‘Chords.m9’ (imported from Sound.Tidal.Chords)

:33:89: error:
Variable not in scope: d10 :: Pattern a0 -> m b0

:34:17: error: Variable not in scope: hush :: m a0

Hi @Orcus , I think you need to update your tidal.el. You can get the latest version here: https://github.com/tidalcycles/Tidal/blob/master/tidal.el

(I would stick with tidal 1.4.3, it has some bug fixes over 1.4.0)

Thanks for your answer, but I already had installed tidal 1.4.3 and the latest tidal.el.
The version of my haskell-mode is 16.1-3. I do however run emacs 25.2.2, could that be a problem?

All the installation checks on https://tidalcycles.org/index.php/Troubleshooting_a_Tidal_install check out fine.

Now that I think of it, for debugging I also tried vim-tidal which gives the errors reported above.

[Edit] I now get "Prelude> Some flags have not been recognized: prompt-cont, " in the tidal buffer

[Edit] I installed atom, and tidal works fine in it. My best guess is that upgrading Emacs from 24 to 25 was the problem.

It’ll either be loading an old tidal.el, or an old BootTidal.hs . I think the former.

I am afraid that is not the cause. I have searched my entire system for versions of tidal.el and BootTidal.hs.

My tidal.el in use in Emacs is the same as from the tidal 1.4.3 source, and my BootTidal.hs is the same as the one supplied with the Atom package. Both checked with ediff.

[Edit spelling]

Something along those lines is wrong. E.g. cpsUtils’ has not been present in tidal for some time.

The enormous list of messages is gone, including the cpsUtils message.

Even after forcing the load of the correct tidal.el, instead I get this output in the tidal buffer:

GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help
Prelude> Some flags have not been recognized: prompt-cont, 
Prelude| Prelude| Prelude| 

And running a command shows the tidal commands are not defined:

cps(160/60)

<interactive>:3:1: error:
    • Variable not in scope: cps :: Double -> t
    • Perhaps you meant ‘cos’ (imported from Prelude)

Inspecting the variable tidal-boot-script-path in Emacs reveals that indeed BootTidal.hs version 1.4.3. is used:

tidal-boot-script-path is a variable defined in ‘tidal.el’.
Its value is
"/home/user/.cabal/share/x86_64-linux-ghc-8.0.2/tidal-1.4.3/BootTidal.hs"

I got it solved by commenting out the line

– :set prompt-cont “”

in BootTidal.hs. Then the entire file loads and it works!

Still weird however that this flag is not recognised.

2 Likes

thanks, had the same issue on mac os. working fine with your fix !

Hi! I have the same problem but commenting out the line :set prompt-cont “” didn’t work. I also updated the plugin and the tidal library.

I still get this:

https://pastebin.com/KJmKQqsR

Unfortunately @cavece there’s a bug in haskell which means it doesn’t cope with spaces in folder names.
If you copied the boottidal.hs file into a new folder without spaces anywhere e.g. C:\tidal, then changed the boottidal.hs location setting in the preferences for the TidalCycles atom plugin to point there e.g. C:\tidal\BootTidal.hs, then it should work.