1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-14 09:03:54 +01:00
Commit Graph

786 Commits

Author SHA1 Message Date
Paul Licameli
9093364b8c Fix other problems since commit f6e5696...
... Problem with static initialization order of ReservedCommandFlags, caused
wrong enablement of menu items (at least on Mac), such as Plot Spectrum or
Contrast enabled when there was no selection
2020-01-28 17:49:07 -05:00
Paul Licameli
393a098b69 Store a string identifier in each menu item...
... which is not yet used for anything.

It could be used to describe textual paths for attaching plug-in menu items.

Strings are only path local, not necessarily globally unique, and may be
left empty for separators and for groups that should be transparent to
path identification.

It may also be empty for certain sub-menus, such as those that group effects
according to the changeable criteria in Preferences.
2020-01-24 18:05:56 -05:00
Paul Licameli
f6e5696146 Most functions defining menus compute once and cache the result...
... Except a few where project or plugin manager state or preferences are
needed to compute the items, so evaluation is delayed, often inside lambdas

Comment "Delayed evaluation" wherever there are exceptions
2020-01-24 18:05:56 -05:00
Paul Licameli
93c2bb9322 Delay evaluation of checkmark states...
... so that more menu item descriptions can be statically constructed once only
2020-01-24 18:05:56 -05:00
Paul Licameli
512c27d422 Simplify the FN macros in src/menus/*.cpp...
... Eliminate repetitious passing of the finder function into each of the
calls to Command and CommandGroup.
2020-01-24 18:05:56 -05:00
Paul Licameli
21306d6186 Remove indirection storing number scale in Ruler 2020-01-23 13:27:05 -05:00
Paul Licameli
10eb5864ac Don't quit update of vertical ruler of short spectrogram views...
... This caused visible anomalies, for instance when dragging the stereo track
separator between channels.  Numbers from one channel used to be drawn over
the ruler of the opposite channel.
2020-01-22 20:21:45 -05:00
Paul Licameli
0ca5775234 Eliminate one of the ## macro hacks in LoadCommands 2020-01-19 19:21:12 -05:00
Paul Licameli
2ec2ad378d Break dependency cycle introduced at a69fba9 2020-01-19 14:36:28 -05:00
Paul Licameli
7cff170cf7 Sub-view objects report their complete type, not just an enum value 2020-01-18 20:28:53 -05:00
Paul Licameli
36aad4d1c6 Don't hard-code the exhaustive list of sub-view types...
... in Wave track context menu and SetTrackVisualsCommand

Instead, discover them through a registry.

This eliminates some duplication of string constants and prepares for
non-intrusive generalization to more kinds of sub-views.

This makes the command agnostic about which subview types are known, but the
context menu still has special case treatment for Spectrogram Settings and
Wave Colors.
2020-01-18 20:26:12 -05:00
Paul Licameli
fb8ba0ce43 Some briefer type aliases for wave track display type 2020-01-18 19:35:17 -05:00
Paul Licameli
96f29e0cd0 Don't forget to modify undo state when toggling a sub-view 2020-01-18 14:40:24 -05:00
Paul Licameli
6eb0f3aca1 Move SpectrumAnalyst into its own files...
... It's the pure calculation common to the Plot Spectrum window and
to spectral editing

This removes some dependencies on FreqWindow
2020-01-18 13:38:19 -05:00
Paul Licameli
72f20d9129 Change cursors for rearranging of tracks...
... To be consistent with the rearranging of sub-views, and with general UI
guidelines.

The hover cursor is an open hand, and the dragging cursor is the closed hand.
2020-01-18 13:03:11 -05:00
Paul Licameli
000d63c95e Widen the hot zone for sub-view rearrangement...
... so it's wider than the close button
2020-01-17 16:14:23 -05:00
Paul Licameli
f10b303279 A close box button for sub-views 2020-01-17 16:10:46 -05:00
Paul Licameli
0f3f13502c Fix hot zones of sub-view cursors...
which got broken at 876cd92ed3

And remove duplicate function
2020-01-17 16:04:45 -05:00
Paul Licameli
851b49d912 Avoid churn of handles for sub-view adjustment and rearrangement 2020-01-17 15:53:33 -05:00
Paul Licameli
b45e3e8aac Separate default waveform scale choice in Tracks preferences...
... Some complications in handling correct migration of preferences from
config files in older versions
2020-01-17 12:28:52 -05:00
Paul Licameli
6c3731061f Switch priority of adjust and rearrange hit tests for sub-views 2020-01-17 11:03:25 -05:00
David Bailes
64079c3f55 Keyboard scrubbing: faster change of direction
If one of the keyboard scrubbing keys is being held down, and the other keyboard scrubbing key is pressed:
1. With current behaviour, scrubbing in the other direction only starts when the original key is released - scrubbing stops and then starts in the other direction.
2. With the new behaviour, scrubbing immediately changes direction, and does not stop when the original key is released - scrubbing does not stop and then start again.

New behaviour:
If one of the keyboard scrubbing keys is being held down,
2020-01-17 09:32:17 +00:00
Paul Licameli
6fd29ad863 Restrict y coords of the hot zone for the new sub-view rearrangement 2020-01-16 15:01:52 -05:00
Paul Licameli
a95838a3e8 Better cursors for sub-view rearrangement 2020-01-16 12:06:59 -05:00
Paul Licameli
a1ef73398b Implement click and drag to rearrange sub-view permutation...
... The hot zone is 15 pixels wide at the left of the track contents, and the
cursor is a hand.  Those particular choices can be easily amended.
2020-01-15 13:50:28 -05:00
Paul Licameli
1fa41808c2 Some refactoring of SubViewAdjustHandle 2020-01-15 13:44:10 -05:00
Paul Licameli
94af81b9f7 Fix Ubuntu build 2020-01-15 11:08:17 -05:00
David Bailes
6b9c8e79cc Bug 1954: Clicks may occur starting/pausing play-at-speed or Scrub
Problem:
On Windows, after 50ms, there is a short period of roughly zero introduced into the output. On Linux, there is also a spike which sounds like a crackle.

In AudioIO::FillBuffers(), Mixer::SetTimesAndSpeed() is called, which sets mT0 and mT1 to a small interval.
In Mixer::MixVariableRates(), all the samples in the interval are used, which means the Resample::Process() is called with last equal to true.
So when Mixer::MixVariableRates() is called again, the resampler is being reused after a call to Process() in which last is true.
It is not stated in the soxr documentation if the resampler will produce valid results in this case, and it's only the scrubbing code which does this.
I think this is the problem, and so the partial fix below avoids this happening.

Partial fix for play-at-speed and keyboard scrubbing:
For these, there is no need to reset the values of mT0 and mT1. (There is no need to allow for the sample position being used to potentially jump around.)
So for these cases, Mixer::SetSpeed() is called, rather than Mixer::SetTimesAndSpeed().
2020-01-15 11:12:40 +00:00
Paul Licameli
cbe4a46af2 Bug2265: Should save and restore track heights...
... Regression happened at 3f1fd8ced0

The heights were written to file, but not read back again.

This fix was done carefully to avoid making dependency cycles.  We don't want
Track to depend on TrackView or TrackControls.

It's not great that LabelTrack, NoteTrack, TimeTrack, and WaveTrack now have
those dependencies, but at least they don't make cycles.

It would be better to figure out how to attach the view and controls to the
track with ClientData, then just invoke BuildAll to repopulate the view and
controls, so that they are non-null when you reach
Track::HandleCommonXMLAttribute.
2020-01-14 20:04:32 -05:00
Paul Licameli
9e0372cbea Bold, clickable, butting clip boundaries also in spectrum view 2020-01-14 15:16:30 -05:00
Paul Licameli
97b7572504 Stroke clip edges in spectrum views too, improving split appearance 2020-01-14 14:37:54 -05:00
Paul Licameli
98bd937389 Add the multi-view menu item only if there are multiple sub-views...
... anticipating possible subtraction of all spectrogram code into an optional
plug-in in a later release
2020-01-14 14:06:22 -05:00
Paul Licameli
caf36b42ca 886c80b: Add a comment referencing the correct bug number, 2275 2020-01-13 17:51:27 -05:00
Paul Licameli
886c80bbca Bug2267 residual: do something about un-checking the last sub-view...
... when in Multi View mode.

And what we do here is disable the menu item.  The visible check indicates
which view is enabled, but you are not allowed to un-check it.  While the
Multi View item appears enabled and with a check mark.  That should be
suggestive enough to let the user discover how to exit multi view.
2020-01-13 17:48:18 -05:00
James Crook
1176b61953 Wording changes, per wiki:
https://wiki.audacityteam.org/wiki/Wording
2020-01-10 17:02:31 +00:00
Paul Licameli
d28967b7ad Bug2275 residual: don't get into state where you can't select audio...
... if you enter multi-view, then (try to) toggle both sub-views off.

Now instead, the second toggling will have no effect.
2020-01-09 15:15:11 -05:00
Paul Licameli
4018546a96 A comment 2020-01-09 15:15:11 -05:00
Paul Licameli
dd0e41048f Bug2282 residual: Partition sub-view heights 1:1 not 2:1...
... when doing steps to reproduce in that bug report
2020-01-09 15:15:10 -05:00
Paul Licameli
8fa01eceb4 Bugs 2282, 2275: crashes in multi-view...
... when you shrink a sub-view then toggle it, or toggle all views off then
exit multi-view

Fix it by making GetSubViews more robust to contents of mPlacements
2020-01-09 15:15:04 -05:00
Paul Licameli
d01c24d4d6 Revert "Bug 2282 - Multi-view: Array out of bounds exception (crash)"
This reverts commit e047c07a90.
2020-01-09 15:12:00 -05:00
Paul Licameli
da2f5491ae Revert "Bug 2275 - Crash when unchecking Multi-view with neither of the views checked"
This reverts commit 57ff92b20c.
2020-01-09 15:12:00 -05:00
Paul Licameli
d50dae4dd2 Bug2279 fix reimplemented...
... Don't hard-code the number of sub-views as two.

This modifies the fix at commit 596fd7c02f
2020-01-09 14:01:12 -05:00
James Crook
57ff92b20c Bug 2275 - Crash when unchecking Multi-view with neither of the views checked 2020-01-09 15:56:00 +00:00
James Crook
e047c07a90 Bug 2282 - Multi-view: Array out of bounds exception (crash) 2020-01-09 15:13:36 +00:00
James Crook
596fd7c02f Bug 2279 - Multi-view: turning it on does not cause a split Multi-view to be displayed 2020-01-09 14:04:31 +00:00
David Bailes
d22edcbc10 Keyboard scrubbing: change some of the parameters
Changes to some of the parameters, based on user feedback.
2020-01-08 09:05:53 +00:00
Paul Licameli
e2adccb461 Don't use GetActiveProject drawing pan, gain, velocity sliders 2020-01-06 14:14:21 -05:00
Paul Licameli
d244b55709 Don't use GetActiveProject when drawing label track 2020-01-06 14:14:21 -05:00
Paul Licameli
f0b75832b4 Remove uses of GetActiveProject in some dialogs 2020-01-04 13:55:34 -05:00
Paul Licameli
c3b32d1106 Remove GetActiveProject where finding track panel button tooltips 2020-01-04 12:59:37 -05:00