1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-02 08:39:46 +02:00

10865 Commits

Author SHA1 Message Date
Paul Licameli
c8a8c6a3fa Remove radio button function overloads made unused in previous commit 2019-11-27 13:37:24 -05:00
Paul Licameli
51115903d4 Remove uses of overload of TieRadioButton taking int values...
... and migrate old preferences with EnumSetting
2019-11-27 13:37:24 -05:00
Paul Licameli
0d910bbe02 EnumSetting has a template parameter 2019-11-27 13:37:24 -05:00
Paul Licameli
85b06fe6d0 Define ChoiceSetting::ReadWithDefault ...
... because some calls might not have used the same defaults as in the Tie...
functions
2019-11-27 13:37:24 -05:00
Paul Licameli
bc08f571dc ChoiceSetting default is changeable and can be unspecified 2019-11-27 13:37:23 -05:00
Paul Licameli
1236c5bfed class EnumValueSymbols lets you specify a table...
... of EnumValueSymbol either row-wise or column-wise
2019-11-27 13:37:23 -05:00
Paul Licameli
9b67e7538f ChoiceSetting contains vectors; simplify constructions of it 2019-11-27 13:37:23 -05:00
Paul Licameli
e485afa156 enums not #defines in ExportMP3.cpp 2019-11-27 13:37:23 -05:00
Paul Licameli
bbaceba347 Register export plugins, breaking cycles...
... as we did last relase for import; making several header files unnecessary.

This breaks up a strongly connected component of 9, which was the largest
remaining.  Now the largest remaining is 5.
2019-11-27 13:33:28 -05:00
Paul Licameli
5459a7bf27 EffectsPrefs discovers all registered effect families...
... instead of keeping an exhaustive list of them with hardcoded preference
paths.  And some duplication of string literals for those paths is eliminated.

One small piece of improvements of preference path handling.
2019-11-26 12:02:03 -05:00
Paul Licameli
af3b54ba2a EffectsPrefs queries PluginManager for checkbox settings paths 2019-11-26 11:55:58 -05:00
Paul Licameli
82e3ec6818 Don't duplicate registry path calculation in PluginManager.cpp 2019-11-26 11:02:35 -05:00
Paul Licameli
15983499c8 New virtual function in ModuleInterface 2019-11-26 11:02:35 -05:00
Paul Licameli
9333b1ff0f remove unused 2019-11-26 11:02:35 -05:00
David Bailes
14b53e6736 Bug 2251 - Windows: NVDA sometimes reads the name of the track twice
Problem:
Currently calling Track::EnsureVisible() also sets the track as focus.
In Audacity 2.3.3 the timing of the code to set the focus was changed. Rather than a direct call, an event is queued, and then the focus is set. This has changed the timing of the focus event which is sent with respect to other focus and name change events. In particular in the case of toggling the selectness of the focused track, this moved the focus event to be after the name change event.
These changes only had an effect on NVDA - Jaws and Narrator were unaffected.

The introduction of this bug has highlighted an existing problem.
1. There are a small number of existing cases where a track needs to be visible, but where it is already the focus, and so setting the focus is unnecessary. For example, pressing Enter to toggle whether a track is selected.
2. Some of the Audacity code which calls EnsureVisible() is written with the assumption that EnsureVisible() doesn't set the focus, and so there are unnecessary focus events. Whilst other code which calls EnsureVisible() assumes that it also sets the focus. Confusion.

The Fix:
Remove the setting of focus from within Track::EnsureVisible(), and so remove the unnecessary focus events.
Calls to set the focus were added before calls to EnsureVisible where the code was relying on EnsureVisible to set the focus. In TrackPanel::ProcessUIHandleResult, and TrackPanel::OnMouseEvent, I wasn't sure if the focus needed to be set, so called it anyway to ensure that the behaviour did not change.

So I would like to remove the setting of focus from within Track::EnsureVisible(), and add explicit calls to set the focus where necessary.
I think this would make the code clearer, remove unnecessary calls to set the focus, and make it easier to keep NVDA happy.
2019-11-26 14:43:25 +00:00
Paul Licameli
c707edad7a Don't lose split view after undo & redo, or an effect 2019-11-26 04:49:15 -05:00
James Crook
5dca14db78 Shorten pull request template.
It gets included in some pull requests, so keep it short, and refer to the wiki.
The wiki page needs to be less off putting too, but that's for another day.
2019-11-24 21:54:18 +00:00
Geoffrey McRae
b3ade99a58 Fix loading of LV2 effects that have Event ports (Calf Plugins)
The Calf plugin suite exposes Event ports which is currently not supported or defined in `liblilv`, so instead of flat rejecting the filter, test the port name for `Events` and allow them to load.
2019-11-24 21:33:25 +00:00
Philipp Claßen
af79017f3a Prevent heap-use-after-free crash 2019-11-24 21:09:39 +00:00
Lars Wendler
b280253e60 build: Fix bad include path
tracks/labeltrack/ui/LabelTextHandle.cpp:25:10: fatal error: ../../../images/Cursors.h: No such file or directory
     25 | #include "../../../images/Cursors.h"
        |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
  compilation terminated.

Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
2019-11-24 21:04:10 +00:00
Paul Licameli
92bdec7a46 Split wave and spectrogram views...
To get a split view: move the mouse near the top or bottom of a wave track view
until the cursor changes to "north-south", then drag and release.

When a separation of views exists, the separation line can be dragged again.

You can drag until one of the sub-views shrinks to nothing.  There is a certain
snapping (now 5 pixels) to make this easier and prevent very small views shorter
than that.

Notes:

