mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-30 15:39: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 GetSolo () const { return mSolo; }
|
||||
bool GetNotMute () const { return !mMute; }
|
||||
bool GetNotSolo () const { return !mSolo; }
|
||||
void SetMute (bool m);
|
||||
void SetSolo (bool s);
|
||||
|
||||
|
@ -250,9 +250,12 @@ std::unique_ptr<Mixer> ExportPlugin::CreateMixer(const TrackList &tracks,
|
||||
bool highQuality, MixerSpec *mixerSpec)
|
||||
{
|
||||
WaveTrackConstArray inputTracks;
|
||||
|
||||
bool anySolo = !(( tracks.Any<const WaveTrack>() + &WaveTrack::GetSolo ).empty());
|
||||
|
||||
auto range = tracks.Any< const WaveTrack >()
|
||||
+ (selectionOnly ? &Track::IsSelected : &Track::Any )
|
||||
- &WaveTrack::GetMute;
|
||||
- ( anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute);
|
||||
for (auto pTrack: range)
|
||||
inputTracks.push_back(
|
||||
pTrack->SharedPointer< const WaveTrack >() );
|
||||
@ -503,10 +506,12 @@ bool Exporter::ExamineTracks()
|
||||
|
||||
auto &tracks = TrackList::Get( *mProject );
|
||||
|
||||
bool anySolo = !(( tracks.Any<const WaveTrack>() + &WaveTrack::GetSolo ).empty());
|
||||
|
||||
for (auto tr :
|
||||
tracks.Any< const WaveTrack >()
|
||||
+ ( mSelectedOnly ? &Track::IsSelected : &Track::Any )
|
||||
- &WaveTrack::GetMute
|
||||
- ( anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute)
|
||||
) {
|
||||
mNumSelected++;
|
||||
|
||||
@ -1364,8 +1369,8 @@ ExportMixerDialog::ExportMixerDialog( const TrackList *tracks, bool selectedOnly
|
||||
|
||||
for (auto t :
|
||||
tracks->Any< const WaveTrack >()
|
||||
+ (anySolo ? &WaveTrack::GetSolo : ( selectedOnly ? &Track::IsSelected : &Track::Any ) )
|
||||
- &WaveTrack::GetMute
|
||||
+ ( selectedOnly ? &Track::IsSelected : &Track::Any )
|
||||
- ( anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute)
|
||||
) {
|
||||
numTracks++;
|
||||
const wxString sTrackName = (t->GetName()).Left(20);
|
||||
|
@ -168,8 +168,11 @@ ExportMultiple::~ExportMultiple()
|
||||
|
||||
void ExportMultiple::CountTracksAndLabels()
|
||||
{
|
||||
bool anySolo = !(( mTracks->Any<const WaveTrack>() + &WaveTrack::GetSolo ).empty());
|
||||
|
||||
mNumWaveTracks =
|
||||
(mTracks->Leaders< const WaveTrack >() - &WaveTrack::GetMute).size();
|
||||
(mTracks->Leaders< const WaveTrack >() -
|
||||
(anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute)).size();
|
||||
|
||||
// only the first label track
|
||||
mLabels = *mTracks->Any< const LabelTrack >().begin();
|
||||
@ -654,9 +657,12 @@ static unsigned GetNumExportChannels( const TrackList &tracks )
|
||||
//int numMono = 0;
|
||||
/* track iteration kit */
|
||||
|
||||
bool anySolo = !(( tracks.Any<const WaveTrack>() + &WaveTrack::GetSolo ).empty());
|
||||
|
||||
// Want only unmuted wave tracks.
|
||||
for (auto tr :
|
||||
tracks.Any< const WaveTrack >() - &WaveTrack::GetMute
|
||||
tracks.Any< const WaveTrack >() -
|
||||
(anySolo ? &WaveTrack::GetNotSolo : &WaveTrack::GetMute)
|
||||
) {
|
||||
// Found a left channel
|
||||
if (tr->GetChannel() == Track::LeftChannel) {
|
||||
@ -860,8 +866,11 @@ ProgressResult ExportMultiple::ExportMultipleByTrack(bool byName,
|
||||
for (auto tr : mTracks->Selected<WaveTrack>())
|
||||
tr->SetSelected(false);
|
||||
|
||||
bool anySolo = !(( mTracks->Any<const WaveTrack>() + &WaveTrack::GetSolo ).empty());
|
||||
|
||||
/* 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
|
||||
auto channels = TrackList::Channels(tr);
|
||||
@ -940,7 +949,10 @@ ProgressResult ExportMultiple::ExportMultipleByTrack(bool byName,
|
||||
int count = 0; // count the number of sucessful runs
|
||||
ExportKit activeSetting; // pointer to the settings in use for this export
|
||||
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 );
|
||||
/* get the settings to use for the export from the array */
|
||||
activeSetting = exportSettings[count];
|
||||
|
Loading…
x
Reference in New Issue
Block a user