GithubHelp home page GithubHelp logo

justinplittle / bonsai Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bonsai-rx/bonsai

0.0 1.0 0.0 7.91 MB

The compiler, IDE, and standard library for the Bonsai visual programming language for reactive systems

Home Page: https://bonsai-rx.org/

License: MIT License

C# 98.81% Rich Text Format 1.16% PowerShell 0.03%

bonsai's Introduction

BONSAI is an open-source visual programming language for data stream processing built on top of Rx.NET. With BONSAI you tell your computer what to do not through long listings of text but by manipulating graphical elements in a workflow. Like in Rx, workflow elements in BONSAI represent asynchronous streams of data which can be connected together to perform complex operations.

A quick intro

The main goal of BONSAI is to make it easier to write programs that combine the acquisition and processing of many heterogeneous streams of data. These data streams can come from a variety of devices, including cameras, microphones, embedded microcontrollers, the network or files in your hard drive. BONSAI includes a variety of packages that take care of the tedious work of setting up and extracting data from all these devices.

Included in BONSAI are various algorithms for image and digital signal processing that allow you to extract information from these raw data streams. Parameters can be manipulated and altered online using property pages and each processing step can be independently visualized while the workflow is running. It is also possible to change these parameters dynamically by using the output of other elements.

Finally, BONSAI also includes several modules that allow you to specify useful side effects you might want to achieve with the processed data, such as saving it to a file, actuating a servomotor, or playing sound through the speakers. It is even possible to organize the message passing logic of BONSAI to design reactive asynchronous state machines to implement control procedures.

Under the hood

BONSAI is developed entirely in C# and one of its main features is extensibility and interoperability with the rest of the .NET framework and other Rx applications. In fact, every BONSAI module is just a standard C# class exposing Observable methods. This means that you can reference every single BONSAI package in your standard .NET application and just call the code as you would with any other library. There is no extra runtime.

In its visual environment, BONSAI makes use of attribute metadata, type inference and expression trees to automatically generate MSIL code that implements your design. This has the consequence that running a BONSAI workflow is as fast as if you wrote the code yourself!

It is very easy to extend BONSAI with your own modules. There is no need to learn yet another API as BONSAI uses entirely Rx under the hood. If you are familiar with programming using Rx or LINQ you're good to go. After you've created your package just upload it to the NuGet gallery and you will be sharing it with the whole BONSAI community using the integrated package manager.

bonsai's People

Contributors

glopesdev avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.