MyNixOS website logo
Description

A type-safe EDSL for TouchDesigner written in Haskell.

TouchDesigner nodes written as functions in Haskell and sent to TouchDesigner as json.

λDesigner

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

Prerequisites

  • 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)

Installing

Clone or download LambdaDesigner-sample.

Using

Setup

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.

Metadata

Version

0.1.0.0

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows