diff --git a/libs/ardour/ardour/delivery.h b/libs/ardour/ardour/delivery.h index 7e1c83920c..9e9dc62782 100644 --- a/libs/ardour/ardour/delivery.h +++ b/libs/ardour/ardour/delivery.h @@ -182,6 +182,8 @@ private: bool _no_panner_reset; std::atomic _midi_mute_mask; MidiBuffer _midi_mute_buffer; + + void resize_midi_mute_buffer (); }; diff --git a/libs/ardour/delivery.cc b/libs/ardour/delivery.cc index 39a1564fe3..f5397fd236 100644 --- a/libs/ardour/delivery.cc +++ b/libs/ardour/delivery.cc @@ -75,11 +75,7 @@ Delivery::Delivery (Session& s, std::shared_ptr io, std::shared_ptrchanged.connect_same_thread (*this, std::bind (&Delivery::output_changed, this, _1, _2)); @@ -107,10 +103,7 @@ Delivery::Delivery (Session& s, std::shared_ptr pannable, std::shared_ } _display_to_user = false; - const size_t stamp_size = sizeof(samplepos_t); - const size_t etype_size = sizeof(Evoral::EventType); - const size_t mmb_size = 16 * (stamp_size + etype_size + 3); - _midi_mute_buffer.resize (mmb_size); + resize_midi_mute_buffer (); if (_output) { _output->changed.connect_same_thread (*this, std::bind (&Delivery::output_changed, this, _1, _2)); @@ -133,6 +126,17 @@ Delivery::~Delivery() delete _output_buffers; } +void +Delivery::resize_midi_mute_buffer () +{ + const size_t stamp_size = sizeof (samplepos_t); + const size_t etype_size = sizeof (Evoral::EventType); + + /* space for two 3-byte messages per channel */ + const size_t mmb_size = 16 * (stamp_size + etype_size + 6); + _midi_mute_buffer.resize (mmb_size); +} + std::string Delivery::display_name () const {