Thank you for this explanation, so I can learn.
If I am understanding correctly, then the driver in this model would be the start and end scale size. I'm not sure this can be used, since the start and end is driven by time, cycle duration, not scale amount. Here is an explanation about the timing needed:
If the exercise starts at 10 BPM (breaths per minute), then I would want to have the circle expand/contract 10 cycles (twice as long within each cycle for the contraction than for the expansion to correctly mirror "good" breathing). After that one minute at 10 BPM, it would decrease to 9 BPM, for one minute, and the 9 cycles would each change their duration to fit into that one minute (again retaining the proportion of 1:2 for inhale/expand and exhale/contract). That way, through 8 BPM, 7 BPM, 6 BPM, then it would remain at 6 BPM for whatever total length of time the user selects for the entire exercise. They can practice for 10 minutes for example (that would leave 5 more cycles at 6 BPM after stepping down to and completing one minute of 6 BPM). So, timing varies depending on which BPM minute the animation is currently in.
Seems challenging. Maybe can't be done as an HTML5 JS animation?
Devoted Member: I'm using Opus Professional as a software package. While it can use JS and export as HTML5, it's core function files use their own unique naming conventions to identify objects and variables. So "Page1.Vector8.Scale(a,b,c)" refers to the circle object named Vector8 on the main page which is to be scaled, and the scale parameters are JS parameters. So, (0.5, 0.5, _DWPub.bar2 * 0.3) would scale the height and width by a factor of 50% (1 = 100%, 1.5 = 150%), with the duration as BPM/60 * .3 each inhale cycle component, and (should be) -0.5, -0.5, _DWPub.bar2 * 0.6 for each exhale cycle component. The naming and unique scripting are not mine, but a feature of the software package (see link above).
HTH