# Noisecraft - anyone heard of it?

**URL:** <https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813>\
**Category:** General\
**Created:** [14 July 2023 09:45 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813 "2023-07-14T09:45:07Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [14 July 2023 09:45 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/1 "2023-07-14T09:45:07Z")

</div>

Hi There!

I just found this and was amazed: [https://noisecraft.app](https://noisecraft.app) for example: [bounding balls - NoiseCraft](https://noisecraft.app/1370) (press play top right)

Basically node-based visual-coding for synths! Its all open source and available at [github](https://github.com/maximecb/noisecraft).

Warning: very addictive for people who like viewing flows and now listening to them 🙂

---

<div class="post-metadata">

**Author:** ![Shan](https://avatars.discourse-cdn.com/v4/letter/s/7ab992/32.png) [@Shan](https://discourse.nodered.org/u/Shan)\
**Post date:** [14 July 2023 10:02 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/2 "2023-07-14T10:02:52Z")

</div>

Yeah node based flow programming is everywhere:

- [GitHub - jagenjo/litegraph.js: A graph node engine and editor written in Javascript similar to PD or UDK Blueprints, comes with its own editor in HTML5 Canvas2D. The engine can run client side or server side using Node. It allows to export graphs as JSONs to be included in applications independently.](https://github.com/jagenjo/litegraph.js)
- [Low-code development Total.js Flow - Total.js Platform](https://www.totaljs.com/flow/)
- [https://n8n.io](https://n8n.io)

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [14 July 2023 10:23 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/3 "2023-07-14T10:23:03Z")

</div>

> [@gregorius](#):
>
> Basically node-based visual-coding for synths

Modular synths have been like that since the late 60's i think 😉  
If you are into modular synths, I would highly recommend [vcvrack](https://vcvrack.com) (free).

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [14 July 2023 10:43 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/4 "2023-07-14T10:43:45Z")

</div>

> [@Shan](#):
>
> Yeah node based flow programming is everywhere:

Cheers for the links 👍

Interestingly of those 3 the only one where I got to a page where I could try out the product was litegraph but that got me to an [empty screen](https://tamats.com/projects/litegraph/editor/) - the other two were with signup (n8n) or "sorry our product is broken"-popup (total.js).

Probably the lesson is that a browser-based node-flow-visual-programming tool for profit-and-gain should have an working example page (without signup please!) 😉

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [14 July 2023 10:48 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/5 "2023-07-14T10:48:30Z")

</div>

> [@bakman2](#):
>
> If you are into modular synths, I would highly recommend [vcvrack](https://vcvrack.com) (free).

I keep bumping into them but never really stuck with me (modular synths). I enjoy the visual chaos of noisecraft, along with the sound and it runs in my browser!

I've played with [supercollider](https://supercollider.github.io/) and discovered my next time-sinkhole in the form of supercollider [node-red nodes](https://flows.nodered.org/node/node-red-contrib-music) ... thankfully noisecraft came inbetween!

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [19 July 2023 13:07 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/6 "2023-07-19T13:07:09Z")

</div>

To that list you can add [https://nodescript.dev/](https://nodescript.dev/) they have also have a github [NodeScript · GitHub](https://github.com/NodeScriptLang)

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [27 August 2023 08:27 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/7 "2023-08-27T08:27:30Z")

</div>

There is currently a discussion on [n8n on hacker news](https://news.ycombinator.com/item?id=37274052) with some more alternatives -

- [windmill.dev](https://www.windmill.dev/)
- [huginn](https://github.com/huginn/huginn)
- [activepieces](https://www.activepieces.com/)
- [parabola](https://parabola.io)

---

<div class="post-metadata">

**Author:** ![jackcarey](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jackcarey/32/61101_2.png) [@jackcarey](https://discourse.nodered.org/u/jackcarey)\
**Post date:** [27 August 2023 09:36 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/8 "2023-08-27T09:36:39Z")

</div>

You can also look into [TouchDesigner](https://derivative.ca/) and [NodeBox](https://www.nodebox.net/) that are also designed for low-code audio-visuals

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [27 August 2023 10:07 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/9 "2023-08-27T10:07:55Z")

</div>

Both look like they are inspired by [node programming in Blender](https://docs.blender.org/manual/en/2.79/render/blender_render/materials/nodes/introduction.html) which for me was always kind of confusing.

[rant]  
I think what Node-RED does right is the one-or-zero inputs and no typing of inputs/outputs - most node programming environments have types for their inputs, confusing me no end. Admittedly most use colours to distinguish types, so one learns red outputs can only go into red inputs (for example).

IMHO Node programming is confusing enough (for beginners) without having colour coded inputs/outputs. I personally hope Node-RED sticks to the grey one-or-zero concept.  
[/rant]

---

<div class="post-metadata">

**Author:** ![jackcarey](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/jackcarey/32/61101_2.png) [@jackcarey](https://discourse.nodered.org/u/jackcarey)\
**Post date:** [27 August 2023 11:32 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/10 "2023-08-27T11:32:23Z")

</div>

I think it really depends on the application as to whether an event-based or graph-based nodes are a better fit. IMO, graphs are better for introducing complex and simultaneous functionality, like in audio-visual or state-based systems. Event based applications _are_ easier to start with and they make sense for much more linear systems like IoT and industrial settings.

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [27 August 2023 14:43 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/11 "2023-08-27T14:43:46Z")

</div>

Thanks for that, I never thought of it like that. 👍

If I understand correctly, things like noisecraft are clock-based state machines - i.e. everything is synchronised to a clock and states change with the tick of the clock. So in a sense each wire is _always_ on and has some value that is read with the clock goes _tick_. In Blender I'd guess that would be frame counter.

While Node-RED is event-based and data-driven meaning that data flows when events happen otherwise the wires or pipes are empty or _off_. Node-RED describes action that should happen when something does happen!

Fun to think of seeing two identical flows yet their outcomes or meaning is completely different since one is event-driven and the other is a state machine!

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [27 August 2023 14:49 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/12 "2023-08-27T14:49:38Z")

</div>

And, just to confuse things further! Node-RED is not really flow-based at all! 😁

In that it only _appears_ to be flow-based since nothing is actually "flowing". The wire connections simply create data shared between connected nodes via an event function.

Least, that's what I _think_ happens. 🤣

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [27 August 2023 15:33 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/13 "2023-08-27T15:33:58Z")

</div>

That's why I see pipes and not wires 🙂 I keep thinking of Unix pipes... Where Yahoo pipes got its name from...

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [29 August 2023 08:53 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/14 "2023-08-29T08:53:59Z")

</div>

So I wrote my thoughts down in [pipes, wires & nodes](https://blog.openmindmap.org/blog/pipes-wires-nodes), for me it seems that visual programming and the representation of flows will become more confusing since they all _look_ the same but can be completely different.

Compared to textual programming language, one can _visually_ recognise the difference between lisp code and java code and thereby one knows what the underlying concepts of the program are: object oriented programming or list-based functional programming - this isn't possible in a visual programming world.

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [29 August 2023 15:34 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/15 "2023-08-29T15:34:55Z")

</div>

> [@gregorius](#):
>
> one can _visually_ recognise the difference between lisp code and java code

_You_ might be able to but I know a lot of people who wouldn't. 🤣 And I've seen plenty of Java code that might as well be Lisp!

> [@gregorius](#):
>
> object oriented programming or list-based functional programming

But how many people would know the difference in approach without doing some research if they'd not come across either language before?

So maybe we are over-thinking things here? I'm not convinced it matter that much as long as there is clear and accessible information on the basics of how the platform works and what the differences mean.

For example, my tongue-in-cheek explanation of Node-RED's approach really doesn't matter to most people - at least until they get into more complex concepts. That a message doesn't really "flow" is not important to start with, only that it appears to do so.

To me, I think the most important difference in approaches of different visual programming tools is whether the flow is linear/synchronous or asynchronous. Node-RED is asynchronous which is why only a single input port exists for each node. Most visual programming tools have multiple ports because the coupling between nodes is tight, not loose like Node-RED. So a node defines input variables that translate to input ports, 1 for each variable. Node-RED uses loose coupling with its "message" based approach.

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [29 August 2023 16:11 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/16 "2023-08-29T16:11:44Z")

</div>

> [@TotallyInformation](#):
>
> But how many people would know the difference in approach without doing some research if they'd not come across either language before?

Most people would literally not know how to use a keyboard - 8 billion, some 2 or more billion living in poverty who would never have seen a keyboard. Then probably another 2 billion who are barely surviving and are happy to know how to use a mobile phone. Of course, most people won't give a flying banana what we're discussing here 🙂

The point is not to reach everyone, the point is to leave bread crumbs for people who come along and start thinking about these things. Little bread crumbs to follow along the trail of learning Node-RED and discovering visual programming.

There isn't a _single_ approach to explaining Node-RED to others, and the more I try to explain Node-RED, the more I realise that Node-RED is _very_ complex because of its visual programming nature. But that makes it far better in explaining some things than a long text file with some obscure programming language. I also wrote about the [visual programming approach](https://blog.openmindmap.org/blog/visual-programming-and-ai) and how it comes far more naturally to _some_ people.

> [@TotallyInformation](#):
>
> To me, I think the most important difference in approaches of different visual programming tools is whether the flow is linear/synchronous or asynchronous. Node-RED is asynchronous which is why only a single input port exists for each node. Most visual programming tools have multiple ports because the coupling between nodes is tight, not loose like Node-RED. So a node defines input variables that translate to input ports, 1 for each variable. Node-RED uses loose coupling with its "message" based approach.

Exactly, another approach to explain Node-RED 👍 For me I wouldn't see it like you but I understand what your saying. If someone comes along and reads that and suddenly they understand Node-RED, perfect - that's my goal: spreading the understanding of Node-RED and visual programming.

I have a completely different approach to Node-RED than you - that's why I build [RSS to node convertors](https://flowhub.org/f/e02ba6e534f7a0f4) - totally obscure, totally questionable what might be the purpose but totally possible with Node-RED!

One final thing I did today was to explicitly convert [Python to Node-RED](https://flowhub.org/f/91197129247b83b8) - fun experiment, don't know about what is better but I do know: Node-RED flow is visual _and_ code, that's what UML wanted to be!

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [29 August 2023 16:17 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/17 "2023-08-29T16:17:56Z")

</div>

> [@gregorius](#):
>
> don't know about what is better but I do know

Yes, I wish there were a Python version of Node-RED. 🙂 I know so many data scientists and analysts who would absolutely love it.

I've always been annoyed that Python and JavaScript have different strengths that overlap but aren't quite aligned.

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [29 August 2023 16:57 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/18 "2023-08-29T16:57:32Z")

</div>

Literally it won't be that hard to build a basic python interpretor for a node Red json file. You just need to emulate the basic nodes (change, switch, join and split) and integrate v8 into python for the function nodes 😉

A weekend tops!

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [29 August 2023 17:23 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/19 "2023-08-29T17:23:36Z")

</div>

> [@gregorius](#):
>
> A weekend tops!

I'll await with baited breath. 🤣

In the meantime, I need to think some more about better ways to visually process tabular data in the browser linked to Node-RED (and uibuilder of course!).

Some thoughts (sorry going well off-topic here. If there is further interest in a discussion, we can take to another thread).

- An editable table widget for the browser where data changes are sent back to Node-RED.

- Some DataFrame style tools for manipulating 2d tabular JSON data.

- A live JavaScript interpreter in the browser that would let users do Jupyter notebook style interactions with browser data.

More stuff to add to the uibuilder backlog I guess!

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [30 August 2023 15:11 UTC](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813/20 "2023-08-30T15:11:40Z")

</div>

> [@TotallyInformation](#):
>
> I'll await with baited breath. 🤣

I see what you mean:

> [@Node.py - Python for Node-RED?](https://discourse.nodered.org/t/node-py-python-for-node-red/53838):
>
> I'm new to Node-RED; my personal software preferences tend toward Python, not Java script. Is there a way to integrate Python into Node-RED for use in function blocks in lieu of Java script?

Having read that discussion I might stay away from a computer on the weekend! It would really make more sense to create a Node-RED.py and not Node.py, i.e. completely build a new visual programming tool (as you suggested in that thread). It's only a pity since the frontend would have to be reimplemented in JS anyway.

What I was thinking of was a simple head-less python engine for interpreting _some_ of the core nodes based on being sent a flows.json from the frontend. I would do that if there was a) a specific use case with b) a specific limited number of nodes involved, i.e., the core logic nodes. But since I don't have a use-case, the weekend is saved!

> [@TotallyInformation](#):
>
> An editable table widget for the browser where data changes are sent back to Node-RED.

How does google sheets do that? They seem to have it down pat. Are you planning to have parallel updates of data by multiple users? Or just one user manipulating the data? O(1) or O(n) headaches!

[Next page](https://discourse.nodered.org/t/noisecraft-anyone-heard-of-it/79813.md?page=2)
