A type-safe EDSL for TouchDesigner written in Haskell.

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed by Ulysses Popple


A type-safe EDSL for TouchDesigner written in Haskell. Instead of connecting nodes by hand, use the power of algebraic data types to program TouchDesigner projects in Haskell.

Getting Started


  • TouchDesigner ** With dictdiffer installed. You can pip install dictdiffer and then make sure TouchDesigner can see that module by following the TouchDesigner tutorial
  • Haskell (only tested with haskellstack)


Clone or download LambdaDesigner-sample.



This takes you through Main.hs. Note that you must be running LambdaDesigner.toe to see the results of running code.

The first thing you need to do is grab a reference to the runner.

topRunner :: IO ( Tree TOP -> IO () )

main = do
  r <- topRunner

This will let us run a Tree TOP which will show up as an output connector on the lambda COMP in TouchDesigner. Lets see this happening by creating a movieFileIn top with the sample image.

main = do
  r <- topRunner
  r $ movieFileIn (bstr "app.samplesFolder+'/Map/Banana.tif'")

We have something we can run!

$ stack build
$ stack exec LamdaDesigner-sample-exe

Take a look at it running in TouchDesigner! To experiment with different node types check out the . Not every TouchDesigner node is represented yet, but the most common ones are there.

If you’d

comments powered byDisqus