Macros do not get updated - v4031.2

Hi everyone, I noticed this behaviour that sort of defeats the usage of macros.

  1. create a macro
  2. use it twice in the graph
  3. edit the macro by entering it from one of the two nodes deployed, make some changes
  4. only the macro node that you actually edited will present the changes, the other node is unaffected

The only way to use the edited macro is to re-deploy it in the graph! am I doing something wrong?

1 Like

If I understand correctly, that’s expected behavior.

Once you edit the contents of a macro, it’s essentially a new macro. The one in your library, as well as other ones in the graph aren’t instances, they are supposed to stay the same.

Solution: Copy and paste the edited macro node using windows shortcuts (Ctrl+C → Ctrl+V). Then just replace others with the copies, elsewhere in your graph. Should work for your particular use case. If you want to use it multiple times, better to save the edited copy to your library as well. Just remember to rename the macro, to avoid an overwrite.

Well, that’s not a macro then, it’s a group of nodes (and a total disappointment). Just imagine replacing lots of macros, each with its own inputs, outputs and parameters…

Not per se, but I’m not quite sure you understand the macro principle in World Machine, I’m not familiar with how macros work in other programs. It’s indeed not really made to be tweaked internally afterwards, but rather, when creating a macro, you expose a set of parameters, in the macro’s config. Then you can alter a select few settings of the macro, and those settings can be copied form one macro to another (ctrl + shift + c → ctrl + shift + v).

If you want to change the internals of the macro, so changing the nodes inside, doing some rewiring, you edit a single instance of that macro, and not all of them at once.

It would make for an interesting feature to allow that behaviour! @Stephen would that be possible? To have macros “sync”?


The point of a macro, in any software, is to make a set of instructions repeatable with a single input. That is exactly what this does. I think where you’re getting tripped up is how you’re thinking of the device itself. It’s best to think of the device that is placed on the graph as the result of the macro. The macro itself is less the device, and more a set of instructions that say “Create a container that holds these devices connected in this way with these parameters”. When you go in to edit that macro device, you are not editing the macro itself, but the devices created by the macro. To edit the actual macro, such that every instance is updated, you would have to edit the internals of the macro, then resave the macro device, and then possibly reload the project. Which raises a question, actually; are you using macro devices that you’ve saved to your macro library, or are you creating an empty macro device, adding devices inside, and reusing the same macro device?

All that being said, as @HYLK has mentioned, you may not be using the Macro system “correctly” if you find yourself diving into the internals often. If the only edits to the macro you are making are parameters within the devices, those parameters should be exposed in the macro device, removing any need to dive into the internals of the device. It could be helpful for you to post a project file with at least one macro not behaving in the way you expect. We could all take a look at it and help more.

1 Like

Ah, it seems this is not the same issue I had. I did a global device update on an old file I am updating, but the thing that prompted me to do it was the obsolete devices inside the macros. Those were not updated, probably for the same reason ilbiffi’s changes did not propagate in the macro library and other instances in his world file. If macros could be changed like that, it could change the results of the worlds previously built with the original version.

I just made the changes manually and updated my library version so it’d be more compatible with my current projects. Kind of a pain, but it’s enough to make me add one proviso to @HYLK’s question for @Stephen; if recursive updates are possible, they should have a prompt before execution in the case of legacy world files.

Edit: Turns out I did not select the devices before executing the update. That saves me a bit of unnecessary effort. :sweat_smile:

1 Like