Commit Graph

9088 Commits

Author SHA1 Message Date
James Crook 40ab579442 Bug 1957 - Overdub disabled when enabled in Transport menu 2018-08-30 12:42:51 +01:00
James Crook 0b0a8bcc6a Update .pot and .po files. 2018-08-30 12:13:00 +01:00
James Crook 81fe33548c Updated translation script 2018-08-30 12:10:09 +01:00
James Crook 7f738bd647
Merge French translation update (pull request #296)
French translation update for the upcoming 2.3.0
2018-08-30 10:30:30 +01:00
Olivier Humbert 63b9bc7c8f
Update fr.po
fixes
2018-08-30 09:35:22 +02:00
Olivier Humbert 052f5d355d Update HelpText.cpp 2018-08-29 23:07:37 -04:00
Olivier Humbert ac87eddd60 Update VampEffect.h 2018-08-29 23:07:37 -04:00
Olivier Humbert 766d7f48a4
Update fr.po
fix try + timestamp update
2018-08-30 01:42:59 +02:00
Olivier Humbert 7563387162
Update fr.po
fixes
2018-08-30 01:33:09 +02:00
Olivier Humbert 12f122db3d
Update fr.po
fix
2018-08-30 01:22:53 +02:00
Olivier Humbert 61626999c0
Update fr.po 2018-08-29 22:28:51 +02:00
Paul Licameli d050afb658 Scrubbing calculation now needs clock precision greater than sample rate 2018-08-29 15:01:31 -04:00
James Crook 919571e79f Bug 1950 - Pause mutes and stops head progressing, but does not 'pause' audio.
Logic changed to delay pause by one frame, if there is a need to fade out.
So we calculate whether we are already faded out, and if we are pause, otherwise delay the real pause for one frame.
2018-08-29 19:54:11 +01:00
James Crook 41959d4d54 Bug 1952 - Windows: Timer Record - debug failure msg
Now we show "11:07:29 +" for a time 100 years, 11 hours, 7 mins and 29 seconds in the future, rather than ASSERTing.
The + should probably be mentioned in the manual.  "In the countdown, times more than 24 hours ahead aren't shown fully.  A '+' sign after the time indicates that it is more than a day ahead."
2018-08-29 15:14:28 +01:00
James Crook b5f9acefa4 Fix some warnings in AudioIO.cpp 2018-08-29 14:00:57 +01:00
David Bailes a5e9fb9e34 Bug 1949: WASAPI playback stops before the end of the selection
Problem: When using WASAPI on Windows, the last "latency buffer length" of a selection is not played. This is a fairly nasty bug for those relying on playback when making fine adjustments to the position of the cursor, or the start or end of selection.

During playback the "latency buffer length" has no effect on the actual latency of the playback, but the playback cursor is positioned as if the "latency buffer length" did have an effect, that is, it is positioned by this amount after the audio being played.

So an obvious workaround is for the user to set the latency buffer length to zero when using WASAPI. However they then have to remember to change it if they use another audio host.

Fix: The real problem is presumably a portaudio bug, but this fix just hard codes the workaround given above. For playback, when using WASAPI, set the suggested latency to 0, regardless of user setting.
2018-08-29 13:47:32 +01:00
James Crook 85c1eb4720 Fix GetInfo: Type=Labels counts channels rather than tracks. 2018-08-29 13:35:21 +01:00
James Crook 481370b7b3 Fix ASSERT opening FFmpeg Options Dialog.
Was caused by passing a non hWnd window to the ExportOptions constructor.
2018-08-29 13:25:18 +01:00
James Crook 6656506529 Update POTFILES.in, audacity.pot and .po files.
Also added script add_nyquist_to_pot.sh which adds the nyquist files.
2018-08-29 11:24:53 +01:00
James Crook 0ea4ff1395 Add internationalization hints. 2018-08-28 16:35:06 +01:00
James Crook 3da9af47ac Update .pot and .po files. 2018-08-28 15:22:39 +01:00
Paul Licameli 85f13b433f Fix Linux build... uniform initialization not implemented right in g++? 2018-08-28 07:36:39 -04:00
Paul Licameli eae38b0676 Fix Linux build 2018-08-28 06:20:04 -04:00
James Crook c56dd71bfb Add missing files to POTFILES.in 2018-08-27 22:11:01 +01:00
Paul Licameli de88c98a4b Fixes for the "bounce" at start of scrub 2018-08-27 17:03:10 -04:00
Paul Licameli 9aad60d12c Make polling loop period slightly shorter than Audio thread loop...
... but we don't need to make it as precise, using steady_clock.

Do this so that the Audio thread doesn't read the same polling message twice,
halting the scrub.  It's all right that it might miss one of the messages
instead.
2018-08-27 17:02:37 -04:00
Paul Licameli bd88a0e481 Rewrite scrub without mutex, condition variable, or message queue...
... Instead there is just a message buffer where the polling thread leaves last
observed state, not requiring each state to be processed before it is
overwritten.  The thread doing  FillBuffers is now responsible instead for the
complete interpretation of the message whenever it is reinvoked, which happens
at very regular time intervals.

In fact the separate polling thread might be eliminated, having FillBuffers
invoking the polling of the mouse directly in its own wake-ups -- unless the
platform really allows ::wxMouseState to be called safely only from the UI
thread, as appears to be the case in Linux.

Note that this complicated rewrite is accomplished incrementally in the commits
of this merge branch, not all of which leave scrubbing in a working state.
2018-08-27 17:02:36 -04:00
Paul Licameli e4e7a814c8 FillBuffers won't quit too early priming the RingBuffer for scrub 2018-08-27 17:02:36 -04:00
Paul Licameli ba52753ff7 Scrub options don't need starting time 2018-08-27 17:02:36 -04:00
Paul Licameli 9d17d335b7 Poller thread leaves messages, Audio interprets; a buffer not a queue 2018-08-27 16:53:16 -04:00
Paul Licameli 832bcef3a6 Postpone work from ctor of ScrubState to the first call of Update 2018-08-27 16:53:16 -04:00
Paul Licameli a62cf53161 Make AudioThread wake-ups as uniformly spaced as we can 2018-08-27 16:53:16 -04:00
Paul Licameli 0c0cc07686 Define utility class MessageBuffer for inter-thread messages 2018-08-27 16:48:15 -04:00
Paul Licameli 976e9aeec7 Changes to the starting and stopping of scrub/seek/at-speed...
... Necessary but not sufficient for fixing the "bounce" at start of scrub, and
for simplifying thread synchronization
2018-08-27 16:45:30 -04:00
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
Steve Daulton 27ede251d5 Don't collapse recorded tracks when Auto-fit enabled 2018-08-27 14:45:25 +01:00
James Crook 878818a1aa Wording: "Duplex" -> "Overdub" 2018-08-27 14:23:45 +01:00
James Crook e31fe6b242 Make AUD-DO return T or NIL as result status.
Previously it was returning 1 or NIL
2018-08-27 10:25:53 +01:00
Steve Daulton 367d15a0b0 Add a couple of helpers for parsing string
Provides a convenient function and macro, intended specifically for
parsing strings returned by (aud-do "GetInfo: ...
2018-08-26 20:07:47 +01:00
Steve Daulton 70467e1523 Enable (most) Nyquist property lists for tool scripts
The global *TRACK* variable and its properties remain unavailable for
;type tool scripts.
2018-08-26 16:47:00 +01:00
Paul Licameli bdf1cb32fe Some simplifications and renamings related to ScrubState 2018-08-26 10:01:06 -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 4a98ba03dd Remove ScrubQueue compensation for Producer overflowing...
... which were meant to fix growth in lag between mouse movement and play head
movement.

Recent rewrites to keep RingBuffer more populated during scrub and seek should
make this unnecessary.
2018-08-26 09:59:35 -04:00
Paul Licameli 8badb0a933 Rewrite the insertion of silences into scrub, combining queue entries 2018-08-26 09:12:53 -04:00
Paul Licameli 9727968b94 move some functions 2018-08-25 20:08:10 -04:00
Paul Licameli 1bf192e5b3 Split ScrubQueue into two queues...
... One still called ScrubQueue, which should become a simple non-queuing
buffer later, communicating scrubbing instructions from the UI or poller
thread to the Audio thread.

The other, downstream of that, supplements the playback RingBuffers with
a correspondence between samples and track times, for use by the PortAudio
thread in updating the last-played position, which is in turn used by the
UI thread to update the display.

In future this queue of times may be used as the sole, general means for
PortAudio thread to update head position, not just a special case for scrubbing.
2018-08-25 20:08:09 -04:00
Paul Licameli 69435c9191 Simplify ScrubQueue to involve only two threads...
... Remove Consumer() and fields used only by it; rename Transformer() as
Consumer().

A bit less contention for the scrub queue mutex, then.
2018-08-25 20:08:09 -04:00
Paul Licameli 81a3a7d339 Use the TimeQueue to communicate play head position updates for scrubbing...
... from the Audio thread to the PortAudio thread;  the old
ScrubQueue::Consumer() function keeps only a vestigial purpose to prevent the
scrub queue from blocking.
2018-08-25 20:08:09 -04:00
Paul Licameli 389ab0c8d0 Fewer calls to RingBuffer::Put in case of trailing zeroes...
... so there is only one update per track of the atomics in RingBuffer in each
pass of the loop in FillBuffers, which will be needed to synchronize RingBuffer
and TimeQueue correctly.
2018-08-25 20:08:09 -04:00