packages feed

LambdaDesigner-0.1.0.0: README.md

# λ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](http://derivative.ca/wiki099/index.php?title=Introduction_to_Python_Tutorial#Importing_Modules)
* Haskell (only tested with [haskellstack](https://docs.haskellstack.org/en/stable/README/))

### Installing

Clone or download [LambdaDesigner-sample](https://github.com/ulyssesp/lambdadesigner-sample).

## Using

### Setup

This takes you through [`Main.hs`](https://github.com/ulyssesp/LambdaDesigner-sample/blob/master/app/Main.hs). Note that you must be running [`LambdaDesigner.toe`](https://github.com/ulyssesp/LambdaDesigner-sample/blob/master/TD/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