Fix:
In the constructor for Mixer, the start and end times should be in seconds, not sample numbers.
Also fixed in passing, in computing end time of a track, the max of the two channels should be used, rather than the min.
* Eliminate ModuleManagerInterface...
... It was there only to provide RegisterModule(), but that was not used
anywhere. So simplify.
* Remove nested #include of ModuleInterface.h
... Require the declarations to be in .h files, to be sure graph.pl detects the
dependencies.
Only one more #include was needed in Nyquist.cpp. This doesn't reveal any
more hidden cycles.
... Requires some more wx header inclusions, a renaming of CopyFile (to avoid
colliding with a certain macro changing it to CopyFileW), and an explicit
deletion of a copy constructor and assignment (to avoid generation of
std::vector members for an incomplete type)
... That is, present translators with msgids containing only the descriptions
of the file types. No punctuation.
This eliminates the last wxFileDialog, replacing it with FileDialogWrapper.
... because the two macros have the same expansion, and are both checked for
in the --keyword arguments passed to msgfmt by locale/update_po_files.sh.
This commit makes ONLY such changes, and comments in Internat.h. It is big
but quite harmless.
The intention is to introduce a type distinction in a later release, by defining
XXO differently. XXO is used where & characters in strings (for hotkeys of menu
items or control prompts) are permitted, XO where not.
... Moved many misplaced ones, which msgfmt would not have extracted into
audacity.pot.
Duplicated some of them, to appear with related but distinct msgids.
Added a few new comments.
Deleted one that was no longer needed in ProjectManager.cpp.
Several of the dialog were missing acccess keys.
Note: access keys not added to Distortion effect as yet, due to complexity of control names changing when the Distortion type is changed.
... Wrong results could happen in effects that don't compute the channels
independently, such as the built-in Reverb.
To fix it, always fetch same position of left & right channels when
computing effects.
This removes the ability to import/export multiple presets at
once and add the standard method used by the other plug-ings.
It also adds a workaround for the AU view not updating after
setting a new preset. I will continue to look for the true
cause of this, but the workaround does correct the display
issue.
... without making undesirable dependency cycles.
Eliminate calls to NewWaveTrack in effects, but in Edit>Copy too, which was
not mentioned in the bug report. (Copying a track, deselecting all, and pasting
preserved CLIP colors, but not the TRACK color setting which applies to newly
generated clips.)
Instead, always use the new function WaveTrack::EmptyCopy from the track to be
later replaced, getting color information.
NewWaveTrack is still used in benchmark test, import, the Track menu
commands that make new tracks, recording to new tracks, and generators without
a selection, where there is no track to copy from.
Also when deserializing tracks from the .aup file, in which case the saved
color is later retrieved from the file.
Also, in mix-and-render, where other logic decides whether to copy colors
afterward.
See commit a9658e6ef7
Nearly all of the entire preset handling was broken. It was based
on the parameter names only and for various reasons, that was very
inadequate.
So, it now uses the recommended approach.
EffectChangePitch:: Don't use the inputTracks() when building the GUI
in Batch mode.
Repeat and NyquistEffect had the same problem as they could call
FindProject() which used inputTracks() on a closed project. Fixed by a change in Effect::GetSelectionFormat().
... Force you to pass bool now. Break compilation in case you pass literal
"false", rather than implicitly converting it to bool true !
See commit 7766d9a192 which was in 2.3.2
But Max merged later at d9608cddea in 2.4.0, with
his effect apparently written analogously with the old code in Normalize from
before that, and this quetly compiled with the wrong effects.
... or, what I saw in my Mac builds: there wasn't a hang, but there was
incorrect behavior on alternate attempts to export presets. Sometimes, instead
of (correctly) giving a file overwrite warning, there was instead a message
box about failure to open a non-existent file path, which had the last path
component duplicated.
Problem:
Screen readers don't automatically read the units of the values in text boxes.
Fix:
Add units the the accessibility name of the text boxes.
Thanks to Paul for providing ShuttleGui::NameSuffix(), which makes the code neat and readable.
Big Thanks to Steve for finding this and writing clear steps to reproduce when logging this bug in Bugzilla. Also thanks to Peter for confirming the same bug is present on Windows, i.e. is all platforms, not just Linux.
This is a minimal fix for this bug, and can be improved on in time. There is almost no error checking in the file read and write, so if you use a bad presets file, you won't be told (yet).
It does provide import and export for all effects that have presets.
Problem:
Validation of the length fails, because what should be the min and max are in fact the max and min.
Introduced by commit 1d32824, which got the min and max the wrong way round.
Nyquist has a limit (less than 2000) for the number of arguments
which may be exceeded when creating the *track* clips property.
In the event that there are more than 1000 clips in a track,
Audacity will now only add the first 1000 clips to the *track* property
and add NIL as the 1001th.
... removing link dependencies on them from src/menus, so they are now suitable
for moving out into modules.
They are:
Mixer Board
Karaoke (also called Lyrics)
History
Contrast
Plot Spectrum
Their header files are now no longer included anywhere but in their own
implementation files!
These are ancient and "configunix.h" was being pulled in
via Types.h. Nothing major, but they were generated for
a 32-bit system and "may" cause problems when used on
64-bit systems.
(That's unlikely though since they haven't all this time.)
... 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
* Calculate loudness for short or silent selections as well.
In case of selections shorter than 400ms (one momentary loudness block),
take what we have got and divide only be the actual length.
Abort loudness normalization silently if the selected audio is all
silent.
* Fix loudness effect bug when selection includes a gap.
If the selected audio in a track contained a gap between two clips,
an incorrect amount of samples was processed.
... consistently with the drop-down menu, and now the Tracks Preferences too.
Only distinguish Waveform and Spectrogram and nil.
See also commit e3d9fd9.
... you use the prompt, and you enter a complete script with control comments
that are reinterpreted to put up a second dialog.
This simplifies Effect::Delegate() and avoids mutual recursion of ShowInterface
with DoEffect.
... and Track::GetOwner() is publicized, so that now you can find the
the AudacityProject, if any, that owns a given Track; this will help eliminate
some uses of GetActiveProject