Skip to main content

Volume Snapshot

Posted

Consider this situation: I have a container A with a constant Volume parameter and a container AA with a Volume ramp as shown below:

Now I want to do a snapshot of the Volume parameter into container B. The expected result would be that I get a curve that starts with the constant value of container A until bar 8 where the container AA starts. Then the curve should switch to the ramp of container AA and from bar 12 it should continue with the constant value of container A.

However, instead of the expected curve, I get this:

Now, I know I can change the interpolation setting of the curve to "Recent". Then I get this:

That's closer to the desired result, but of course I dont't want this stepped ramp.

So how could it be done? Basically I think, Synfire should automatically add the necessary additional hitpoints at the container boundaries to make sure that the snapshot result is the same as the original curve progression (here the result from Container A and AA).


Sat, 2025-06-07 - 14:15 Permalink

The snapshot parameter can only have a single interpolation. Any interpolation changes are lost. I agree that with linear interpolation, especially for a constant parameter, there should be an extra data point. Actually it should already do that. Will have a look.

There are per-container parameters like Interpretation that don't survive a snapshot. Some information is always lost with a snapshot. It's probably inevitable with a parametric system. 

Mon, 2025-06-16 - 09:36 Permalink

Just an idea for a workaround: can you not simply have another parameter value in A just before the start of AA so that the interpolation to the comparable low value of B starts from that later value in A?

If there is only a single value in A, then overall this long interpolation behaviour might well be what I would expect and desire.

Mon, 2025-06-16 - 10:09 Permalink

Just an idea for a workaround: can you not simply have another parameter value in A just before the start of AA so that the interpolation to the comparable low value of B starts from that later value in A?

Sure, that's how I did it at the end. But that extra data points just before every start of a new container must be set manually. If you have a faily complex arrangement you can sit on this task for hours.

Tue, 2025-06-17 - 08:11 Permalink

This "workaround" is actually how it's supposed to work. It's called cut point sealing (my own word creation for lack of a better term). For some reason it doesn't work in this case.

Tue, 2025-06-17 - 08:29 Permalink

I'm not sure, why a workaround would be necessary at all. Why Synfire doesn't just create all necessary extra data points automatically to get the expected result?

In this case, it needs to create two extra data points in container A to make it work properly: One data point just before container AA starts and another one just after container AA ends. Currently, it already creates that extra data point after container AA. But not that one just before AA. So to me, the function does look not complete.

Tue, 2025-06-17 - 08:53 Permalink

As said, it's a bug.

Whether or not there are cut points that need to be sealed depends on parameter type, interpolation, and other circumstance. Something with the snapshot code is missing this.