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

9270 Commits

Author SHA1 Message Date
Imre Kristoffer Eilertsen
218eb67316
Fixed 4 spelling errors 2018-10-14 06:33:18 +02:00
Imre Kristoffer Eilertsen
6f546de929
Updated the Norwegian translation quite heavily 2018-10-14 03:55:07 +02:00
James Crook
cdf9d63760 Bug 1979 - Activate Paul's fix for Windows too.
I tested the basics, and no block files were lost.
2018-10-13 22:02:09 +01:00
James Crook
ffa67d2b1e Split AudioIO into two classes
AudioIO.cpp has nearly 6000 lines and needs to be broken up into separate aspects.
The main point of the new split is to better separate the time critical callback code (that runs in the portaudio thread) from the code that interacts with the disk (that runs in the Audio Thread).
2018-10-13 21:38:35 +01:00
James Crook
26086a4142 Split MenuCommandHandler into three classes.
Menus.cpp is over 10,000 lines.  The main point of the split is to make possible a new .cpp file for MenuCreator, which is responsible for the creation of the menu bar, and which contains the near 2,000 line function MenuCreator::CreateMenusAndCommands()

The menu handlers are also (better) separated from the menu management.
2018-10-13 21:38:34 +01:00
Paul Licameli
529e1e2afb Bug1979 partial: Faster first-time save, if possible, on Mac and Linux 2018-10-13 13:56:05 -04:00
Paul Licameli
cbe0ea84c1 Define FileNames::HardLinkeFile, but nonfunctional on Windows 2018-10-13 13:18:17 -04:00
Paul Licameli
04b5054ad1 Reorganize commit/rollback of SetProject, prior to fixing bug1979 2018-10-13 12:55:55 -04:00
Paul Licameli
e87e15f489 Proper deferring of DirManager's commit steps when saving-as 2018-10-13 12:55:29 -04:00
Paul Licameli
ec506ab52b Define DirManager::ProjectSetter so that commit steps can be deferred 2018-10-13 12:55:29 -04:00
Paul Licameli
0db0c6e0d5 Reorganize some commit logic in DirManager::SetProject 2018-10-13 12:55:29 -04:00
James Crook
555345392e Fix Pa_IsFormatSupported query flood (from Max Maisel)
We ask 17 times for different rates, and for some drivers that is too much of a flood.
Workaround is to use a small delay between requests.
Only happens at start up, so is acceptable to just always do it.
2018-10-12 15:59:27 +01:00
James Crook
3ddb536a8e Fix eu_ES.po revision date.
XCode project gave a warning about the broken revision date.
2018-10-12 12:17:11 +01:00
James Crook
60b2dc720e Fix incorrect wxASSERT
Also update comments to explain.
2018-10-12 10:08:31 +01:00
Paul Licameli
297f3b4d84 Fix another mistake in iteration over channels in src/commands 2018-10-11 21:40:38 -04:00
James Crook
494ab4eafe Make AudioIO::Callback() code shorter
Use subroutines, wxClip and cut out some dead code.
2018-10-11 19:58:21 +01:00
James Crook
939b967497 Refactor AudioIO::Callback()
This code had got ridiculously long (for a fast callback function) and needed to be broken up into smaller clearer named functions.
2018-10-11 18:08:42 +01:00
Steve Daulton
286bf5d5be Additional comments in rms.ny for plug-in authors
Also reformatted translations as a more readable list.
2018-10-11 13:58:40 +01:00
Steve Daulton
37ec7da3c3 Throw error if Nyquist *LOCALE* is malformed
Partial translations are allowed.
2018-10-11 13:58:40 +01:00
James Crook
e20a98588c Replace pointless looping by 'if'
The for loop was only to test if *some* track was selected, and its body only needs to be executed once.
Note that an empty IteratorRange is false and one with something in it is true.
2018-10-11 12:04:43 +01:00
James Crook
15a3ea7763 Bug 2010 - Scriptables: SelectTracks and Select incorrect for stereo tracks 2018-10-11 11:29:53 +01:00
James Crook
7e5a716e65 Fix C4458 Warnings
C4458 is 'Declaration hides class member'
2018-10-10 19:46:25 +01:00
James Crook
657159d542 Fix C4189 and C4100 Warnings
C4189 is 'Local variable initialised but not used'
C4100 is 'Unreferenced parameter'

