File: MixAndRender.h

package info (click to toggle)
audacity 3.7.7%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 134,800 kB
  • sloc: cpp: 366,277; ansic: 198,323; lisp: 7,761; sh: 3,414; python: 1,501; xml: 1,385; perl: 854; makefile: 125
file content (61 lines) | stat: -rw-r--r-- 2,082 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**********************************************************************

Audacity: A Digital Audio Editor

MixAndRender.h
@brief Generate mono or stereo track mixing other given tracks

Paul Licameli split from Mix.h

**********************************************************************/

#ifndef __AUDACITY_MIX_AND_RENDER_H
#define __AUDACITY_MIX_AND_RENDER_H

#include "Mix.h"
#include "SampleFormat.h"
#include "Track.h"

class AudacityProject;
class WaveTrack;
class WaveTrackFactory;

#include <memory>

/** @brief Mixes together all input tracks, applying any envelopes, per-track
 * real-time effects, volume, panning and real-time effects in the process.
 *
 * Takes one or more tracks as input; of all the WaveTracs,
 * it mixes together all input tracks, applying any envelopes, per-track
 * real-time effects, volume, panning and real-time effects in the process. The
 * resulting pair of tracks (stereo) are "rendered" and have no effects, volume,
 * panning, or envelopes. Other sorts of tracks are ignored. If the start and
 * end times passed are the same this is taken as meaning no explicit time range
 * to process, and the whole occupied length of the input tracks is processed.
 *
 * Channel group properties of the result are copied from the first input track,
 * except that `newTrackName` is applied when more than one track is mixed.
 *
 * @param newTrackName used only when there is more than one input track (one
 * mono channel or a stereo pair); else the unique track's name is copied
 */
EFFECTS_API Track::Holder MixAndRender(
   const TrackIterRange<const WaveTrack> &trackRange,
   const Mixer::WarpOptions &warpOptions,
   const wxString &newTrackName,
   WaveTrackFactory *factory,
   double rate, sampleFormat format,
   double startTime, double endTime);

enum ChannelName : int;
using ChannelNames = const ChannelName *;

EFFECTS_API
std::vector<MixerOptions::StageSpecification>
GetEffectStages(const WaveTrack &track);

EFFECTS_API
std::vector<MixerOptions::StageSpecification>
GetMasterEffectStages(const AudacityProject& project);

#endif