**Preface:**
I know this isn't the place for feature requests. However I plan on implementing this myself soon. This is more of a heads up and acts a way to get feedback before or while I'm working on it. Maybe I'm overlooking something or maybe the idea can be developed further. People can discuss problems and improvements here instead of within the patch comments itself. That way the important discussion can remain here for easier reference.
**Problem:**
For the animation layer workflow, the only way to combine strips into a single strip is to use the Bake Operator. However, it will always bake all active NLA strips to a single full replace strip. Effectively, this is a "Merge All" operator. There is no way to merge a selected set of strips.
**Solution/Implementation:**
The solution is close to what we already do for keyframe remapping in //anim_sys.c// : //BKE_animsys_nla_remap_keyframe_values()//. For a set of contiguous selected NLA strips, we calculate two NLA snapshots. One includes the lowest strip up to and including the selected NLA strips, //merge_result_snapshot//. This is the result that the merge output strip must satisfy when the selected NLA strips are muted or (optionally) deleted. The other is similar but excludes the selected NLA strips, //lower_result_snapshot//. After muting all the selected NLA strips, we use //merge_result_snapshot// and invert //lower_result_snapshot// which leaves us with the fcurve values of the merged strip.
We can go further:
1) Its a small leap to use this to convert strips to different types while preserving the animation when possible (when invertible). This amounts to changing the blend type of the merged strip.
2) {F8820220}
I don't know the word for what this is, curve extraction? But if we generalize this a little bit more, we can support the situation where we may have a complex animation curve C which may come from mocap or dense keyframe data. If the animator can create a component of the curve, let's say B, then we can solve for A. This requires allowing the animator to choose C which equates to //merge_result_snapshot//.
I imagine it to be useful for mocap cleanup. You create a simplified version of the mocap then extract the lost, likely noisy, data. Then you can redo the process. Create a simplified version of that noisy data and re-extract what's missing. Each time, the extracted curve is simpler and possibly shows discontinuities that can more easily be fixed or removed. However, I never cleaned up any mocap so I may be mistaken. This idea isn't concrete enough in my head so I won't be implementing it anytime soon.