diff --git a/libs/ardour/ardour/lua_api.h b/libs/ardour/ardour/lua_api.h index 92e63d7692..66402325e4 100644 --- a/libs/ardour/ardour/lua_api.h +++ b/libs/ardour/ardour/lua_api.h @@ -100,8 +100,8 @@ namespace ARDOUR { namespace LuaAPI { * This is equivalent to the following lua code * @code * function (processor, param_id) - * local plugininsert = processor:to_insert () - * local plugin = plugininsert:plugin(0) + * local plugininsert = processor:to_insert () + * local plugin = plugininsert:plugin(0) * local _, t = plugin:get_parameter_descriptor(param_id, ARDOUR.ParameterDescriptor ()) * local ctrl = Evoral.Parameter (ARDOUR.AutomationType.PluginAutomation, 0, param_id) * local ac = pi:automation_control (ctrl, false) @@ -110,7 +110,7 @@ namespace ARDOUR { namespace LuaAPI { * end * @endcode * - * Example usage: get 3rd input parameter of first plugin on the given route + * Example usage: get the third input parameter of first plugin on the given route * (Ardour starts counting at zero). * @code * local al, cl, pd = ARDOUR.LuaAPI.plugin_automation (route:nth_plugin (0), 3) diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 5cda2f0d59..56f7ccdc99 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -238,6 +238,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou /* special processors */ boost::shared_ptr monitor_send() const { return _monitor_send; } + /** the signal processorat at end of the processing chain which produces output */ boost::shared_ptr main_outs() const { return _main_outs; } boost::shared_ptr internal_return() const { return _intreturn; } boost::shared_ptr monitor_control() const { return _monitor_control; } diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index c25d80ccf5..c9d2de4d07 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -228,6 +228,13 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop std::string new_audio_source_path_for_embedded (const std::string& existing_path); std::string new_audio_source_path (const std::string&, uint32_t nchans, uint32_t chan, bool destructive, bool take_required); std::string new_midi_source_path (const std::string&); + /** create a new track or bus from a template (XML path) + * @param how_many how many tracks or busses to create + * @param template_path path to xml template file + * @param name name (prefix) of the route to create + * @param pd Playlist disposition + * @return list of newly created routes + */ RouteList new_route_from_template (uint32_t how_many, const std::string& template_path, const std::string& name, PlaylistDisposition pd = NewPlaylist); RouteList new_route_from_template (uint32_t how_many, XMLNode&, const std::string& name, PlaylistDisposition pd = NewPlaylist); std::vector get_paths_for_new_sources (bool allow_replacing, const std::string& import_file_path, uint32_t channels); @@ -472,6 +479,13 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop }; int save_as (SaveAs&); + /** save session + * @param snapshot_name name of the session (use an empty string for the current name) + * @param pending save a 'recovery', not full state (default: false) + * @param switch_to_snapshot switch to given snapshot after saving (default: false) + * @param template_only save a session template (default: false) + * @return zero on success + */ int save_state (std::string snapshot_name, bool pending = false, bool switch_to_snapshot = false, bool template_only = false); int restore_state (std::string snapshot_name); int save_template (std::string template_name, bool replace_existing = false); diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index ee05666d20..da5e2bbae8 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -102,11 +102,26 @@ class LIBARDOUR_API Track : public Route, public PublicDiskstream virtual void freeze_me (InterThreadInfo&) = 0; virtual void unfreeze () = 0; - /** @return true if the track can be bounced, or false otherwise. + /** Test if the track can be bounced with the given settings. + * If sends/inserts/returns are present in the signal path or the given track + * has no audio outputs bouncing is not possible. + * + * @param endpoint the processor to tap the signal off (or nil for the top) + * @param include_endpoint include the given processor in the bounced audio. + * @return true if the track can be bounced, or false otherwise. */ virtual bool bounceable (boost::shared_ptr endpoint, bool include_endpoint) const = 0; virtual boost::shared_ptr bounce (InterThreadInfo&) = 0; - virtual boost::shared_ptr bounce_range (framepos_t start, framepos_t end, InterThreadInfo&, + + /** Bounce the given range to a new audio region. + * @param start start time (in samples) + * @param end end time (in samples) + * @param itt asynchronous progress report and cancel + * @param endpoint the processor to tap the signal off (or nil for the top) + * @param include_endpoint include the given processor in the bounced audio. + * @return a new audio region (or nil in case of error) + */ + virtual boost::shared_ptr bounce_range (framepos_t start, framepos_t end, InterThreadInfo& itt, boost::shared_ptr endpoint, bool include_endpoint) = 0; virtual int export_stuff (BufferSet& bufs, framepos_t start_frame, framecnt_t nframes, boost::shared_ptr endpoint, bool include_endpoint, bool for_export, bool for_freeze) = 0; diff --git a/libs/evoral/evoral/Event.hpp b/libs/evoral/evoral/Event.hpp index 2a6810a3b4..cbb62e2f4c 100644 --- a/libs/evoral/evoral/Event.hpp +++ b/libs/evoral/evoral/Event.hpp @@ -92,6 +92,11 @@ public: inline bool owns_buffer() const { return _owns_buf; } + /** set event data (e.g. midi data) + * @param size number of bytes + * @param buf raw 8bit data + * @param own set to true if the buffer owns the data (copy, allocate/free) or false to reference previously allocated data. + */ inline void set_buffer(uint32_t size, uint8_t* buf, bool own) { if (_owns_buf) { free(_buf);