Shape delay/itteration?
Posted: Mon Feb 02, 2026 18:55
Hi All,
I'm new to Wire and decided to jump into the deep end by attempting to recreate a visual I saw at a Caribou concert last winter. This particular visual started as a series of rings starting from the center of the screen and expanding outward past the edges. At certain points in the song, the rings would change shape starting from the center and expanding outward. So, at the start of the song the rings were all circular, then at the bridge it would change to a hexagon, etc. Also, all the rings were equally spaced for the entire motion, so the effect wasn't created using tunneling or another effect that would create a z plane of movement.
I've been able to get a draft of this idea to work with a circle shape and hexagon shape. I fed both shapes into a switch, and fed that switch into an edger. I animated the shape using timeline and a metronome which pings the timeline's reset. The timeline moves from 0 to 2.4ish so the shape makes it off the screen before restarting. I thought I could then feed this entire thing into something that iterates the rings, however, when I changed the shape every ring changes at the same time.
In order to get the animation effect of the shape changing from the center I ended up getting rid of the thing that iterates the rings, copied the rest of the above patch string 5 times, creating 5 rings, and then delaying each timeline by connecting "end reached" of each shape to the reset of the next shape.
I put a hold on each shape's switcher and set those to release once the corresponding shape "end reached" is achieved.
So the idea works, but now I'm looking to clean up the patching and make changing attributes more manageable. What I'm looking to do is find some sort of delay and iterate function that I can apply to one shape patch string, effectively eliminating the need to have 5 separate shapes. What this function needs to do is take the primary shape that is moving over time, say "when the shape reaches this point -- the point can be a certain time, a certain position, whatever -- start another instance of that shape from the beginning while allowing the primary shape to finish its path." I want to then set multiple "triggers" -- so trigger a copy a 10% completion, 20%, 30%, etc. -- to create that ring effect. Then, if I make changes to the primary shape, like I turn it from the circle to a hexagon, the shape change will be delayed on each of the follower shapes (in theory).
I'm hoping something like this will allow me to change how fast the shape is moving -- in the first draft I can't really change the speed without the rings starting to overlap and becoming an absolute mess -- change the thickness of the rings, and change how many rings are on screen at a time without having to make 20 copies of the same shape patch string.
So, any thoughts on how to tackle this? I've poked around at the buffer nodes a bit but I can't seem to get them to do this thing specifically. Any thoughts are appreciated. Thanks!
I'm new to Wire and decided to jump into the deep end by attempting to recreate a visual I saw at a Caribou concert last winter. This particular visual started as a series of rings starting from the center of the screen and expanding outward past the edges. At certain points in the song, the rings would change shape starting from the center and expanding outward. So, at the start of the song the rings were all circular, then at the bridge it would change to a hexagon, etc. Also, all the rings were equally spaced for the entire motion, so the effect wasn't created using tunneling or another effect that would create a z plane of movement.
I've been able to get a draft of this idea to work with a circle shape and hexagon shape. I fed both shapes into a switch, and fed that switch into an edger. I animated the shape using timeline and a metronome which pings the timeline's reset. The timeline moves from 0 to 2.4ish so the shape makes it off the screen before restarting. I thought I could then feed this entire thing into something that iterates the rings, however, when I changed the shape every ring changes at the same time.
In order to get the animation effect of the shape changing from the center I ended up getting rid of the thing that iterates the rings, copied the rest of the above patch string 5 times, creating 5 rings, and then delaying each timeline by connecting "end reached" of each shape to the reset of the next shape.
I put a hold on each shape's switcher and set those to release once the corresponding shape "end reached" is achieved.
So the idea works, but now I'm looking to clean up the patching and make changing attributes more manageable. What I'm looking to do is find some sort of delay and iterate function that I can apply to one shape patch string, effectively eliminating the need to have 5 separate shapes. What this function needs to do is take the primary shape that is moving over time, say "when the shape reaches this point -- the point can be a certain time, a certain position, whatever -- start another instance of that shape from the beginning while allowing the primary shape to finish its path." I want to then set multiple "triggers" -- so trigger a copy a 10% completion, 20%, 30%, etc. -- to create that ring effect. Then, if I make changes to the primary shape, like I turn it from the circle to a hexagon, the shape change will be delayed on each of the follower shapes (in theory).
I'm hoping something like this will allow me to change how fast the shape is moving -- in the first draft I can't really change the speed without the rings starting to overlap and becoming an absolute mess -- change the thickness of the rings, and change how many rings are on screen at a time without having to make 20 copies of the same shape patch string.
So, any thoughts on how to tackle this? I've poked around at the buffer nodes a bit but I can't seem to get them to do this thing specifically. Any thoughts are appreciated. Thanks!