#graph-node #node #graph #directed-graph #graphical #programming

gantz

A crate for creating and evaluating executable directed graphs at runtime

1 unstable release

Uses old Rust 2015

0.1.0 Jun 6, 2018

#30 in #graphical

MIT/Apache

14KB
153 lines

gantz Build Status Crates.io Crates.io docs.rs

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.

Goals

  • 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.
  • Push evaluation through the graph.
  • Pull evaluation through the graph.
  • 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.

License

Licensed under either of

at your option.

Contributions

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.

Dependencies

~3MB
~62K SLoC