mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-01 08:29:27 +02:00
Make exporting of Soloed Tracks WY(S/H)IWYG
Now the export (should) exactly match the (selected) non greyed out tracks. i.e. what you see and hear is what you export - no matter which mode of mute/solo you choose. This is now applied not just to export but also to export multiple.
This commit is contained in:
parent
ef8e1ed6ef
commit
cabe925ab7
@ -737,6 +737,8 @@ public:
|
|||||||
|
|
||||||
bool GetMute () const { return mMute; }
|
bool GetMute () const { return mMute; }
|
||||||
bool GetSolo () const { return mSolo; }
|
bool GetSolo () const { return mSolo; }
|
||||||
|
bool GetNotMute () const { return !mMute; }
|
||||||
|
bool GetNotSolo () const { return !mSolo; }
|
||||||
void SetMute (bool m);
|
void SetMute (bool m);
|
||||||
void SetSolo (bool s);
|
void SetSolo (bool s);
|
||||||
|
|
||||||
|
@ -250,9 +250,12 @@ std::unique_ptr<Mixer> ExportPlugin::CreateMixer(const TrackList &tracks,
|
|||||||
bool highQuality, MixerSpec *mixerSpec)
|
bool highQuality, MixerSpec *mixerSpec)
|
||||||
{
|
{
|
||||||
WaveTrackConstArray inputTracks;
|
WaveTrackConstArray inputTracks;
|
||||||
|
|
||||||
|
bool anySolo = !(( tracks.Any<const WaveTrack>() + &WaveTrack::GetSolo ).empty());
|
||||||
|
|
||||||
auto range = tracks.Any< const WaveTrack >()
|
auto range = tracks.Any< const WaveTrack >()
|
||||||
+ (selectionOnly ? &Track::IsSelected : &Track::Any )
|
+ (selectionOnly ? &Track::IsSelected : &Track::Any )
|
||||||
- &WaveTrack::GetMute;
|
- ( anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute);
|
||||||
for (auto pTrack: range)
|
for (auto pTrack: range)
|
||||||
inputTracks.push_back(
|
inputTracks.push_back(
|
||||||
pTrack->SharedPointer< const WaveTrack >() );
|
pTrack->SharedPointer< const WaveTrack >() );
|
||||||
@ -503,10 +506,12 @@ bool Exporter::ExamineTracks()
|
|||||||
|
|
||||||
auto &tracks = TrackList::Get( *mProject );
|
auto &tracks = TrackList::Get( *mProject );
|
||||||
|
|
||||||
|
bool anySolo = !(( tracks.Any<const WaveTrack>() + &WaveTrack::GetSolo ).empty());
|
||||||
|
|
||||||
for (auto tr :
|
for (auto tr :
|
||||||
tracks.Any< const WaveTrack >()
|
tracks.Any< const WaveTrack >()
|
||||||
+ ( mSelectedOnly ? &Track::IsSelected : &Track::Any )
|
+ ( mSelectedOnly ? &Track::IsSelected : &Track::Any )
|
||||||
- &WaveTrack::GetMute
|
- ( anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute)
|
||||||
) {
|
) {
|
||||||
mNumSelected++;
|
mNumSelected++;
|
||||||
|
|
||||||
@ -1364,8 +1369,8 @@ ExportMixerDialog::ExportMixerDialog( const TrackList *tracks, bool selectedOnly
|
|||||||
|
|
||||||
for (auto t :
|
for (auto t :
|
||||||
tracks->Any< const WaveTrack >()
|
tracks->Any< const WaveTrack >()
|
||||||
+ (anySolo ? &WaveTrack::GetSolo : ( selectedOnly ? &Track::IsSelected : &Track::Any ) )
|
+ ( selectedOnly ? &Track::IsSelected : &Track::Any )
|
||||||
- &WaveTrack::GetMute
|
- ( anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute)
|
||||||
) {
|
) {
|
||||||
numTracks++;
|
numTracks++;
|
||||||
const wxString sTrackName = (t->GetName()).Left(20);
|
const wxString sTrackName = (t->GetName()).Left(20);
|
||||||
|
@ -168,8 +168,11 @@ ExportMultiple::~ExportMultiple()
|
|||||||
|
|
||||||
void ExportMultiple::CountTracksAndLabels()
|
void ExportMultiple::CountTracksAndLabels()
|
||||||
{
|
{
|
||||||
|
bool anySolo = !(( mTracks->Any<const WaveTrack>() + &WaveTrack::GetSolo ).empty());
|
||||||
|
|
||||||
mNumWaveTracks =
|
mNumWaveTracks =
|
||||||
(mTracks->Leaders< const WaveTrack >() - &WaveTrack::GetMute).size();
|
(mTracks->Leaders< const WaveTrack >() -
|
||||||
|
(anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute)).size();
|
||||||
|
|
||||||
// only the first label track
|
// only the first label track
|
||||||
mLabels = *mTracks->Any< const LabelTrack >().begin();
|
mLabels = *mTracks->Any< const LabelTrack >().begin();
|
||||||
@ -654,9 +657,12 @@ static unsigned GetNumExportChannels( const TrackList &tracks )
|
|||||||
//int numMono = 0;
|
//int numMono = 0;
|
||||||
/* track iteration kit */
|
/* track iteration kit */
|
||||||
|
|
||||||
|
bool anySolo = !(( tracks.Any<const WaveTrack>() + &WaveTrack::GetSolo ).empty());
|
||||||
|
|
||||||
// Want only unmuted wave tracks.
|
// Want only unmuted wave tracks.
|
||||||
for (auto tr :
|
for (auto tr :
|
||||||
tracks.Any< const WaveTrack >() - &WaveTrack::GetMute
|
tracks.Any< const WaveTrack >() -
|
||||||
|
(anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute)
|
||||||
) {
|
) {
|
||||||
// Found a left channel
|
// Found a left channel
|
||||||
if (tr->GetChannel() == Track::LeftChannel) {
|
if (tr->GetChannel() == Track::LeftChannel) {
|
||||||
@ -860,8 +866,11 @@ ProgressResult ExportMultiple::ExportMultipleByTrack(bool byName,
|
|||||||
for (auto tr : mTracks->Selected<WaveTrack>())
|
for (auto tr : mTracks->Selected<WaveTrack>())
|
||||||
tr->SetSelected(false);
|
tr->SetSelected(false);
|
||||||
|
|
||||||
|
bool anySolo = !(( mTracks->Any<const WaveTrack>() + &WaveTrack::GetSolo ).empty());
|
||||||
|
|
||||||
/* Examine all tracks in turn, collecting export information */
|
/* Examine all tracks in turn, collecting export information */
|
||||||
for (auto tr : mTracks->Leaders<WaveTrack>() - &WaveTrack::GetMute) {
|
for (auto tr : mTracks->Leaders<WaveTrack>() -
|
||||||
|
(anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute)) {
|
||||||
|
|
||||||
// Get the times for the track
|
// Get the times for the track
|
||||||
auto channels = TrackList::Channels(tr);
|
auto channels = TrackList::Channels(tr);
|
||||||
@ -940,7 +949,10 @@ ProgressResult ExportMultiple::ExportMultipleByTrack(bool byName,
|
|||||||
int count = 0; // count the number of sucessful runs
|
int count = 0; // count the number of sucessful runs
|
||||||
ExportKit activeSetting; // pointer to the settings in use for this export
|
ExportKit activeSetting; // pointer to the settings in use for this export
|
||||||
std::unique_ptr<ProgressDialog> pDialog;
|
std::unique_ptr<ProgressDialog> pDialog;
|
||||||
for (auto tr : mTracks->Leaders<WaveTrack>() - &WaveTrack::GetMute) {
|
|
||||||
|
for (auto tr : mTracks->Leaders<WaveTrack>() -
|
||||||
|
(anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute)) {
|
||||||
|
|
||||||
wxLogDebug( "Get setting %i", count );
|
wxLogDebug( "Get setting %i", count );
|
||||||
/* get the settings to use for the export from the array */
|
/* get the settings to use for the export from the array */
|
||||||
activeSetting = exportSettings[count];
|
activeSetting = exportSettings[count];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user