During an append record, silence may need to be added to the
end of the existing track(s) to fill any gap between the end
and the common recording start time.
But, if the recording fails to start, this silence is left at
the ends of the tracks.
This change fixes that by making a copy of the tracks before
recording starts and restoring the tracks from that copy if
the start fails.
EXPERIMENTAL_SCRUBBING_BASIC enables middle-click-drag to scrub, or to seek
when shift is down.
EXPERIMENTAL_SCRUBBING_SMOOTH_SCROLL adds middle-double-click-drag to
scrub or (with SHIFT down) to seek while keeping the playhead at the midline
of the track display.
EXPERIMENTAL_SCRUBBING_SCROLL_WHEEL allows control wheel to vary the speed
limit, while scrubbing (not seeking).
All three are enabled in this commit.
Also notice the changes to status bar messages and the Mouse Preferences dialog.
Scrubbing works only in Select and Multi tools.
In particular, use an options structure for AudioIO::StartStream to simplify
calls
ControlToolBar::PlayPlayRegion also takes that structure as an argument, and a
SelectedRegion instead of two times
And other changes
Thanks to a discussion with Steve, I went back to the docs
and found that SetCursor() is persistent. So it doesn't
have to be done in a mouse event handler. The constructor
is perfectly sufficient.
This will fix the clipping indicator turning on after a toolbar reset
and, as a bonus, the timers now only run if playing, capturing, or
monitoring. Will (slightly) reduce the CPU consumption.
Many other changes including:
1) Independent preferences
2) Automatic layout separated from vertical/horizontal orientation choices
3) Combined menu and icon which saves space
4) Click to start monitoring label no longer covers peak hold line completely
5) Click to start monitoring label now adjusts label based on available width
6) Click to start monitoring label now appears on vertical meter (not sure about this one...)
7) Reduced width of vertical meter by moving icon to left of meters
8) Includes a compact vertical meter now
9) Clipping indicator is easier to see
10) All 1-off drawing issues resolved (99.9% sure...I challenge you to find some ;-))
11) Bevels around meters are no longer overlaid by meter updates
12) "Old" menu handling code removed
13) Though not perfect since some non-English characters are taller/wider than the meters, non-English text is now handled better
14) Clicking play meter resets indicators as appropriate
15) Indicators on meters now stick around until the meter is clicked
16) Ugly flashing while resizing is now gone
17) There should be NO magic numbers in the code. Every +1 or -2 is explained in comments...
18) Size of L/R labels are recalculated now when preferences are updated (to pull in locale changes)
The problem was that on Linux (not Windows or Mac) menu
events are generated when checking the menu items in
the toolbar menu.
Becuase of the recent changes I made and how the toolbars
are being shown (toggled) when the toolbar menu is checked,
they were simply being hidden. Actually, the were being
shown and then hidden because of the toggle.
So, with this change I made exposing toolbars a bit more
deterministic. The menus still use a toggle, but the
ToolManager now shows or hides the bars explicitly during
setup, so the menu toggle issue is resolved.
It corrects several "multiple project" problems with the
meter toolbars and meters.
In addition, there was a "multiple project" issue where
the transport buttons didn't disable properly in the
non-active project.
1) On startup if the capture meter is vertical and
the playback meter is horizontal, capture meter
would jump to horizontal if you start monitoring.
2) To cut down on meter orientation weirdness, the
orientation is now mirrored in both meters when
it changes.
If this is not a desired behavior then the only
option would be to have separate config file
settings for each meter. That means that the
orientation settings in meter preferences will
correspond to that meter only.
Let me know if this is what is wanted.
I couldn't handle it anymore. The darn pointer would seemingly
switch to left/right arrows whenever it felt like it...and stay
that way.
Actually, it was when it passed over the toolbar resizer when
docked. The problem was that it wouldn't change back to a normal
pointer because it didn't have the events it needed to do that.
So, I moved the resizer logic into it's own window and now the
pointer changes like it should.
As a bonus, we get a tooltip so the user will know what to do
when the pointer changes as it passes over the resizer.