... Maybe a good feature idea, but the implementation pollutes the code in
too many places.
It's a special case of the more general idea of many-to-one associations
between screen rectangles and track objects. More generalized ways to
accommodate that should be sought.
Added preferences for Zoom-Toggle and put into menus.
New helper functions for determining zoom scaling.
Optional EXPERIMENTAL_ZOOM_TOGGLE_BUTTON added, and Light theme updated.
Not enabled for 2.2.2.
... I'm not sure how to make it work for AudioUnits, LV2, or Vamp, for which
the API for identifying a plug-in doesn't map straightforwardly to a file name.
VZooming remains on by default in Audacity itself.
Also kGuard (the gurard zone in the VRuler) reduced from 8 pixels to 5pixels
following feedback from Steve.
1: Guard zone 8 pixels wide in VRuler to reduce risk of accidental use.
2: VerticalZooming preference, for VRuler zooming, off by default,
3: Enabled Paul's right-click menu in VRuler with some extra
presets (x2 and x0.5)
4: Rearranged some messy code with lots of ifs to use a switch.
Also, with EXPERIMENTAL_HALF_WAVE defined we now get a
'half wave' option in the VRuler menu, that shows the wave top half.
We also use it in collapsed waves (and collapsing and restoring
a WaveTrack will get you back to normal zoom.
Only available if you define EXPERIMENTAL_DOCS_AUTOMATION.
This code is still a bit ropey and not suited for prime time, but fine for our own (careful) use in preparing the manual.
It captures most of the effects, generator and analyze built ins and nyquist dialogs. Use it by creating a track, making a selection and then clicking the 'All Effects' button in the screenshot tools. The dialogs will be captured to your user directory.
I confirmed that the currently used real FFT code in RealFFTf.cpp is faster
than the old one with a quick benchmark that calls PowerSpectrum() on 4-minute
audio file, with different sizes of computation windows:
Window_size: 256 method: new FFT time_s: 0.393
Window_size: 256 method: old FFT time_s: 1.065
Window_size: 1024 method: new FFT time_s: 0.38
Window_size: 1024 method: old FFT time_s: 0.958
Window_size: 4096 method: new FFT time_s: 0.413
Window_size: 4096 method: old FFT time_s: 1.084
Window_size: 16384 method: new FFT time_s: 0.518
Window_size: 16384 method: old FFT time_s: 1.338
Window_size: 65536 method: new FFT time_s: 0.655
Window_size: 65536 method: old FFT time_s: 1.524
Window_size: 262144 method: new FFT time_s: 0.735
Window_size: 262144 method: old FFT time_s: 1.873
... Verified that this works for presses on tool buttons, and keys A, D, F1,
..., F6.
Also fix conditional compilation with EXPERIMENTAL_SCRUBBING_BASIC not defined.
When it is enabled, the project can scroll up to one-half of a screenful
beyond time zero or the maximum track time. I was careful to disable selection
of negative times.
This is motivated by the smooth scrolling scrub. It behaves more sensibly at
the extremes. It can still keep the play indicator centered.
Also removed an unused member of ViewInfo.
As usual, I started out intending to do as little as possible
to this to get it working and wound up going overboard.
However, I believe it does allow easy management of the effects
and this will provide a basis for the full blown plugin manager
dialog.
On a reset preferences, this adds the default built in effects only. The effects menu now has a 'More...' as its last item, and the list of plugins is invoked there. We can add from that list to the menus from that.
This captures crashes on Windows along with the stack backtrace.
On Linux (fedora 21 at least), the necessary function to enable
capture is not included in the system wx libs. But, a self built
version works fine and capture the backtrace, so I'm assuming
other distros will probably work as well.
On OSX, the crashes are caught, but it does not include the
backtrace.
But, really, the backtraces aren't all that useful in a release
build since we don't ship with debug symbols and optimization
plays havoc with proper backtraces anyway.
The real benefit will be for the support folks as they can now
get consistent info from user by asking the to generate a report
from the "Help->Generate Support Data" menu item.
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.