X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Faudio_track.h;h=b03205dfaf1e890c7af8aa7d51db67f6df1305b2;hb=0cdb918d4dd409075c0e2fdc50633e7b6adb22f2;hp=4dae06eeffe19c77adb469d0b1dfe7b202b1bbf1;hpb=5a39bf595c737dbb36666a9e718ac267e9131380;p=ardour.git diff --git a/libs/ardour/ardour/audio_track.h b/libs/ardour/ardour/audio_track.h index 4dae06eeff..b03205dfaf 100644 --- a/libs/ardour/ardour/audio_track.h +++ b/libs/ardour/ardour/audio_track.h @@ -21,16 +21,16 @@ #ifndef __ardour_audio_track_h__ #define __ardour_audio_track_h__ -#include +#include namespace ARDOUR { class Session; -class DiskStream; +class AudioDiskstream; class AudioPlaylist; class RouteGroup; -class AudioTrack : public Route +class AudioTrack : public Track { public: AudioTrack (Session&, string name, Route::Flag f = Route::Flag (0), TrackMode m = Normal); @@ -39,132 +39,55 @@ class AudioTrack : public Route 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 (); + 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); - bool can_record() const { return true; } void set_record_enable (bool yn, void *src); - DiskStream& disk_stream() const { return *diskstream; } - int set_diskstream (DiskStream&, void *); + AudioDiskstream& audio_diskstream() const; + int use_diskstream (string name); - int use_diskstream (id_t id); + int use_diskstream (const PBD::ID& id); - TrackMode mode() const { return _mode; } void set_mode (TrackMode m); - sigc::signal ModeChanged; - jack_nframes_t update_total_latency(); void set_latency_delay (jack_nframes_t); int export_stuff (vector& buffers, char * workbuf, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t end_frame); - sigc::signal diskstream_changed; - - enum FreezeState { - NoFreeze, - Frozen, - UnFrozen - }; - - FreezeState freeze_state() const; - - sigc::signal FreezeChange; - void freeze (InterThreadInfo&); void unfreeze (); void bounce (InterThreadInfo&); void bounce_range (jack_nframes_t start, jack_nframes_t end, InterThreadInfo&); - XMLNode& get_state(); int set_state(const XMLNode& node); - MIDI::Controllable& midi_rec_enable_control() { - return _midi_rec_enable_control; - } - - void reset_midi_control (MIDI::Port*, bool); - void send_all_midi_feedback (); - bool record_enabled() const; - void set_meter_point (MeterPoint, void* src); protected: - DiskStream *diskstream; - MeterPoint _saved_meter_point; - TrackMode _mode; + XMLNode& state (bool full); void passthru_silence (jack_nframes_t start_frame, jack_nframes_t end_frame, jack_nframes_t nframes, jack_nframes_t offset, int declick, bool meter); uint32_t n_process_buffers (); - + private: - struct FreezeRecordInsertInfo { - FreezeRecordInsertInfo(XMLNode& st) - : state (st), insert (0) {} + int set_diskstream (AudioDiskstream&, void *); - XMLNode state; - Insert* insert; - id_t id; - UndoAction memento; - }; - - struct FreezeRecord { - FreezeRecord() { - playlist = 0; - have_mementos = false; - } - - ~FreezeRecord(); - - AudioPlaylist* playlist; - vector 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; - - XMLNode& state(bool); - - int deprecated_use_diskstream_connections (); + int deprecated_use_diskstream_connections (); void set_state_part_two (); void set_state_part_three (); - - struct MIDIRecEnableControl : public MIDI::Controllable { - MIDIRecEnableControl (AudioTrack&, MIDI::Port *); - void set_value (float); - void send_feedback (bool); - MIDI::byte* write_feedback (MIDI::byte* buf, int32_t& bufsize, bool val, bool force = false); - AudioTrack& track; - bool setting; - bool last_written; - }; - - MIDIRecEnableControl _midi_rec_enable_control; - - bool _destructive; }; -}; /* namespace ARDOUR*/ +} /* namespace ARDOUR*/ #endif /* __ardour_audio_track_h__ */