summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-02-02 04:12:23 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-02-02 04:12:23 +0000
commitaf90dc2bae772cd63d6078e24fb5ead6832bb7eb (patch)
tree105e16bfa7f9a7bd2eab5bfdbf1e6fd3dc444d5f /libs/ardour
parente9a6d86b9b046374a9f0d669e97fe4249756fa9d (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.h5
-rw-r--r--libs/ardour/session.cc13
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;