Skip to content
A library for creating and evaluating executable directed graphs at runtime.
Branch: master
Clone or download
mitchmindtree Merge pull request #37 from mitchmindtree/state
Early implementation of support for Node State
Latest commit 1a8bfc6 Jun 17, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
gantz-derive Add missing README key to gantz-derive Cargo.toml Jun 6, 2018
tests Early implementation of support for Node State Jun 17, 2019
.gitignore Begin work on nodes-as-crates approach Mar 20, 2019
.travis.yml Make travis enforce standard formatting as per rustfmt defaults Jun 15, 2019
Cargo.toml Add support for dynamically compiling gantz node dylibs Mar 24, 2019
LICENSE-APACHE Add MIT and Apache-2 licenses Jun 6, 2018
LICENSE-MIT Add MIT and Apache-2 licenses Jun 6, 2018

gantz Build Status

A crate for creating and evaluating executable directed graphs at runtime. In other words, gantz allows users to compose programs described by interconnected nodes on the fly.

Gantz is inspired by a desire for a more flexible, high-performance, open-source alternative to graphical programming environments such as Max/MSP, Touch Designer, Houdini and others. Named after gantz graf.


  • A simple way of creating custom nodes from rust code using derive.
  • Solve handling of generics and trait objects within custom nodes.
  • Serialize and Deserialize implementations via serde and typetag.
  • Project workspace creation.
  • Push evaluation through the graph.
  • Pull evaluation through the graph (#16).
  • Stateless node codegen.
  • Stateful node codegen #19.
  • Conditional evaluation #21.
  • Provide a suite of commonly required "std" nodes out of the box:
    • Primitive types and casts.
    • Mappings to std::ops: Add, Sub, Mul, Div, etc.
    • std::fmt nodes: Debug, PrettyDebug, Display.
    • Vec constructors and methods.
    • String constructors and methods.
    • Conversion functions: Into, From, FromStr, FromIterator, etc.
    • A DeStructure node that allows de-structuring types into their fields.
    • Timer/Clock node with push and pull variants. Useful for testing rates.

After each of these goals are met, gantz will be integrated into nannou where it will be extended with higher-level tools including:

  • A GUI for creating, editing and saving graphs and custom nodes at runtime.
  • Node packaging and sharing tools.
  • A suite of nodes providing an interface to nannou's cross-platform support for a wide range of protocols and I/O:
    • Windowing and input events.
    • Phasers and signals.
    • Audio input, output, processing and device management.
    • 2D/3D geometry, graphics and shaders.
    • Video input and processing.
    • Networking (UDP and TCP).
    • OSC.
    • Lighting, lasers & control: DMX (via sACN), CITP (& CAEX), Ether-Dream.
    • GPU general compute.
    • General file reading and writing.


Licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

You can’t perform that action at this time.