Fixed some other warnings, e.g. about empty if, too.
2018-10-10 19:46:24 +01:00
Steve Daulton
66c861315f Exclude rms.ny from update_po_files.sh script
Script run to update po files
2018-10-10 17:56:21 +01:00
James Crook
5fd95dd131 Fix C4456 Warnings.
"C4456 declaration hides previous local declaration."
These arise from repeated declarations of the same name.
2018-10-10 17:28:50 +01:00
Max Maisel
43402438f8 Link with -latomic if using clang on Linux. 2018-10-10 15:35:17 +01:00
Jorge
ac8273342f Add 2.3.0 release information in appdata 2018-10-10 15:27:32 +01:00
Jorge García
242fa748ab Add component type in appdata
This field is required in order to flathub.org to properly update app
info
2018-10-10 15:27:31 +01:00
Steve Daulton
a7d34b1743 Correct Russian translation in rms.ny
Reverts incorrect change in 665e2d0
2018-10-10 11:21:13 +01:00
Steve Daulton
297bf442a4 Fix typo in 665e2d0 2018-10-09 01:13:48 +01:00
Steve Daulton
665e2d0e9c Correction to translation of rms.ny
Update Russian translation in rms.ny and make variables local to
underscore function.
2018-10-09 01:04:05 +01:00
Steve Daulton
5d34d022a5 Add rms.ny to Audacity bundle
Tidy translation code in init.lsp
Include rms.ny in Makefile.am
Add rms.ny to Linux package
Update Makefiles with: autoreconf --force --no-recursive
Add rms.ny to mac build
Add rms.ny to Windows build
2018-10-08 18:55:46 +01:00
Paul Licameli
14fe11f4d4 Bug2008: There was error in stereo Contrast calculation, at aee4005 2018-10-07 10:29:58 -04:00
Paul Licameli
3f928a25b0 Bug2004: Opening Mixer Board with a Note track crashed...
... Just one null check was needed, but I also add another, and use a
wxWeakRef pointer, for more safety.
2018-10-06 11:20:30 -04:00
Paul Licameli
e6e4f44c81 Bug1997: Split Stereo Track and Split Stereo to Mono were doing nothing 2018-10-05 22:09:10 -04:00
Paul Licameli
b5a7b67cb7 Fix some crashes in time-shift 2018-10-04 12:02:51 -04:00
Paul Licameli
92cceaf599 Fix usage of InconsistencyException 2018-10-04 11:44:46 -04:00
Paul Licameli
90e2da7f14 Fix uses of TrackList::GroupChannels in Mix and effect preview 2018-10-04 11:34:14 -04:00
Paul Licameli
df1103822e Don't crash in Nyquist tools with mOutputTracks undefined 2018-10-04 10:56:03 -04:00
Paul Licameli
75918918c4 Correct template parameters to std::iterator base of TrackIter...
... so that std::reverse_iterator<TrackIter<T>> works right, not making a
subtle error of return of reference to a temporary in its operator * with some
compilers.
2018-10-03 22:47:21 -04:00
Paul Licameli
50f2b0e860 Bug1995: Fix drawing of stereo tracks, bug introduced at 0c0c2c0 2018-10-03 17:19:15 -04:00
Steve Daulton
8880e1b929 Fix missing initialization from a17af37 2018-10-03 21:08:27 +01:00
Paul Licameli
cc74b0273f Fix return of reference to temporary object (that's bad!) ...
... This might be the reason for Linux crashes when playing-at-speed.

This was a bad thing to do with any compiler -- not to be blamed on
possible compiler bugs.

There was a warning about this in the XCode build.
2018-10-03 14:26:05 -04:00
David Bailes
348e7868b8 1991: On Windows, nyquist effects and analysers slower than on 2.2.2
Problem: profiled the limiter effect, and found that wxGetLocalTimeMillis() in ProgressDilaog::Update was taking up a lot of time.
The slow down of the nyquist effects and analysers was introduced by the switch to wxWidgets 3.1.1, so presumably there was some change to the implementation of wxGetLocalTimeMillis()

Fix: Use wxGetUTCTimeMillis() instead of wxLocalTimeMillis() in ProgressDialog.cpp. This is much faster on Windows, and wxWidgets recommend its use to due wxGetLocalTimeMillis() being affected by start/end summer time (daylight saving time).
2018-10-03 19:18:41 +01:00
Paul Licameli
0a55b27d2d Bug1994: Crashes in append-record...
... The crash happened in drawing code.  The recently submitted but long
developed rewriting of track and channel iterations wasn't all reconciled
with the early 2.3.0 development relating to temporary track objects for
display purposes, which was for fixing the interactions of recording and undo.
2018-10-03 13:21:15 -04:00
Pokechu22
565fef2ba9 Bug 1832: Fix adjusting time track when in logarithmic scale
The typo that caused this appears to have been introduced when this code was restructured in 9e0010ec5f.
2018-10-02 21:13:23 -04:00
Steve Daulton
a17af37c1e Fix bug 1992 2018-10-02 22:40:10 +01:00
Paul Licameli
526179b63e Remove a use of c_str 2018-10-01 19:48:10 -04:00
Paul Licameli
81385d7ebd Track type switch safety; simplified iterations & channel groupings...
A very extensive rewrite.

No longer:

1 Test a type field of a track and then do a C-style pointer down-cast
2 Use verbose old iterators over tracks that required those down-casts
3 Detect that a track has a stereo partner by testing Track::GetLink();
  Detect that a track is the left stereo channel by testing Track::GetLinked()
4 Do something to one channel of a pair, then repeat on the other channel
5 Set up new or imported stereo tracks with Track::SetLinked() and setting of
  channel types

Instead:

1 -- Use track_cast, which won't cast const away, to convert a pointer, getting
     null if the track is not of the specified type
  -- Or use Track::TypeSwitch which takes lambda expressions with arguments of
     desired subtypes, entering the lambda body only if the track has the
     right type
  -- Or use TrackIterRange<...>::Visit() or VisitWhile() to apply a
     type-switch over each of several tracks.

2 -- Use TrackList::Any() or Selected() or other new functions, which return
     TrackIterRange<...> objects that represent ranges of tracks to be visited.
  -- Use the template type parameter to restrict visitation to a subtype and
     cause the pointer down-cast to be built in to the iterator deferences.
  -- Use C++11 range-for or stl algorithms with TrackIterRanges for brevity
  -- Or even avoid loops by using size() or min() or similar member functions
     of TrackIterRange.
  -- Use StartingWith(), EndingAfter(), Excluding(), and operators + and -
     (which can take arbitrary predicates on tracks) to filter the range object
     and simplify loop bodies even further.

3 -- Use Track::IsLeader() to test whether a track is first in a channel group
     (which also returns true when it is not grouped with any other track, and
     maybe not even a WaveTrack)
  -- Or use TrackList::FindLeader() to get the first member of its group
  -- Or use TrackList::Leaders() to get a track range that includes leaders
     only, then visit that range as in (2).

4 -- Use TrackList::Channels() to get a TrackIterRange that includes only
     the members of the group of a given track and visit that as in (2).
  -- Do not needlessly assume or assert that the channels are at most two.

5 -- After all the channels have been added at the end of the TrackList, just
     call TrackList::GroupChannels() passing the leader track and number of
     channels.

Most rewrites covered by (3) and (4) generalize without any complications to
possible future more-than-stereo track groupings.  In other places, there may
be some difficulty about such generalization, and those are marked with the
comments:

// TODO: more-than-two-channels

or else

// TODO: more-than-two-channels-message

where it was merely a matter of more appropriate wording for the user.  This
branch makes no changes to user-visible messages.

What isn't changed in the interface exposed by TrackList and Track:

-- Grouped channels are always a contiguous sub-range of all tracks, and
   client code may rely on that assumption.

What isn't changed in the implementaion:

-- Channel groups are never yet actually more than two.
-- The grouping of channels is still represented by a boolean flag in each
   track that is true only for the first channel of each stereo pair.
-- The persistent representation of channel groups in .aup files.
2018-10-01 13:42:37 -04:00
Paul Licameli
8fcbbaeea9 Encapsulate details of setting-up of channel groups in TrackList...
... except that WaveTrack needs to be a friend, just for reloading from disk.

Nothing yet is changed in the internal or persistent representation of channel
groups.
2018-10-01 13:42:36 -04:00