summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-06-22 01:45:16 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-06-22 01:45:16 +0000
commitd70429a066dfd33cca0b6f64be7014649a9910ca (patch)
treeb5a1df98535bd30d2485778c699f6d7dd758b649 /libs/ardour
parent774e55bcc03139089105a20809d9557d38452486 (diff)
provide an easier way to add mixed (audio+MIDI) tracks to a session, to facilitate the use of plugins like Reaktor which accept both audio & MIDI data. there's probably still a paradigm shift waiting to happen here but its likely post-3.0.
git-svn-id: svn://localhost/ardour2/branches/3.0@12816 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/session.h1
-rw-r--r--libs/ardour/session.cc13
2 files changed, 9 insertions, 5 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index e75c7aa206..204474d611 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -454,6 +454,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
);
std::list<boost::shared_ptr<MidiTrack> > new_midi_track (
+ const ChanCount& input, const ChanCount& output,
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 = ""
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 5758130092..be84ed4e53 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -1595,7 +1595,8 @@ Session::count_existing_track_channels (ChanCount& in, ChanCount& out)
* @param instrument plugin info for the instrument to insert pre-fader, if any
*/
list<boost::shared_ptr<MidiTrack> >
-Session::new_midi_track (boost::shared_ptr<PluginInfo> instrument, TrackMode mode, RouteGroup* route_group, uint32_t how_many, string name_template)
+Session::new_midi_track (const ChanCount& input, const ChanCount& output, 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;
@@ -1604,6 +1605,8 @@ Session::new_midi_track (boost::shared_ptr<PluginInfo> instrument, TrackMode mod
list<boost::shared_ptr<MidiTrack> > ret;
uint32_t control_id;
+ cerr << "Adding MIDI track with in = " << input << " out = " << output << endl;
+
control_id = next_control_id ();
bool const use_number = (how_many != 1) || name_template.empty () || name_template == _("MIDI");
@@ -1630,13 +1633,13 @@ Session::new_midi_track (boost::shared_ptr<PluginInfo> instrument, TrackMode mod
#endif
{
Glib::Mutex::Lock lm (AudioEngine::instance()->process_lock ());
- if (track->input()->ensure_io (ChanCount(DataType::MIDI, 1), false, this)) {
- error << "cannot configure 1 in/1 out configuration for new midi track" << endmsg;
+ if (track->input()->ensure_io (input, false, this)) {
+ error << "cannot configure " << input << " out configuration for new midi track" << endmsg;
goto failed;
}
- if (track->output()->ensure_io (ChanCount(DataType::MIDI, 1), false, this)) {
- error << "cannot configure 1 in/1 out configuration for new midi track" << endmsg;
+ if (track->output()->ensure_io (output, false, this)) {
+ error << "cannot configure " << output << " out configuration for new midi track" << endmsg;
goto failed;
}
}