From b2e3df9fdad6046be5be0c6fdfc7ddfc32aabebd Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 13 Aug 2018 08:57:22 -0400 Subject: [PATCH] actually add and position a beatbox processor to midi tracks --- libs/ardour/midi_track.cc | 4 ++++ libs/ardour/route.cc | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index b4f183f423..3a6c372bfc 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -40,6 +40,7 @@ #include "evoral/midi_util.h" #include "ardour/amp.h" +#include "ardour/beatbox.h" #include "ardour/beats_samples_converter.h" #include "ardour/buffer_set.h" #include "ardour/debug.h" @@ -110,6 +111,9 @@ MidiTrack::init () _disk_writer->DataRecorded.connect_same_thread (*this, boost::bind (&MidiTrack::data_recorded, this, _1)); + _beatbox.reset (new BeatBox (_session)); + add_processor (_beatbox, PostFader); + return 0; } diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 6026432380..49ba9757f7 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -52,6 +52,7 @@ #include "ardour/audio_track.h" #include "ardour/audio_port.h" #include "ardour/audioengine.h" +#include "ardour/beatbox.h" #include "ardour/boost_debug.h" #include "ardour/buffer.h" #include "ardour/buffer_set.h" @@ -3075,6 +3076,9 @@ Route::set_processor_state (const XMLNode& node, int version) assert (is_master ()); _volume->set_state (**niter, version); new_order.push_back (_volume); + } else if (prop->value() == "beatbox" && _beatbox) { + _beatbox->set_state (**niter, Stateful::current_state_version); + new_order.push_back (_beatbox); } else if (prop->value() == "meter") { _meter->set_state (**niter, version); new_order.push_back (_meter); @@ -5002,6 +5006,12 @@ Route::setup_invisible_processors () for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) { boost::shared_ptr auxsnd = boost::dynamic_pointer_cast ((*i)); + + /* XXX temporary hack while we decide on visibility */ + if (boost::dynamic_pointer_cast (*i)) { + continue; + } + if ((*i)->display_to_user ()) { new_processors.push_back (*i); } @@ -5111,6 +5121,14 @@ Route::setup_invisible_processors () trim = new_processors.begin(); } + /* BEATBOX (for MIDI) */ + + if (_beatbox) { + ProcessorList::iterator insert_pos = trim; + ++insert_pos; + new_processors.insert (insert_pos, _beatbox); + } + /* INTERNAL RETURN */ /* doing this here means that any monitor control will come after