The issue is that magic results in multiple solutions and different results. The patch should express which solution will be selected, not just which solution was selected.
How do other environments deal with this? (I'm not talking about message-driven schemes like pd/max with hot/cold inlets and trigger object, but signal flow schemes)
- Pd just complains "DSP loop detected (some tilde objects not scheduled)" as soon as you make a feedback connection, with an explicit delwrite~/delread~ as a solution.
- Max 6.1 makes the connection but stops processing without any notification (?)
- Max/gen~ (6.1) refuses to make a feedback connection without giving any other user feedback
- Nord modular/G2: hidden magic, the user cannot see or impact which choice is made.
- Others?
One solution could be a wire attribute ("buffered connection") that is set when creating a feedback connection, also visually distinguishable. But then there are also non-wired relations like tables and delaylines where execution order matters. Pd shows how to enforce execution order by creating dummy connections to a subpatch (3.audio.examples/G05.execution.order.pd) but I don't think this is very elegant.
Again, comments welcome!