1 /* 2 * Copyright (C) 2006-2011 David Robillard <d@drobilla.net> 3 * Copyright (C) 2006-2017 Paul Davis <paul@linuxaudiosystems.com> 4 * Copyright (C) 2009-2011 Carl Hetherington <carl@carlh.net> 5 * Copyright (C) 2014-2017 Robin Gareus <robin@gareus.org> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License along 18 * with this program; if not, write to the Free Software Foundation, Inc., 19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 */ 21 22 #ifndef __ardour_audio_track_h__ 23 #define __ardour_audio_track_h__ 24 25 #include "ardour/interthread_info.h" 26 #include "ardour/track.h" 27 28 namespace ARDOUR { 29 30 class Session; 31 class AudioPlaylist; 32 class RouteGroup; 33 class AudioFileSource; 34 35 class LIBARDOUR_API AudioTrack : public Track 36 { 37 public: 38 AudioTrack (Session&, std::string name = "", TrackMode m = Normal); 39 ~AudioTrack (); 40 41 MonitorState get_input_monitoring_state (bool recording, bool talkback) const; 42 43 void freeze_me (InterThreadInfo&); 44 void unfreeze (); 45 46 bool bounceable (boost::shared_ptr<Processor>, bool include_endpoint) const; 47 boost::shared_ptr<Region> bounce (InterThreadInfo&, std::string const& name); 48 boost::shared_ptr<Region> bounce_range (samplepos_t start, samplepos_t end, InterThreadInfo&, 49 boost::shared_ptr<Processor> endpoint, bool include_endpoint, 50 std::string const& name); 51 int export_stuff (BufferSet& bufs, samplepos_t start_sample, samplecnt_t nframes, 52 boost::shared_ptr<Processor> endpoint, bool include_endpoint, bool for_export, bool for_freeze, 53 MidiStateTracker&); 54 55 int set_state (const XMLNode&, int version); 56 57 boost::shared_ptr<AudioFileSource> write_source (uint32_t n = 0); 58 59 protected: 60 XMLNode& state (bool save_template); 61 62 private: 63 int deprecated_use_diskstream_connections (); 64 void set_state_part_two (); 65 void set_state_part_three (); 66 }; 67 68 } // namespace ARDOUR 69 70 #endif /* __ardour_audio_track_h__ */ 71