1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-19 06:07:42 +02:00

229 Commits

Author SHA1 Message Date
Paul Licameli
4e461f8755 Explicit scrub shut-down signal replaces the "nudge" 2018-08-27 16:41:45 -04:00
Paul Licameli
303ac9367a Start scrub polling before the PortAudio stream...
... A part, but only a part, of the fix for "bounce" at start of scrub
2018-08-27 16:41:45 -04:00
Paul Licameli
550d514e06 Changes of names and comments relating to scrub, don't mention queue 2018-08-26 10:01:06 -04:00
Paul Licameli
eeb5f1ec20 Revert "Fix the hiccup at the start of scrub or play at speed..."
(It didn't really achieve what that commit comment said)

This reverts commit 26f72b110ceb07bc837eec5450084c6f5421ebb7.
2018-08-25 19:42:12 -04:00
Paul Licameli
06b5d2e945 Bug1932 followup: Times, not sample counts, in scrubbing options...
... because the correct rate is not known where options are constructed
2018-08-20 20:44:10 -04:00
James Crook
3bb48a21df Bug 1932 - (Residual) Fix stopping behavior with Play-At-Speed.
1. The rate actually used by the sound card now sets the stopping sample number.
2. The tolerance in the 'stop position' is additionally trimmed to 20 samples.
2018-08-19 10:37:43 +01:00
Paul Licameli
26f72b110c Fix the hiccup at the start of scrub or play at speed...
... We need to start the polling of mouse state before starting the audio
stream, and not "nudge" AudioThread, so that AudioThread primes the ring
buffer correctly, not inserting some silence.

This requires yields to timer events in AudioIO::StartStream.
2018-08-16 21:21:44 -04:00
James Crook
ddd1494e75 Fix crash from following NULL pointer
GetControlToolBar() can return NULL when closing windows/projects.
2018-08-09 18:29:57 +01:00
Paul Licameli
1c5e523a1e A preference governs where the pinned head goes, not always exact center 2018-08-06 21:58:42 -04:00
Paul Licameli
7cfda551dd Move scrub click handling into a UIHandle, eliminate OnMouseEvents...
... And the one-shot hack can be simplified away.
2018-08-05 17:18:25 -04:00
Paul Licameli
153eb63b3e Rest of quick play mouse handling is invoked from UIHandle...
... and ESC key aborts the drag of play region
2018-08-05 17:18:25 -04:00
Paul Licameli
aeece118e8 Rewrite the handling of quick play indicators...
... All updates of position are done in DoGetRectangle().  Ruler need only
expose one function, DrawOverlays().

Don't redraw indicators twice when dragging (hiding and showing again), making
some flicker.  Just do one update.
2018-08-04 15:35:36 -04:00
Paul Licameli
5f27ae905c Changed misleading terminology in scrubber...
... It was confusing that HasStartedScrubbing() could be true
while also not IsScrubbing()
2018-07-29 14:20:11 -04:00
Paul Licameli
98a72acfb8 Remove unnecessary moves of return values 2018-07-24 21:25:22 -04:00
Paul Licameli
e432883dec Fix deprecation warnings with wxFont, wxPen, wxBrush ctors...
... Replace some enum constants with the equivalent values from the more
special-purpose enums, as the wx header files recommend, so overloading
selects the ctors with non-int arguments.

In a full rebuild of the debug project on Mac, this reduces the count of
warnings from 264 to 274.
2018-07-23 13:21:15 -04:00
James Crook
f0637eeb85 Bug 1906 - Issues with dynamic Play-at-Speed (Play doesn't pop up)
Fixed issue 1, i.e. the play button does not pop up after play at speed completes.
2018-07-21 21:14:30 +01:00
James Crook
5caa14e4f9 Bug 1906 - Issues with dynamic Play-at-Speed (Shows as Scrubbing)
Fixed issue 2, i.e. the scrub indicator no longer appears during Play at Speed, and the status bar now says 'Playing at Speed' rather than 'Scrubbing'.
2018-07-21 19:11:08 +01:00
James Crook
f5999954c4 Fix crackle when playing at low speed. 2018-07-20 23:10:37 +01:00
James Crook
17ca54ad4b Bug 133 - Enh: Play-at-Speed slider: Change of playback speed is no longer automatic
This adds a new preference to Playback prefs, VariSpeedPlay, on by default, which makes it possible to vary the playback speed slider whilst audio is playing using play at speed.  The code uses the Scrubbing playback engine.

This code is not final, but is already useful.  Known issues:
  1- Playback does not stop and pop-up the Play at Speed button at the end of playing the selection.
  2- The scrub widget shows uselessly on the scrub ruler when in Play at Speed mode and the status bar proclaims 'Scrubbing'.
  3- At low speeds the playback is clicky, with VariSpeedPlay, even if no changes to speed are being made.

If we can't fix both 1 and 2 by 2.3.0 release time, VariSpeedPlay will be made false by default.
2018-07-20 21:43:07 +01:00
Paul Licameli
bb7b77cde0 Change expansion of XXO and pass more arguments to CommandManager 2018-03-15 23:29:27 -04:00
andheh
50901b9454 fixed initialization order warnings 2018-03-06 21:29:54 +00:00
James Crook
1c988b4e3a Automation: AudacityCommand
This is a squash of 50 commits.

This merges the capabilities of BatchCommands and Effects using a new
AudacityCommand class.  AudacityCommand provides one function to specify the
parameters, and then we leverage that one function in automation, whether by chains,
mod-script-pipe or (future) Nyquist.

- Now have AudacityCommand which is using the same mechanism as Effect
- Has configurable parameters
- Has data-entry GUI (built using shuttle GUI)
- Registers with PluginManager.
- Menu commands now provided in chains, and to python batch.
   - Tested with Zoom Toggle.

- ShuttleParams now can set, get, set defaults, validate and specify
the parameters.
- Bugfix: Don't overwrite values with defaults first time out.
- Add DefineParams function for all built-in effects.
- Extend CommandContext to carry output channels for results.

We abuse EffectsManager.  It handles both Effects and
AudacityCommands now.  In time an Effect should become a special case of
AudacityCommand and we'll split and rename the EffectManager class.

- Don't use 'default' as a parameter name.
- Massive renaming for CommandDefinitionInterface
- EffectIdentInterface becomes EffectDefinitionInterface
- EffectAutomationParameters becomes CommandAutomationParameters
- PluginType is now a bit field.

This way we can search for related types at the same time.

- Most old batch commands made into AudacityCommands.
The ones that weren't are for a reason.  They are used by mod-script-pipe
to carry commands and responses across from a non-GUI thread to the GUI
thread.

- Major tidy up of ScreenshotCommand
- Reworking of SelectCommand
- GetPreferenceCommand and SetPreferenceCommand
- GetTrackInfo and SetTrackInfo
- GetInfoCommand
- Help, Open, Save, Import and Export commands.
- Removed obsolete commands ExecMenu, GetProjectInfo and SetProjectInfo
  which are now better handled by other commands.

- JSONify "GetInfo: Commands" output, i.e. commas in the right places.

- General work on better Doxygen.
    - Lyrics -> LyricsPanel
    - Meter -> MeterPanel
- Updated Linux makefile.
- Scripting commands added into Extra menu.
- Distinct names for previously duplicated find-clipping parameters.
- Fixed longstanding error with erroneous status field number which
  previously caused an ASSERT in debug.
- Sensible formatting of numbers in Chains, 0.1 not 0.1000000000137
2018-02-24 14:20:22 -05:00
Paul Licameli
2fbe04eda0 Replace more Connect with Bind; needed redeclaration of custom events 2018-02-21 19:30:40 -05:00
Paul Licameli
2f3604bdea Rewrite many calls to Connect() with Bind()...
... it's the more modern way, and does better type checking, without the
dubious casts of pointers-to-member-functions.
2018-02-21 19:28:11 -05:00
Paul Licameli
bf5228267a Calls to Disconnect or Unbind in destructors are not needed, if...
... it's either the source of the connection that is being destroyed, or other
object (such as an ancestor window) transitively owning it and so causing it to
be destroyed too;

or, the sink is being destroyed, and that sink is a wxEvtHandler (which is
always so for Disconnect, though not for Unbind in case Bind was passed a
member function of a non-wxEvtHandler).

wxWidgets takes care of erasing the connection in such cases.

This removes most calls to Disconnect and Unbind.  Many destructors shrank to
nothing.

Notably, in case of popup menu handling, the call to Disconnect is not removable
because the object being destroyed is neither the source nor the sink.
2018-02-21 19:28:06 -05:00
Paul Licameli
ab6de1181d No more functor objects; all command handler functions take same args 2018-01-05 09:27:29 -05:00
Paul Licameli
6dead232f2 Pair CommandHandlerFinder with functor everywhere, but not used yet 2018-01-05 09:27:25 -05:00
Paul Licameli
d263eaa97b Remove the special PopupFunctor, redo it by other means...
... it was only used, so far, by the scrubber.
2018-01-05 09:27:23 -05:00
Paul Licameli
e2129feac9 Translate the items in the popup menu of the scrubbing ruler 2017-09-10 19:21:36 -04:00
Paul Licameli
3e1890f20d Bug1627 again: Fix it so that we don't disable all scrub, though! 2017-07-21 02:12:05 -04:00
Paul Licameli
57e040070c Bug1627: Fix infinite recursion of error dialogs, failing start scrub 2017-07-21 01:39:13 -04:00
Paul Licameli
812f3649de Bug 1685: garbage status bar messages and tooltips, scrub in Windows 2017-07-14 23:02:32 -04:00
Paul Licameli
ffbc4d5f90 Simplify iterations over TrackPanelCells with range-for 2017-06-17 03:01:40 -04:00
James Crook
bc55087968 Bug 1492 - Using Scrub Ruler to start Scrub or then change to Seek removes the selection 2017-05-15 17:55:49 +01:00
windinthew
db3ec50236 Fix missing or conflicted access keys
Also reinstate 'Store' and 'Retrieve' for save and recall of
selection and cursor point.
2017-04-21 04:24:08 +01:00
James Crook
47fb879157 Don't translate the empty string. 2017-03-18 18:04:56 +00:00
Paul Licameli
5036583549 Fewer inclusions of AudacityApp.h 2017-03-17 17:52:24 -04:00
Paul Licameli
53936ac970 Fix some warnings for unused variables and labels...
... But not in cases where a return status is ignored.
2016-09-19 11:47:47 -04:00
James Crook
65c7e8051a ThomasFeher - Unused parameters clean up. 2016-09-11 20:31:49 +01:00
James Crook
315679dad5 Bug 1508 - Scrubbing: Release mouse to exit Scrub Mode started by click & drag in Scrub Ruler 'no longer working'
It WAS working, just not the way QA wanted, because releasing mouse click when in the ruler and on the first seek continued the seek/scrub cycle.  Introduced a 'mInOneShotMode' variable to complete the baroque behaviour in the way that was requested.  Also updated tool tip code to reflect the one-shot and non one-shot difference in tooltip and status.
2016-09-08 19:02:55 +01:00
James Crook
8886d1ba41 Bug 1487 - Scrub and Seek are enabled when there is no audio to operate on
I added a new flag, HasWaveDataFlag that checks not only for the presence  of a WaveTrack but also for audio actually in it.  This is now applied to the Scrub and Seek menu items, with the result that they grey out in the menu, and their buttons are dulled on the toolbar, if there is no audio.
2016-08-22 13:25:05 +01:00
James Crook
f9d269bcee Change ScrubBar to ScrubRuler
This also makes it clearer in the code when we are dealing with a Toolbar ID (for the scrubbing toolbar) and when we are dealing with a button ID (for enabling/disabling the scrub ruler).
2016-08-22 12:25:36 +01:00
James Crook
53bb478600 Bug 1457 - Transport Menu "Scrub" and "Seek" do not correctly indicate when either Scrubbing mode is active 2016-08-11 22:30:51 +01:00
James Crook
5939fe66e8 Bug 1053 - [Scrub Phase I] Status Bar messages incomplete for scrub started with menu or shortcut. 2016-08-10 21:57:29 +01:00
James Crook
48ad701e57 Bug 1421 - When Scrubbing the Play button in the Transport Toolbar should not change its icon 2016-08-10 21:04:46 +01:00
James Crook
e96edb8f26 Bug 1457 - Transport Menu "Scrub" and "Seek" do not correctly indicate when either Scrubbing mode is active 2016-08-10 19:17:40 +01:00
James Crook
8dd93ef2a8 Bug 1467 - New pref for pinned head should move to the Prefs>Tracks
Also updated the wording as per comment #2 in Bug 1467.
2016-08-10 18:38:37 +01:00
Steve Daulton
6089c94971 Fix bug 1473
Disallow scrub / seek during record.
2016-08-09 14:10:04 +01:00
Paul Licameli
6a4d6ceeda Separate source files for ScrubbingToolBar 2016-06-25 15:05:17 -04:00
Paul Licameli
a18dce3e0a Correct the display when switching to seek with left click 2016-06-17 17:41:00 -04:00