1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-20 06:10:06 +02:00

277 Commits

Author SHA1 Message Date
Leland Lucius
f36fe29f96 Fixes for bugs 1122 and 1113
Several other issues were also fixed (hopefully ;-)).

This is a major change to accelerator handling and keyboard
capturing.  Menu shortcuts, non-menu commands, label editing,
navigation, and basically anything else were you might use
the keyboard should be thoroughly tested.
2015-08-08 00:01:24 -05:00
Leland Lucius
37168ebbf6 Merge remote-tracking branch 'upstream/master' into wx3 2015-07-28 15:06:25 -05:00
Leland Lucius
5bdfcff97d Menu shortcut hiding has been removed
It had been causing problems in Unity for a while now and they
were missing on OSX as well in wx3.  So, the old menu Open/Close
method of hiding has been removed and replaced with an event
filter/monitor which looks for wxEVT_CHAR_HOOK events to pass
key events to the handler that has the keyboard captured.
2015-07-28 14:35:09 -05:00
Paul Licameli
4a4918a3f8 More uses if IsUnsafe() or IsAudioActive() 2015-07-28 11:49:53 -04:00
Paul Licameli
f35d519c21 Define AudacityProject::RollbackState() for reuse elsewhere 2015-07-28 11:49:52 -04:00
Paul Licameli
d39eaa4e65 Remove WaveTrack.h from other headers 2015-07-28 10:02:05 -04:00
Paul Licameli
6b9e7506dd Ruler-drawing does not assume uniform zoom, ...
... and AdornedRulerPanel exposes an invalidation function for later use
2015-07-19 11:44:18 -04:00
Paul-Licameli
5418ce377b Move PositionToTime, TimeToPosition into class ZoomInfo ...
... and use them in many more places in TrackPanel.cpp, so there are fewer
direct uses of ZoomInfo::zoom.

Also use then in horizontal scrolling code
2015-07-19 11:44:04 -04:00
Paul-Licameli
5a6d5d1443 Add and use some ZoomInfo and ViewInfo member functions, so we can eliminate...
... miscellaneous direct uses of ZoomInfo::zoom to test and set zoom level.

This includes all the remaining assignments to it.

But moving TrackInfo::PositionToTime and TrackInfo::TimeToPosition into
ZoomInfo and using them is needed to eliminate many more uses.

Also #if'd out the unused AudacityProject::OnZoomToggle().
2015-07-19 11:44:02 -04:00
Paul Licameli
79305db179 Project.h does not need Meter.h 2015-06-10 00:29:47 -04:00
David Bailes
391bd1691c status bar state field. When you move to the menubar, the state field is no longer cleared. This was achieved by introducing a dummy field of width 0. When you first open a new audacity project, the state is stopped - previously the state only appeared after the first play/pause/etc command. 2015-06-02 15:18:46 +01:00
Leland Lucius
0ef7ccb1d1 Fix permissions...not sure why this was happening though 2015-05-29 19:49:28 -05:00
David Bailes
5c67bc38b3 Add a field to the status bar to show the state of Audacity, eg play/record/play pause. This is useful so that screen readers can easily read audacitys state. 2015-05-29 17:47:43 +01:00
Paul Licameli
6810095509 Removed some functions never called, code never reached, fields never used 2015-05-29 00:13:50 -04:00
Paul Licameli
c84eeabe97 Bug 986 and other changes for more consistent zoom all and zoom fit...
... when there is audio before time zero.
2015-05-28 20:22:42 -04:00
Paul Licameli
f07a487e47 Bug977: Enable new scrolling limits as a Tracks preference, default off. 2015-05-27 18:47:03 -04:00
Paul Licameli
fa3f91b38d Horizontal scrolling snaps 0 to left edge and guarantees it is reachable 2015-05-26 21:28:22 -04:00
Leland Lucius
cd11ddea43 Fix bug #883 2015-05-24 06:24:27 -05:00
Steve Daulton
b9dd3e64c6 Fixes for bug 844 2015-05-15 21:17:24 +01:00
Daniel Winzen
759ff8cd0d Performance improvements 2015-04-23 16:07:25 +02:00
Leland Lucius
80c3705e7c Add new files and fix Linux includes 2015-04-17 17:37:28 -05:00
Leland Lucius
3e1fbcd5ec Additional autosave speed improvement and 1 fix
This changes the autosave XML file to a binary representation
during writing to speed up autosave processing.  A lot of the
time used during autosave is a result of having to convert and
print all of the values to the XML file.

Writing the same information, but in binary format, reduces
all of that to just the bare essentials and the actual write
I/O.

During recovery, the binary file is read and converted to
the real xML representation and processing happens as it
did before.

It is a noticeable difference with very long or many tracks.

The included fix has to do with append recording.

Say you have 3 tracks and you want to append recorded audio
to the middle track.  Sometime later Audacity crashes and
upon recovery, the recorded audio is actually appended to
the third track, not the second one.

This fixes that by adding an "autosaveid" to each track as
it is written to the autosave file.  The same ID is written
to the recording recovery appends to the autosave file.

