summaryrefslogtreecommitdiff
path: root/muse2/muse/track.h
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2012-01-03 17:26:09 +0000
committerFlorian Jung <flo@windfisch.org>2012-01-03 17:26:09 +0000
commit1bc4ba9dfc00b6e7511fbf4765296a2002f83315 (patch)
treedf6a0d5d9b61d64005dd368afea0aea11ab0a6b3 /muse2/muse/track.h
parentb988a0a27bc175ce10bc8fa53ed131486813f3e7 (diff)
merged with release_2_0
Diffstat (limited to 'muse2/muse/track.h')
-rw-r--r--muse2/muse/track.h74
1 files changed, 40 insertions, 34 deletions
diff --git a/muse2/muse/track.h b/muse2/muse/track.h
index 04cf71c2..b887ff52 100644
--- a/muse2/muse/track.h
+++ b/muse2/muse/track.h
@@ -57,6 +57,8 @@ class Track {
MIDI=0, DRUM, WAVE, AUDIO_OUTPUT, AUDIO_INPUT, AUDIO_GROUP,
AUDIO_AUX, AUDIO_SOFTSYNTH
};
+ enum AssignFlags {
+ ASSIGN_PROPERTIES=1, ASSIGN_PARTS=2, ASSIGN_PLUGINS=4, ASSIGN_STD_CTRLS=8, ASSIGN_PLUGIN_CTRLS=16, ASSIGN_ROUTES=32, ASSIGN_DEFAULT_ROUTES=64 };
private:
TrackType _type;
QString _comment;
@@ -64,6 +66,7 @@ class Track {
PartList _parts;
void init();
+ void internal_assign(const Track&, int flags);
protected:
static unsigned int _soloRefCnt;
@@ -104,10 +107,10 @@ class Track {
public:
Track(TrackType);
- //Track(const Track&);
- Track(const Track&, bool cloneParts);
+ Track(const Track&, int flags);
virtual ~Track();
- virtual Track& operator=(const Track& t);
+ //virtual Track& operator=(const Track& t);
+ virtual void assign(const Track&, int flags);
static const char* _cname[];
@@ -159,8 +162,7 @@ class Track {
virtual void write(int, Xml&) const = 0;
virtual Track* newTrack() const = 0;
- //virtual Track* clone() const = 0;
- virtual Track* clone(bool CloneParts) const = 0;
+ virtual Track* clone(int flags) const = 0;
virtual bool setRecordFlag1(bool f) = 0;
virtual void setRecordFlag2(bool f) = 0;
@@ -199,7 +201,7 @@ class Track {
void resetMeter();
bool readProperty(Xml& xml, const QString& tag);
- void setDefaultName();
+ void setDefaultName(QString base = QString());
int channels() const { return _channels; }
virtual void setChannels(int n);
bool isMidiTrack() const { return type() == MIDI || type() == DRUM; }
@@ -230,13 +232,15 @@ class MidiTrack : public Track {
MPEventList* _mpevents; // tmp Events druring recording
static bool _isVisible;
clefTypes clefType;
+ void internal_assign(const Track&, int flags);
public:
MidiTrack();
- //MidiTrack(const MidiTrack&);
- MidiTrack(const MidiTrack&, bool cloneParts);
+ MidiTrack(const MidiTrack&, int flags);
virtual ~MidiTrack();
+ virtual void assign(const Track&, int flags);
+
void init();
virtual AutomationType automationType() const;
virtual void setAutomationType(AutomationType);
@@ -258,9 +262,9 @@ class MidiTrack : public Track {
virtual void write(int, Xml&) const;
virtual int height() const;
+
virtual MidiTrack* newTrack() const { return new MidiTrack(); }
- //virtual MidiTrack* clone() const { return new MidiTrack(*this); }
- virtual MidiTrack* clone(bool cloneParts) const { return new MidiTrack(*this, cloneParts); }
+ virtual MidiTrack* clone(int flags) const { return new MidiTrack(*this, flags); }
virtual Part* newPart(Part*p=0, bool clone=false);
void setOutChannel(int i) { _outChannel = i; }
@@ -324,6 +328,7 @@ class AudioTrack : public Track {
bool _sendMetronome;
AutomationType _automationType;
Pipeline* _efxPipe;
+ void internal_assign(const Track&, int flags);
protected:
float** outBuffers;
@@ -341,10 +346,14 @@ class AudioTrack : public Track {
AudioTrack(TrackType t);
//AudioTrack(TrackType t, int num_out_bufs = MAX_CHANNELS);
- //AudioTrack(const AudioTrack&);
- AudioTrack(const AudioTrack&, bool cloneParts);
+ AudioTrack(const AudioTrack&, int flags);
virtual ~AudioTrack();
+ virtual void assign(const Track&, int flags);
+
+ virtual AudioTrack* clone(int flags) const = 0;
+ virtual Part* newPart(Part*p=0, bool clone=false);
+
virtual bool setRecordFlag1(bool f);
virtual void setRecordFlag2(bool f);
bool prepareRecording();
@@ -362,10 +371,6 @@ class AudioTrack : public Track {
void mapRackPluginsToControllers();
void showPendingPluginNativeGuis();
- //virtual AudioTrack* clone() const = 0;
- virtual AudioTrack* clone(bool cloneParts) const = 0;
- virtual Part* newPart(Part*p=0, bool clone=false);
-
SndFile* recFile() const { return _recFile; }
void setRecFile(SndFile* sf) { _recFile = sf; }
@@ -447,14 +452,15 @@ class AudioInput : public AudioTrack {
void* jackPorts[MAX_CHANNELS];
virtual bool getData(unsigned, int, unsigned, float**);
static bool _isVisible;
-
+ void internal_assign(const Track& t, int flags);
+
public:
AudioInput();
- //AudioInput(const AudioInput&);
- AudioInput(const AudioInput&, bool cloneParts);
+ AudioInput(const AudioInput&, int flags);
virtual ~AudioInput();
- //AudioInput* clone() const { return new AudioInput(*this); }
- AudioInput* clone(bool cloneParts) const { return new AudioInput(*this, cloneParts); }
+
+ virtual void assign(const Track&, int flags);
+ AudioInput* clone(int flags) const { return new AudioInput(*this, flags); }
virtual AudioInput* newTrack() const { return new AudioInput(); }
virtual void read(Xml&);
virtual void write(int, Xml&) const;
@@ -478,16 +484,16 @@ class AudioOutput : public AudioTrack {
float* buffer1[MAX_CHANNELS];
unsigned long _nframes;
static bool _isVisible;
-
float* _monitorBuffer[MAX_CHANNELS];
+ void internal_assign(const Track& t, int flags);
public:
AudioOutput();
- //AudioOutput(const AudioOutput&);
- AudioOutput(const AudioOutput&, bool cloneParts);
+ AudioOutput(const AudioOutput&, int flags);
virtual ~AudioOutput();
- //AudioOutput* clone() const { return new AudioOutput(*this); }
- AudioOutput* clone(bool cloneParts) const { return new AudioOutput(*this, cloneParts); }
+
+ virtual void assign(const Track&, int flags);
+ AudioOutput* clone(int flags) const { return new AudioOutput(*this, flags); }
virtual AudioOutput* newTrack() const { return new AudioOutput(); }
virtual void read(Xml&);
virtual void write(int, Xml&) const;
@@ -516,8 +522,9 @@ class AudioGroup : public AudioTrack {
static bool _isVisible;
public:
AudioGroup() : AudioTrack(AUDIO_GROUP) { }
- //AudioGroup* clone() const { return new AudioGroup(*this); }
- AudioGroup* clone(bool /*cloneParts*/) const { return new AudioGroup(*this); }
+ AudioGroup(const AudioGroup& t, int flags) : AudioTrack(t, flags) { }
+
+ AudioGroup* clone(int flags) const { return new AudioGroup(*this, flags); }
virtual AudioGroup* newTrack() const { return new AudioGroup(); }
virtual void read(Xml&);
virtual void write(int, Xml&) const;
@@ -536,8 +543,9 @@ class AudioAux : public AudioTrack {
static bool _isVisible;
public:
AudioAux();
- //AudioAux* clone() const { return new AudioAux(*this); }
- AudioAux* clone(bool /*cloneParts*/) const { return new AudioAux(*this); }
+ AudioAux(const AudioAux& t, int flags);
+
+ AudioAux* clone(int flags) const { return new AudioAux(*this, flags); }
~AudioAux();
virtual AudioAux* newTrack() const { return new AudioAux(); }
virtual void read(Xml&);
@@ -562,11 +570,9 @@ class WaveTrack : public AudioTrack {
public:
WaveTrack() : AudioTrack(Track::WAVE) { }
- //WaveTrack(const WaveTrack& wt) : AudioTrack(wt) {}
- WaveTrack(const WaveTrack& wt, bool cloneParts) : AudioTrack(wt, cloneParts) {}
+ WaveTrack(const WaveTrack& wt, int flags) : AudioTrack(wt, flags) {}
- //virtual WaveTrack* clone() const { return new WaveTrack(*this); }
- virtual WaveTrack* clone(bool cloneParts) const { return new WaveTrack(*this, cloneParts); }
+ virtual WaveTrack* clone(int flags) const { return new WaveTrack(*this, flags); }
virtual WaveTrack* newTrack() const { return new WaveTrack(); }
virtual Part* newPart(Part*p=0, bool clone=false);