diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-02-02 04:12:23 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-02-02 04:12:23 +0000 |
commit | af90dc2bae772cd63d6078e24fb5ead6832bb7eb (patch) | |
tree | 105e16bfa7f9a7bd2eab5bfdbf1e6fd3dc444d5f /libs/ardour | |
parent | e9a6d86b9b046374a9f0d669e97fe4249756fa9d (diff) |
add a way to create a new MIDI track with an instrument pre-selected
git-svn-id: svn://localhost/ardour2/branches/3.0@11421 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/session.h | 5 | ||||
-rw-r--r-- | libs/ardour/session.cc | 13 |
2 files changed, 16 insertions, 2 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 0bdec6a9af..973374ab32 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -113,6 +113,7 @@ class MidiTrack; class NamedSelection; class Playlist; class PluginInsert; +class PluginInfo; class Port; class PortInsert; class ProcessThread; @@ -455,7 +456,9 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi ); std::list<boost::shared_ptr<MidiTrack> > new_midi_track ( - TrackMode mode = Normal, RouteGroup* route_group = 0, uint32_t how_many = 1, std::string name_template = "" + boost::shared_ptr<PluginInfo> instrument = boost::shared_ptr<PluginInfo>(), + TrackMode mode = Normal, + RouteGroup* route_group = 0, uint32_t how_many = 1, std::string name_template = "" ); void remove_route (boost::shared_ptr<Route>); diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index fd8e72e22f..10039a7ff4 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -81,6 +81,7 @@ #include "ardour/named_selection.h" #include "ardour/process_thread.h" #include "ardour/playlist.h" +#include "ardour/plugin.h" #include "ardour/plugin_insert.h" #include "ardour/port_insert.h" #include "ardour/processor.h" @@ -1567,9 +1568,10 @@ Session::count_existing_track_channels (ChanCount& in, ChanCount& out) /** Caller must not hold process lock * @param name_template string to use for the start of the name, or "" to use "MIDI". + * @param instrument plugin info for the instrument to insert pre-fader, if any */ list<boost::shared_ptr<MidiTrack> > -Session::new_midi_track (TrackMode mode, RouteGroup* route_group, uint32_t how_many, string name_template) +Session::new_midi_track (boost::shared_ptr<PluginInfo> instrument, TrackMode mode, RouteGroup* route_group, uint32_t how_many, string name_template) { char track_name[32]; uint32_t track_id = 0; @@ -1645,6 +1647,15 @@ Session::new_midi_track (TrackMode mode, RouteGroup* route_group, uint32_t how_m failed: if (!new_routes.empty()) { add_routes (new_routes, true, true); + + if (instrument) { + for (RouteList::iterator r = new_routes.begin(); r != new_routes.end(); ++r) { + PluginPtr plugin = instrument->load (*this); + boost::shared_ptr<Processor> p (new PluginInsert (*this, plugin)); + (*r)->add_processor (p, PreFader); + + } + } } return ret; |