1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-30 23:23:44 +02:00

173 Commits

Author SHA1 Message Date
Paul Licameli
7302fc584f Move RecordingSchedule, PlaybackSchedule to new files 2021-05-14 16:26:29 -04:00
Paul Licameli
9a66255013 Move AudioIOBase::mPlaybackSchedule up into AudioIoCallback 2021-05-14 16:25:41 -04:00
Paul Licameli
82a1534226 Remove redundant test of USE_MIDI ...
... See instead how cmake_proxies/CMakeLists.txt already enforces that
if EXPERIMENTAL_MIDI_OUT is true, then USE_MIDI must be true
2021-05-12 13:02:29 -05:00
Paul Licameli
c5ebc396eb Audacity.h has shrunk to nothing, now remove it! 2021-05-10 00:05:23 -05:00
Paul Licameli
e653b4aaf8 Eliminate Experimental.h, configure compile options instead...
... This makes it impossible to forget to include the EXPERIMENTAL definitions
(such as when cutting and pasting code) and so get unintended quiet changes of
behavior.

The EXPERIMENTAL flags are now specified instead in new file Experimental.cmake
2021-04-27 12:40:07 -04:00
Paul Licameli
e47245bd8c Fix use of uninitialized data for meter when emulating volume 2021-02-06 09:20:30 -05:00
Leland Lucius
f509d9c0bd Bugs 1592 and 2639
Sound activated record is now decoupled from the input meter.
2021-01-22 23:43:01 -06:00
Paul Licameli
cccc7a7c4e Keep !defined(MIDI_THREAD) branch compilable...
... The break was caused by ffa67d2 which split the base class AudioIoCallback
out of AudioIO.

This change only demotes some member declarations from AudioIO into
AudioIoCallback, and changes the qualified names of function definitions.

So now you can eliminate #define MIDI_THREAD in AudioIO.h and rebuild.
2021-01-16 14:34:22 -05:00
Paul Licameli
bf6d94ce57 Remove unused AudioIoCallback::mAudioCallbackClockTime 2021-01-12 08:40:21 -05:00
Paul Licameli
37714a0db7 Remove portmidi and porttime from other headers 2020-06-14 12:32:28 -04:00
Paul Licameli
3869a8f460 Remove allegro.h from other headers 2020-06-14 10:32:16 -04:00
Paul Licameli
c84a2d295d Remove portaudio.h and portmixer.h from AudioIOBase.h 2020-06-12 11:39:18 -04:00
Yuri Chornoivan
d1ada5f08c Fix minor typos 2020-04-11 10:06:24 +01:00
Paul Licameli
6adb2abc98 Keep EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT compilable...
... while not reintroducing bad dependencies, which explains the movement
of the definition of some constants
2019-07-02 12:35:40 -04:00
Paul Licameli
e08a942ab8 Fix other cause of intermittent timing-dependent crash at shutdown...
... AudioIO holds a weak pointer to its listener so there is no dangling
pointer
2019-06-24 13:32:08 -04:00
Paul Licameli
5627620b78 Remove dependency of AudioIO on Scrubbing.cpp ...
... though the demotion of the constant into AudioIO.h isn't wholly satisfactory
and there is still the scrubbing queue in AudioIO
2019-06-24 12:52:54 -04:00
Paul Licameli
ccc49f8ccf Abstract virtual AudioIOBase::StopStream...
... so that DeviceManager, DeviceToolbar, and PrefsDialog do not depend directly
on AudioIO.

But no function in the base class for starting streams, which would require
mention of Track types, which we want to avoid.
2019-06-10 21:55:29 -04:00
Paul Licameli
51051ee933 Separate AudioIOBase from AudioIO 2019-06-10 20:48:38 -04:00
Paul Licameli
42a4f55ffe Prepare to split AudioIOBase from AudioIO...
... New files, but (almost) empty; don't use the global variable gAudioIO,
but use one of two accessor function names (which are the same function for
now).

AudioIOBase will have fewer dependencies than AudioIO -- in particular, no
dependency on tracks.

