Better Zoom to Fit Selection or Previous behaviour (reset on reselect)

Hi all! Draft proposal below, not covered anywhere else on Bitwish that I can see. Comments/thoughts are most welcome.

I’m trying to tightly optimize my keyboard shortcuts and that’s got me into some interesting areas of Bitwig’s UI. To start with, horizontal zooming!

Bitwig has four different content-aware zooms:

  • Zoom to Fit [all] [ZtF]: press to zoom out to whole timeline; second press does nothing
  • Zoom to Fit Selection [ZtS]: press to zoom in on zoom target; second press does nothing
  • Zoom to Fit Selection or All [ZtSoA]: press to zoom in on zoom target; second press goes to whole timeline.
  • Zoom to Fit Selection or Previous [ZtSoP]: press to zoom in on zoom target; second press goes to previous zoom (sort of…)

Of these, only one (ZtSoP) tries to respect the current zoom setting. The other three clobber it. ZtF and ZtS go to new regions and stay there, and ZtSoA always toggles between the new selection and the full timeline. ZtSoP is nice because, in principle, you can go back and forth between one zoomed-in setting and another. But the usefulness of ZtSoP is limited by the curious way it defines what “previous” was.

Say I’ve just zoomed out on this timeline:


I want to work on the three clips to the left, so I select the relevant range and do ZtSoP:


This is nice, because if I do ZtSoP again without changing the selection, I can toggle between the previous (zoomed out) view ([A]) and the view I selected. Just as it says!

Here’s the problem: say that I now want to work on the first Audio clip. I select it and prepare to do ZtSoP again. I’m going to zoom in on what I just selected, right? Right?!


Nope. Bitwig thinks I still want “previous”, even though I made a new selection, and so it zooms me back out to the full timeline, which is a jolt:


If I hit ZtSoP again, I get what I wanted to happen before:


But now, another ZtSoP will put me back to the full timeline, since that’s where I just was–and the reason I went there is that it took me there against my wishes!

[D again–double whoops]

If I want to get back to my nice [C] view, I have to select and zoom again.

I think the solution is simple. Either update Zoom to Fit Selection or Previous, or create a new Zoom to Fit option (name TBD). This would differ from the existing ZtSoP in only one way: when a new selection is made, make the current zoom settings the new “previous.” This means that when the selection is made in stage [C] above, “previous” would be re-defined as 1.1 to 3.2, so repeated presses of ZtSoP would toggle between [C] and [E], which is exactly what I’d expect it to do, and exactly what I think it should do. This mode plus Zoom to Fit would make the other modes basically unnecessary. In a funny quirk, closing projects does reset the “previous” zoom, so if you save after step [C], close, re-open, and then do ZtSoP, it will work the way I think it should work all the time.

(By the way, things are even weirder if ZtS gets added to the mix. If you do ZtS in stage [C], you get [E], which is what you’d want ZtSoP to do. But if you then do ZtSoP, you go right back to [D]! Even a new zoom doesn’t reset what “previous” means.)

What problem(s) would this feature resolve?

Right now, Zoom to Fit Selection or Previous behaviour is (1) surprising (it zooms out when you clearly want to zoom in) and (2) inefficient (having zoomed out, it requires manual re-selection of the previous range). The behaviour described above would fix both of these issues.

How does this feature fit in Bitwig as a product?

Better flow for moving around the timeline!

Is there already an alternative way to achieve this on Bitwig?

I don’t think so, no.

Could it be implemented using Bitwig components or APIs, without Bitwig team’s support?

Probably not (at least without a very deep API dive), as it’s a fundamental user interaction primitive.

Could it be provided by a VST or something else reasonably integrated with Bitwig?


Are there other products that offer this feature?

I think zooming in Ableton with Z/X uses a stack model, which is the other way of handling this, but I don’t use Ableton so I haven’t checked in detail. I’ll compare to Reaper and Cubase (and maybe some video editors) when I get a chance.

Relevant links (optional)

Here’s Baphometrix suggesting keyboard shortcuts for both ZtSoA and ZtSoP (zoom discussion begins at 21:12, ZtSoP gets mentioned at 24:37). At 25:25, Baphometrix gets bitten by this exact problem (“Let’s try that again . . . You have to press [ZtSoP] to get in as well . . . My bad.”) I don’t think that his diagnosis (ZtSoP “to get in”) is exactly right, by the way–what makes the difference is that, once he’s in the whole timeline view, he manually zooms in again to the range he wanted. So the video shows the surprise (unexpected zoom out), the confusion (not sure what happened), and the inefficiency (having to re-create a previous zoom range).