diff options
author | David Robillard <d@drobilla.net> | 2006-07-19 05:44:23 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-07-19 05:44:23 +0000 |
commit | 0cdb918d4dd409075c0e2fdc50633e7b6adb22f2 (patch) | |
tree | 0c2901a6c81dffa69a87533b70c6f8e5bffa2ed4 /libs/ardour/ardour/midi_track.h | |
parent | 50a3102b9b533d7f8786d220f8df67421b9227c8 (diff) |
Work towards removal of Session's Diskstream list.
Havn't managed to completely remove it because of Session loading from XML - the
Diskstreams are separate from the Tracks (I assume as a throwback to when they
were distinct) so the Diskstreams need to be stored somewhere until the Tracks
are loaded. Ideally tracks should completely own their Diskstreams - not sure
how to accomplish this without breaking Session loading though...
git-svn-id: svn://localhost/ardour2/branches/midi@687 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/midi_track.h')
-rw-r--r-- | libs/ardour/ardour/midi_track.h | 114 |
1 files changed, 16 insertions, 98 deletions
diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 090ca6b729..9874cfa56d 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -20,7 +20,7 @@ #ifndef __ardour_midi_track_h__ #define __ardour_midi_track_h__ -#include <ardour/route.h> +#include <ardour/track.h> namespace ARDOUR { @@ -30,79 +30,49 @@ class MidiDiskstream; class MidiPlaylist; class RouteGroup; -class MidiTrack : public Route +class MidiTrack : public Track { public: MidiTrack (Session&, string name, Route::Flag f = Route::Flag (0), TrackMode m = Normal); MidiTrack (Session&, const XMLNode&); ~MidiTrack (); - + int set_name (string str, void *src); - int roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, int declick, bool can_record, bool rec_monitors_input); - - int no_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, bool state_changing, bool can_record, bool rec_monitors_input); - - int silent_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, bool can_record, bool rec_monitors_input); - - void toggle_monitor_input (); - - bool can_record() const { return true; } + int roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, + jack_nframes_t offset, int declick, bool can_record, bool rec_monitors_input); + + int no_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, + jack_nframes_t offset, bool state_changing, bool can_record, bool rec_monitors_input); + + int silent_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, + jack_nframes_t offset, bool can_record, bool rec_monitors_input); void set_record_enable (bool yn, void *src); - MidiDiskstream& disk_stream() const { return *_diskstream; } + MidiDiskstream& midi_diskstream() const; - int set_diskstream (MidiDiskstream&, void *); int use_diskstream (string name); int use_diskstream (const PBD::ID& id); - TrackMode mode() const { return _mode; } - void set_mode (TrackMode m); - sigc::signal<void> ModeChanged; - jack_nframes_t update_total_latency(); - void set_latency_delay (jack_nframes_t); + void set_latency_delay (jack_nframes_t); int export_stuff (vector<unsigned char*>& buffers, char * workbuf, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t end_frame); - sigc::signal<void,void*> diskstream_changed; - - enum FreezeState { - NoFreeze, - Frozen, - UnFrozen - }; - - FreezeState freeze_state() const; - - sigc::signal<void> FreezeChange; - void freeze (InterThreadInfo&); void unfreeze (); void bounce (InterThreadInfo&); void bounce_range (jack_nframes_t start, jack_nframes_t end, InterThreadInfo&); - XMLNode& get_state(); - XMLNode& get_template(); int set_state(const XMLNode& node); - PBD::Controllable& rec_enable_control() { return _rec_enable_control; } - bool record_enabled() const; - void set_meter_point (MeterPoint, void* src); protected: - MidiDiskstream *_diskstream; - MeterPoint _saved_meter_point; - TrackMode _mode; - XMLNode& state (bool full); void passthru_silence (jack_nframes_t start_frame, jack_nframes_t end_frame, @@ -112,64 +82,12 @@ protected: uint32_t n_process_buffers (); private: - struct FreezeRecordInsertInfo - { - FreezeRecordInsertInfo(XMLNode& st) - : state (st), insert (0) - {} - - XMLNode state; - Insert* insert; - PBD::ID id; - UndoAction memento; - }; - - struct FreezeRecord - { - FreezeRecord() - { - playlist = 0; - have_mementos = false; - } - - ~FreezeRecord(); - - MidiPlaylist* playlist; - vector<FreezeRecordInsertInfo*> insert_info; - bool have_mementos; - FreezeState state; - }; - - FreezeRecord _freeze_record; - XMLNode* pending_state; - - void diskstream_record_enable_changed (void *src); - void diskstream_input_channel_changed (void *src); - - void input_change_handler (void *src); - - sigc::connection recenable_connection; - sigc::connection ic_connection; - - int deprecated_use_diskstream_connections (); + int set_diskstream (MidiDiskstream&, void *); + void set_state_part_two (); void set_state_part_three (); - - struct MIDIRecEnableControllable : public PBD::Controllable { - MIDIRecEnableControllable (MidiTrack&); - - void set_value (float); - float get_value (void) const; - - MidiTrack& track; - }; - - MIDIRecEnableControllable _rec_enable_control; - - bool _destructive; }; -} -; /* namespace ARDOUR*/ +} /* namespace ARDOUR*/ #endif /* __ardour_midi_track_h__ */ |