Then, during recovery, the IDs are matched up and the audio
gets appended to the proper track.

These autosaveid attributes are only present in the autosave
file and not in saved project files.
2015-04-17 16:58:26 -05:00
Paul-Licameli
2b85d0edb4 Preliminary function argument list changes and comments, for scrubbing project
In particular, use an options structure for AudioIO::StartStream to simplify
calls

ControlToolBar::PlayPlayRegion also takes that structure as an argument, and a
SelectedRegion instead of two times

And other changes
2015-04-17 02:25:39 -04:00
Leland Lucius
8fbfa460c4 Migrating the remaining effects
This brings the builtin, LV2, and VAMP effects inline with the
Audio Units, LADSPA, and VST effects.  All effects now share
a common UI.

This gives all effects (though not implemented for all):

User and factory preset capability
Preset import/export capability
Shared or private configuration options

Builtin effects can now be migrated to RTP, depending on algorithm.
LV2 effects now support graphical interfaces if the plugin supplies one.
Nyquist prompt enhanced to provide some features of the Nyquist Workbench.

It may not look like it, but this was a LOT of work, so trust me, there
WILL be problems and everything effect related should be suspect.  Keep
a sharp eye (or two) open.
2015-04-16 23:36:28 -05:00
Paul-Licameli
7d6de21e3a Enh809 - Add persistency of spectral selections, including those in labels 2015-04-10 15:20:50 -04:00
Paul-Licameli
5d19887da6 Bug812 - Vertical scrollbar position should be persistent too, as is horizontal
Effective but perhaps inelegant fix.
2015-04-10 15:20:32 -04:00
Leland Lucius
2457579091 Bug 765 - Delays using Edit commands and Draw Tool in long projects
A 4hr track used to take about 20s to cut a few samples. This is now significantly improved, to around 3s. Leland did this by

(a) moving the size calculation to when we examine the undo history, so it isn't slowing down the edits.
(b) in size calculation, using sizes that are cached rather than going to disk to find the sizes.
(c) writing the autosave file which is to an FFIle to a string first, i.e. using XMLStringWriter as a buffer for XMLFileWriter.

Step (c) may also make autosave marginally safer, as the risk of a partially updated autosave file is reduced.
2015-04-07 12:20:50 +01:00
lllucius@gmail.com
b24fccfb17 Fix build on Linux and Mac 2014-12-17 19:31:58 +00:00
lllucius
fe42e881a5 First stab at taming the meter toolbars
This should correct at least a couple of the reported
issues.  And it also has some fixes in for multiple
project support.
2014-12-17 19:16:08 +00:00
lllucius
6539d693b3 Fix for bug #783
This should correct the crash and will also correct
the problem where one project's playback/capture was
being metered in another project if multiple projects
were open.
2014-12-08 04:53:53 +00:00
lllucius
c2218d5ddf Only allow one realtime effect at a time
Warning...this required a small hack that allowed updating the
menus even if the toplevel frame is not the project window.  This
is because with the active frame actually becomes the effect dialog
and UpdateMenus() bailed if it wasn't the project frame.

This should be removed when we get multiple effect support.
2014-11-29 23:17:03 +00:00
james.k.crook@gmail.com
c71397beae Changes to seeking and scrubbing from Paul Licameli.
These are mostly under an EXPERIMENTAL_ #ifdef.  Also has a change for the prompt string for preferences so the displayed keybinding is adjusted when in multitool mode.
2014-11-29 22:09:57 +00:00
james.k.crook@gmail.com
67d2b274e2 Frequency Selection toolbar from Paul Licameli.
Linux/Mac will need new files adding to project, SpectralSelectionBar.cpp, NumericTextCtrl.cpp.
2014-11-08 15:18:43 +00:00
lllucius
080b67ce9e Adds the ability to sort and group the Effects menus
Current options:

Publisher: name (the closest to what we have now)
Name (doesn't include the publisher, just a straigt up alpha sort
Publisher (creates submenus based on the publisher)
Type (creates submenus based on the type, VST, Nyquist, etc.)

And the Linux method of creating submenus based on number of items
is available to all and you can choose how menu you want per submenu.
I had to bring this back since I'd removed it when for the new effects
and I figured why limit it to only Linux...

Check it out in Preferences (effect page).

You'll also notice that the effects page is starting to talk about 
plugins.  That will progress further (baby steps) so bare with me
for just a bit more.
2014-11-04 01:38:13 +00:00
lllucius
1eeb4d979a The fabled realtime effects...
I've made it where you can enable and disable via experimentals:

EXPERIMENTAL_REALTIME_EFFECTS
EXPERIMENTAL_EFFECTS_RACK

You will notice that, as of now, the only effects currently set up for
realtime are VSTs.  Now that this is in, I will start converting the
rest.

As I start to convert the effects, the astute of you may notice that
they no longer directly access tracks or any "internal" Audacity
objects.  This isolates the effects from changes in Audacity and makes
it much easier to add new ones.

Anyway, all 3 platforms can now display VST effects in graphical mode.
Yes, that means Linux too.  There are quite a few VSTs for Linux if
you search for them.

The so-called "rack" definitely needs some discussion, work, and attention
from someone much better at graphics than me.  I'm not really sure it should
stay in as-is.  I'd originally planned for it to be simply a utility window
where you can store your (preconfigured) favorite effects.  It should probably
revert back to that idea.

You may notice that this DOES include the API work I did.  The realtime effects
were too tied to it and I didn't want to redo the whole thing.  As I mentioned
elsewhere, the API stuff may or may not be very future proof.

So, let the critter complaints commence.  I absolute KNOW there will be some.
(I know I'll be hearing from the Linux peeps pretty darn quickly.  ;-))
2014-10-26 03:24:10 +00:00
james.k.crook@gmail.com
37608c2290 Paul Licameli's Spectral Editing Patch.
This relies on three new nyquist scripts to actually do the editing.  The peak-snapping code in FrequencyWindow has been extracted into a new class, SpectrumAnalyst, to provide peak-snapping in spectrogram too.
2014-10-18 14:19:38 +00:00
james.k.crook@gmail.com
f5e593cc4c Paul L's new SelectedRegion class replacing use of t0 and t1. Also LabelTrack.h no longer in TrackPanel.h includes.
This change is believed to be a direct refactoring that does not change functionality.  It paves the way for more complex kinds of selection, such as selections involving frequency as well as time.  It also reduces risk of left and right edges being swapped in future code using SelectedRegion, as the default is to swap on assignment if needed.
2014-10-05 17:10:09 +00:00
benjamin.drung@gmail.com
277932dccb Remove trailing spaces. 2014-06-03 20:30:19 +00:00
james.k.crook@gmail.com
6fc830c0b6 Added Steve Parry's patch that adds the Open and SaveAs commands to scripting. 2014-01-13 22:12:20 +00:00
martynshaw99
65e4f56126 Norm's patch to improve selection speed on large projects by reducing the number of unnecessary auto-saves. Maybe vertical zooming should also not trigger an auto-save? 2013-12-30 00:41:18 +00:00
lllucius
ce00d5b507 [Bug 647] Snap-To clicks find nearest snap point, not nearest previous.
Convert SnapTo from on/off to a choice of off/nearest/prior.
2013-11-01 14:13:39 +00:00
lllucius
3d95126e0e Bug 275 - Snap-To status/quantisation are global, leading to incorrect indications in multiple projects
This adds (I believe) project specific selection format.
2013-10-27 01:58:35 +00:00
lllucius
5c8baf9c16 Bug 406 - Label creation/other non-dialogue editing and keyboard selection hang on long projects
This is part 2...

Improve performance of selection via Selection bar

This provides a similar type of speed up when selecting with the keyboard via
the Selection toolbar.
2013-10-23 18:06:49 +00:00
lllucius
03f5088b6a Bug 406 - Label creation/other non-dialogue editing and keyboard selection hang on long projects
This is part 1...

Provides some relief to the selection "hang"

This patch adds the ability for the keyboard based commands (like cursor left,
extend selection right, etc.) to know when the key has been released.

When the patch is applied the current state is saved only when the key is
released and not every time it repeats.

Here's an example of the difference it makes.

This video show the selection "hang", but also watch the CPU usage.  All I'm
doing is pressing SHIFT+RIGHT ARROW.

http://youtu.be/tdMntDwGSkM

This one is the same thing bug with the patch applied.  Notice that the
selection "hang" no longer occurs and look at the CPU usage!

http://youtu.be/EpXNsQ4Cky0
2013-10-23 18:01:14 +00:00
lllucius
0bee195b0e Bug 275 - Snap-To status/quantisation are global, leading to incorrect indications in multiple projects
Make Snap To project specific

This makes the Snap To setting in the selection bar project specific.  Changing
it will no longer affect other open projects.

The state is saved to audacity.cfg when the checkbox is changed.  This means
that the next project window to open will start with the new value.  (As it
should be).
2013-10-23 17:47:00 +00:00
v.audacity
483d723a5d fix for bug 584 2013-05-11 03:29:15 +00:00
martynshaw99
1af35d4168 Removal of all the stuff marked as 'Experimental CLEANSPEECH' about a year ago. 2013-04-29 23:23:14 +00:00
richardash1981
72f6eded20 I got fed up of unused parameter warning from my compiler hiding the warnings I wanted to see, so have added WXUNUSED annotations to a lot of widely used header files, and cleaned up trailing junk on the way. 2012-12-31 16:57:15 +00:00
james.k.crook@gmail.com
30a7876593 Ctrl-Wheel Zooming now behaves like zoom buttons, so we don't zoom into empty space. 2012-05-04 11:47:29 +00:00
martynshaw99
758a8f65e6 Inserting CLEANSPEECH ifdef's around anything CleanSpeech so that CleanSpeech can be removed easily in the (not to distant) future. The idea is never to turn CLEANSPEECH on, but fix any (unexpected) differences this may make. 2012-04-26 22:57:04 +00:00