Skip to main content

How to Cut Time from Structure



How does one cut time from the Structure?

For example, how to remove bars 41 - 57 from this picture?


Thu, 2024-01-25 - 08:18 Permalink

Container >> Close Gap

Every container has its own timeline. Make sure you select the root container.

Thu, 2024-01-25 - 14:13 Permalink


Is the blue mark in the timeline the gap to be closed?


Fri, 2024-01-26 - 21:04 Permalink

Digging into this, it seems that in Synfire terms, in order to"cut time" as I say, where designated by the blue section of timeline, what I need to do is:

  1.  Select a container, mark the lefthand position (with vertical orange line), do the divide operation.
  2.  Repeat #1 for every container intersected by the lefthand position vertical orange line.
  3.  Repeat #1 and #2 both for the righthand side
  4.   With everything now divided, I can delete (one-at-a-time), each (new) container that is "in the middle".
  5.   Then I can define and "Close the Gap"

Do I have that right?

This is clearly an area where computer assistance is warranted!

IOW, just draw the blue horizontal line and say  "Cut Time"  or "Cut and Close Time".


Mon, 2024-01-29 - 19:50 Permalink

Yes, the command removes time from any container you selected. You can use it at any level of the hierarchy.

Wed, 2024-01-31 - 15:20 Permalink


I have made a video that shows what I am observing and explains how it differs from "cutting time" as discussed above.

It seems pretty clear to me that Synfire's 'Close Gap' operation is not doing what I'm aiming at.

Is it operating as intended?   If so, what is the intent?

Assuming there is an existing intent, and it is being implemented as designed, it seems to me that we do need a new operation  (i.e. ' Cut Time') in order to accomplish the conceptually simple, yet highly necessary goal of being able to quickly remove from a Snippets-derived Arrangement those portions of the performance that one does not desire to keep for the ultimate composition.


Wed, 2024-01-31 - 18:19 Permalink

Well, you will first have to lose a few teeth before it makes sense to go to the dentist and ask him to "Close the Gap."

Wed, 2024-01-31 - 20:26 Permalink

Indeed. If there is no gap, the containers to the right of the selection will simply move to the left and land "under" the containers left of the selection.

Close Gap merely moves containers. It doesn't shorten or split them. 

Splitting containers has very hard edge cases, e.g. if there are nested containers and aliases inside. If containers were like DAW regions, splitting would be easy. Synfire containers are trees.

Wed, 2024-01-31 - 20:47 Permalink

Non-trivial to implement.   I get that.

But then my question is, how can naive users in the field be expected to accomplish conceptually and manually what those who understand the structure best don't themselves want to take on?


Wed, 2024-01-31 - 20:50 Permalink

Are steps 1 thru 5 above a correct description of how to get the job done?

If not, can such a description be provided?

If so, can't the computer be programmed do do exactly those steps?

If the answer happens to be "well, mostly that would work, yes, but not always", then that would be good to know also.


Thu, 2024-02-01 - 09:25 Permalink

It is named "Close Gap" rather than "Cut Time" for a reason.

Your steps 1-5 are basically correct. Cutting time in a linear way however is not possible with hierarchical trees of containers and aliases. Destructive editing only works on physical data without virtual references.

Splitting a single container is already destructive. There are parameters inside with different loops lengths. What happens to a loop when you split it somewhere in the middle? Or outside? Only physical things can be split without altering the music in unpredictable ways. Thus the only way to split a container is to make a physical snapshot of all parameters inside. 

The destructive operation turns short phrases into long bands of repeating figures. Imagine scrolling sideways 16 bars of a repetitive Figure that originally was a concise 1m phrase with a loop. Only because at one point in your editing history the enclosing container resulted from a split.

Snapshots make sense only when they are done with intent.

I understand that most users want Synfire to be like a DAW, only with Figures instead of MIDI. There would be tracks and phrases and that's it. No inheritance, just linear tracks with regions to edit. Splitting would still result in physical snapshots, but they would be limited to individual phrases at the surface. Much easier to handle.

The flexibility of non-destructive prototyping would be gone though. You'd run into the same "painted yourself into a corner" situations that you have with static DAWs.