/// <summary> /// Merge only Tracks that are soloed. /// </summary> private void MergeSoloTracks() { // For each track in the Sequence. foreach (TrackInfo info in tracks) { // If the track is soloed and not muted. if (info.trk.Solo && !info.trk.Mute) { // Merge track. mergedTrack = Track.Merge(mergedTrack, info.trk); } } }
/// <summary> /// Gets all of the Tracks in the Sequence merged into one Track. /// </summary> /// <returns> /// The Tracks in the Sequence merged into one Track. /// </returns> /// <remarks> /// Only Tracks that are not muted are merged into one Track. Also, if /// any of the Tracks have been soloed, only those Tracks are merged. /// </remarks> public Track GetMergedTrack() { // If the Sequence has been changed. if (IsDirty()) { mergedTrack = new Track(); // If any of the tracks have been soloed. if (IsSolo()) { // Merge only the solo tracks. MergeSoloTracks(); } // Else none of the tracks have been soloed. else { // For each track in the sequence. foreach (TrackInfo info in tracks) { // If the track is not muted. if (!info.trk.Mute) { // Merge track. mergedTrack = Track.Merge(mergedTrack, info.trk); } } } // Update versioning information. foreach (TrackInfo info in tracks) { info.version = info.trk.Version; } // Indicate that the merged track has been updated. dirty = false; } return(mergedTrack); }