It won't include StartStream.  It will contain functions to query the
present state of streams, and device capabilities.
2019-06-10 20:48:38 -04:00
Paul Licameli
46bf5a82fc Don't pass whole TimeTrack to Ruler or Mixer...
... they need only the information in a (Bounded)Envelope.
2019-06-10 20:48:38 -04:00
Paul Licameli
850628275b AudioIO.cpp does not depend on ProjectAudioIO.h and GetActiveProject 2019-06-03 01:18:11 -04:00
Paul Licameli
1ed9338e6f Use wxWeakRef to avoid a dangling pointer...
... as was done before for input meter at 12983e1
2019-05-23 12:54:12 -04:00
Paul Licameli
519a988467 RecordingPrefs.cpp does not depend on AudioIO.cpp...
... freeing it from dependency cycles, but no others
2019-05-18 20:29:25 -04:00
Paul Licameli
548192fcf3 Remove redundant #include-s from .h files...
Redundant, because transitively implied.  But don't do this for inclusions of
Audacity.h or Experimental.h.
2019-05-16 14:58:34 -04:00
Paul Licameli
56f51d8176 Revert "Remove redundant #include-s from .h files..."
This reverts commit b7fe62d17067b4441530dd36b25052cea3ad44b5.
2019-05-16 14:33:55 -04:00
Paul Licameli
b7fe62d170 Remove redundant #include-s from .h files...
Redundant, because transitively implied.  But don't do this for inclusions of
Audacity.h or Experimental.h.
2019-05-16 14:15:05 -04:00
Paul Licameli
4714d72b3f Can't remove remaining wx headers from other headers, comment that 2019-03-31 01:41:16 -04:00
Paul Licameli
ec2f26e48c Remove wx/pen.h, wx/thread.h from headers 2019-03-30 10:17:18 -04:00
Paul Licameli
c3aad2e026 Remove wx/event.h from headers 2019-03-27 04:36:51 -04:00
Paul Licameli
40b4361732 Remove wx/arrstr.h from headers 2019-03-26 12:41:44 -04:00
Paul Licameli
1d0247607a Remove wx/string.h from headers 2019-03-26 11:33:55 -04:00
Paul Licameli
f45300f032 This is only comments, in files where USE_ macros are tested...
... following the comment convention used in the preceding commit.
2019-03-22 12:38:30 -04:00
Paul Licameli
906e55f047 Experimental.h in all .h or .cpp files that directly use EXPERIMENTALs...
... except Audacity.h; and in no others.

Do so even if Experimental.h gets multiply included, as in both the .h and
.cpp files.

This makes it easier to do a text scan to be sure there are no unintended quiet
changes of meaning because of omission of Experimental.h when the flag is
an enabled one.

Also move inclusions of Experimental.h earlier.

Also don't require Experimental.h to be preceded by Audacity.h to define
EXPERIMENTAL_MIDI_OUT correctly.
2019-03-17 22:54:00 -04:00
Paul Licameli
173a300427 Include nothing before Audacity.h, as comments say we should...
... and remove some duplicated inclusions
2019-03-17 21:41:39 -04:00
Paul Licameli
135c2a71ce Replace "" and wxEmptyString with {} in default argument values 2019-03-15 15:18:11 -04:00
David Bailes
b8b2f4380e Bug 2080: Using WASAPI, after recording, playback can fail
The bug:
1. Set Audio host to WASAPI
2. choose recording and playback devices which have different default sample rates in shared mode.
3. Set overdub, and playthrough to off.
4. make a short recording.
5. playback. Fails with error dialog.

Cause of bug:
In AudioIO::GetBestRate, the last returned sample rate is cached. If the function is called again, with the same requested sample rate, then the cached value is returned. So in the above steps, when GetBestRate is called for playback, the sample rate of the recording device is returned.

Fix:
Include in the conditions for returning the cached rate that the values of playing and capturing as the same as in the previous call.
2019-03-15 10:03:46 +00:00
James Crook
7f8bfa0ac2 Make microfades into a preference. 2018-11-02 21:58:53 +00:00
James Crook
d693b36bdb Shorten AudioIoCallback::FillOutputBuffers()
Mainly by moving functions to live outside this function.
2018-10-16 13:01:22 +01:00
James Crook
45069794f3 Reduce indentation in AudioIO
Flipped some conditions and used if else-if to reduce the indentation in code.
This makes the code more readable.  No change in functionality.
Also created UpdateTimePositions() and made some bool functions void.

new variable mMaxFramesOutput used to communicate positional change.
2018-10-16 13:01:22 +01:00
James Crook
d2578b9eaa Remove some duplicated code in AudioIO 2018-10-14 22:45:41 +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
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
Paul Licameli
9d17d335b7 Poller thread leaves messages, Audio interprets; a buffer not a queue 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
4e461f8755 Explicit scrub shut-down signal replaces the "nudge" 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
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
Paul Licameli
b2df5e0673 Declare and allocate time value queue 2018-08-25 20:08:08 -04:00
Paul Licameli
67a9823434 split out function AdvancedTrackTime; more caution about termination 2018-08-25 20:08:08 -04:00