I'm making a node-based language for a youtube video. This is my current plan:
It's all about 'pointing'.
In the engine, there are various different types of arrow. And all of these arrows can 'fire' in their own way. For example, some of them fire when you click on them. Some of them fire when they move in a cellular automata grid.
When an arrow fires, it does something. For example, some arrows make a noise. Some arrows create more arrows.
When an arrow fires, it also fires anything else that it points to. It could point to just one other arrow, or many, or even itself.
This 'firing' happens instantly. An arrow fires on the same beat as what it points to.
But you can change the connection, and make it fire one beat later instead. This lets you set up chains of events. One arrow fires, then the next, then the next. You can make loops with this quite easily. Just point an arrow back to itself at some point.
Here's the fun bit: Just like you can make an arrow fire one beat later, you can also make it fire one beat earlier. An arrow in the future can make an arrow fire in the past. This seems to break the rules of causation! But it doesn't, and it's possible, and I'm really excited about it.