- ESC key before mouse release cancels the drag, as expected.
- Either wave or spectrum view can be on top, depending on how you drag.
- Please note, and test, that the vertical ruler also divides in two portions,
and that all mouse drag actions (including spectral selection) in the track
view or the ruler are available, and only those proper for the sub-view.
- If you have a stereo track, then the wave and spectrum views keep the same
height proportions in the two channels.
- If you want to drag the channel separator instead, unfortunately there is no
difference yet between the preview cursors.  North-south seems the most sensible
cursor for both of these drags, among pre-defined cursors.
- The drop-down menu of the track control panel may now have two checkmarks, for
spectrum and for either Waveform or Waveform dB.  Selecting any of those items
causes that view type to become the sole view.
- In my opinion, the behavior above is not satisfactory.  I think the more
consistent user interface would have only Waveform and Spectrum items as a
non-exclusive radio button choice in the menu, while the choice between linear
and dB waveform view should be part of the right-mouse popup menu in the
vertical ruler, analogous to the choice among scales for spectrum view.
- The 'VIEW property of *TRACK* in Nyquist is now a list rather than an atom
when there is a split view.  None of the existing .ny plug-ins that ship with
Audacity need to be changed, because they only ever test whether the property
is nil, indicating that an effect preview is being computed.
2019-11-23 17:28:48 -05:00
Paul Licameli
54e0df5660 Implement a dragging handle to adjust wave track sub-view heights 2019-11-23 16:44:42 -05:00
Paul Licameli
d26b55ee3c WaveTrackSubView has a back-pointer to the WaveTrackView 2019-11-23 15:27:04 -05:00
Paul Licameli
e3d9fd95ab If track has multiple views, pass a list in 'VIEW property to Nyquist...
... this makes no difference to any of the .ny plug-ins now in the project,
which only ever test whether the view type is NIL, signifying preview
2019-11-23 15:24:16 -05:00
Paul Licameli
af9959dc98 Rewrite WaveTrackView::GetSubViews to cache last computed heights 2019-11-23 15:02:09 -05:00
Paul Licameli
125b8ad0da Wave track context menu has non-exclusive check items for display type 2019-11-23 14:57:29 -05:00
Paul Licameli
f694d75993 Define ClientData::FindIf 2019-11-23 14:52:47 -05:00
James Crook
846938e871 Set BUILD_LEVEL back to 0 and Version to 2.4.0, ready for onward development. 2019-11-23 09:30:06 +00:00
Max Maisel
5f0c02273e Fix Loudness effect unit tests
Introduce new helper functions which handle selection and update
scripted selection to new upstream.
2019-11-22 19:42:33 +01:00
Max Maisel
f911bdb46c Include ProgressDialog.h in Loudness effect. 2019-11-22 19:42:33 +01:00
Max Maisel
b4821228df Rename Loudness effect to "Loudness Normalization". 2019-11-22 19:42:33 +01:00
Max Maisel
0bac2a5e75 Add Loudness effect RMS unit tests. 2019-11-22 19:42:33 +01:00
Max Maisel
ed1e7ee37a Implement RMS normalization in new Loudness effect. 2019-11-22 19:42:33 +01:00
Max Maisel
2649179ef3 Add Loudness effect perceived loudness unit tests. 2019-11-22 19:42:33 +01:00
Max Maisel
1d60a3882f Add colors to Octave unit test results. 2019-11-22 19:42:33 +01:00
Max Maisel
d9608cddea Implement perceived loudness normalization in new Loudness effect. 2019-11-22 19:42:33 +01:00
Max Maisel
8555018bd4 Implement EBUR128 integrative loudness class. 2019-11-22 19:42:33 +01:00
Max Maisel
a94cda94ae Create empty EBUR128 class.
This class will contain all EBU-R128 related analysis code.
Add all new files to all build systems as well.
2019-11-22 19:42:33 +01:00
Max Maisel
d8424755d1 Add buffer handling and flow control code to new Loudness effect.
Currently, the effect still does nothing.
2019-11-22 19:42:33 +01:00
Max Maisel
c002165952 Add EBU R128 k-weighting filter implementation to Biquad. 2019-11-22 19:42:33 +01:00
Max Maisel
c3d25cfb44 Remove all Loudness related code from Normalize effect. 2019-11-22 19:42:33 +01:00
Max Maisel
e439e8f4c7 Consistently use double within Biquad filter coefficient calcultations.
This avoids catastrophic rounding errors which can even lead to filter
instability in some cases. This is a real problem in the coming IIR envelope
detector.
2019-11-22 19:42:33 +01:00
Max Maisel
86ae0460c9 More Biquad refactoring. 2019-11-22 19:42:32 +01:00
Max Maisel
064ddb5a54 Refactored filter calculation out of ScienFilter into Biquad.
This allows easy code reuse in other effects.
2019-11-22 19:42:32 +01:00
Max Maisel
6da48db127 Start work on new Loudness effect
This is based on my old loudness effect prototype which was included
in the Normalize effect.

Create all source files and add them to all build systems.
Currently, the effect only consists of a GUI mockup.
Create Octave+mod-script-pipe based dummy unit-test as well.
2019-11-22 19:42:32 +01:00
James Crook
008d8d8c8c Set BUILD_LEVEL 2, ready for release. Audacity-2.3.3 2019-11-15 11:14:55 +00:00
James Crook
fe8739a362 Add modified mac build_dist script.
This is for convenience and does some of the manual steps.
2019-11-15 10:31:23 +00:00
Paul Licameli
eb2161d3aa Fix (again) TAB key navigation to graphic EQ sliders on Mac...
... original fix was at c8d95e1

regression was at 3e98a10
2019-11-14 23:28:15 +00:00
James Crook
d3f1893e9f Add forum and developer links to README.md 2019-11-13 22:21:47 +00:00
Steve Daulton
199d334614 Create README.md 2019-11-13 22:11:35 +00:00